{
  "contractName": "BaseActor",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "_assetRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IDataRegistry",
          "name": "_dataRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum ContractType",
          "name": "contractType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "counterparty",
          "type": "address"
        }
      ],
      "name": "InitializedAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "payoff",
          "type": "int256"
        }
      ],
      "name": "ProgressedAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "statusMessage",
          "type": "bytes32"
        }
      ],
      "name": "Status",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "assetRegistry",
      "outputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dataRegistry",
      "outputs": [
        {
          "internalType": "contract IDataRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "object",
          "type": "bytes32"
        }
      ],
      "name": "decodeCollateralObject",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "collateralToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "collateralAmount",
          "type": "uint256"
        }
      ],
      "name": "encodeCollateralAsObject",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "progress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "progressWith",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"_assetRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IDataRegistry\",\"name\":\"_dataRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"}],\"name\":\"InitializedAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"payoff\",\"type\":\"int256\"}],\"name\":\"ProgressedAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"statusMessage\",\"type\":\"bytes32\"}],\"name\":\"Status\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"assetRegistry\",\"outputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dataRegistry\",\"outputs\":[{\"internalType\":\"contract IDataRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"}],\"name\":\"decodeCollateralObject\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"decodeEvent\",\"outputs\":[{\"internalType\":\"enum EventType\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"}],\"name\":\"encodeCollateralAsObject\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"}],\"name\":\"encodeEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"progress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"progressWith\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftCalcTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftEventTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"progress(bytes32)\":{\"details\":\"Emits ProgressedAsset if the state of the asset was updated.\",\"params\":{\"assetId\":\"id of the asset\"}},\"progressWith(bytes32,bytes32)\":{\"details\":\"Emits ProgressedAsset if the state of the asset was updated.\",\"params\":{\"_event\":\"the unscheduled event\",\"assetId\":\"id of the asset\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"BaseActor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getEpochOffset(uint8)\":{\"notice\":\"Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp\"},\"progress(bytes32)\":{\"notice\":\"Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from either a prev. pending event, an event generated based on the current state of an underlying asset or the assets schedule.\"},\"progressWith(bytes32,bytes32)\":{\"notice\":\"Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from a provided (unscheduled) event Reverts if the provided event violates the order of events.\"},\"shiftCalcTime(uint256,uint8,uint8,uint256)\":{\"notice\":\"Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\"}},\"notice\":\"As the centerpiece of the ACTUS Protocol it is responsible for managing the lifecycle of assets registered through the AssetRegistry. It acts as the executive of AP by initializing the state of the asset and by processing the assets schedule as specified in the TemplateRegistry. It derives the next state and the current outstanding payoff of the asset by submitting the last finalized state to the corresponding ACTUS Engine. The AssetActor stores the next state in the AssetRegistry, depending on if it is able to settle the current outstanding payoff on behalf of the obligor.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol\":\"BaseActor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol\":{\"keccak256\":\"0x92a8ff9c2c11b86fec0bc0ca7969bdf7860bbc5c4724522f9c55f06dc82d1c56\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://636bf06c13797d2217fa00ac597d8f22772645300e62b88cbefa341055bc33a0\",\"dweb:/ipfs/QmfNTGqmdXWQb1uZBggzURfDR5fzMSGGJqEk8PEq5JCSQ7\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/IAssetActor.sol\":{\"keccak256\":\"0xe7607bac7335711a3aec25570695955cec318f24285291e1fda899389680ff92\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b26cc5b3081d8187958b3fc9b06aa6dfa46b5bea39f2c74f918a1e80263e4fc1\",\"dweb:/ipfs/QmSVLpWnLAjCMoThwi88ACGC8FnUMhiaw1zmnuDBGycTJH\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/IAccessControl.sol\":{\"keccak256\":\"0xbbe1aada0583637e5ae8b0a09ae59d629c1da70bde5a3f291f5f0ed42440d091\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36ab01d00a9ebd59822247cdc7bee3c70af062e2c9408e8f80e1656fc9d2761c\",\"dweb:/ipfs/QmSQzma4M2TDZup2dERJi368F8z9UQQ1zyUsq8e41hgg2F\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol\":{\"keccak256\":\"0xe5b75a0d1ff75775c43bdd46fb55d0f28800b311a48f7064acda7d35036bf738\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://652d2218a7190f85e00372a5ade97895fc303b909f3b63398dbcfabf634adda9\",\"dweb:/ipfs/QmVV4Su9V2K4mYbquft5rqv7SSyR95RcHgU4E2iAceKW1j\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol\":{\"keccak256\":\"0x62682585e8feaa25478d9aebe2f43861e36d67604adfd2dc23da8260a2f5728f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2ecdf3ac27c4425fee720cb2a744304678cac563d89cb21e43f8302a4864f013\",\"dweb:/ipfs/QmSL8qM6bytA7eN1cuBbBy3B5rNvmyALGExeGXUApTeA5N\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/IOwnershipRegistry.sol\":{\"keccak256\":\"0x6e7d79031d9ab6d8366e767e96bbef6282cd9727956b0f6a70b70ba57799afc7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d2e1e72ffc43ce52bb06eb5c5fa61d9dc14d40c33ac3035e5d881e0365aa722\",\"dweb:/ipfs/QmaQ1SqtsZtPHjtdSbGTwSJvRPu36d7S4ijyfUMYcto5uJ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol\":{\"keccak256\":\"0xe7e24ae32f711c7b4b60d1160cb085b4ba047ff07ccea2df3b4bf120c2385ed6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea4f8bbb0a60f0b9484307c3ce880005e1d4e39c42fd07ca16dc263001584cdb\",\"dweb:/ipfs/Qmdo1tuJ93asEMGq74g38vxfRMmoxXogZZczHjuef2Mx8R\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol\":{\"keccak256\":\"0x1008f735ba366f9a638199d8ec4fa31b192c8745491527278d97717426d6d609\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://decc19c372fbefee7c369678114861def1c748748154966e2ee5e11e690b9039\",\"dweb:/ipfs/QmXjZhoNak7uUmYZMj7sAdijzsqLpDoh6T2bYcRDVgX6z6\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol\":{\"keccak256\":\"0x62947ddd2743f2852e53dc10c9ce4a326e764e0bbffd92df216fcb32a0b0e3cd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b90268d7fb6e7d133b5e9d008be62fe55d19930088ac547b15d31dcb8ab9ecd\",\"dweb:/ipfs/QmZGE66r4ML3msBMCtDbhsdVN3RxmDvnCMDkTn9mMfouqN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol\":{\"keccak256\":\"0x4482adab804008a2774b11036cc9ff6f42aa7f248d6b8ca922082bf090a736e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e774c979286649c16d92eb4672c30c06fcbe7ddc053eee70088c4b28fc27e48c\",\"dweb:/ipfs/QmXqfezUnKVaKzA7Qs9BFC9yRKFTMwwxa778ofikE2hC1H\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistryStorage.sol\":{\"keccak256\":\"0xb33c89925a9e7c267d96d1461fce5839c6cef7f0365bf62a507a839b9cd925e7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7ea1957775722da928f53d4263162ebb94ffb5148d6e75dd815a2906a62e1e46\",\"dweb:/ipfs/QmXTRFKAC24PR9pqfHW2W73jsHaFqXdjjahqPJjKpZSLRk\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol\":{\"keccak256\":\"0x303e7925666252d8394929acfd8d32013b2225b202bb2fb873a4b9a257d324db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://982d93073ffd66715b02953f989744ac3acc9556c9b41cf522914ec0e552b7b0\",\"dweb:/ipfs/QmdNoYVj3yQfkWGXNcueKmQgDs6kVyPvNzGduJvQscxAoR\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol\":{\"keccak256\":\"0xb67309595d06a957324467896ed9ece5db6c064a40733528d2405593d083f358\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a77e96b548901c4ee87943de5a7093d178bffe1daa72b6e303ddc1fac93f5173\",\"dweb:/ipfs/QmctKP5Hp7B4YtzzC5q3cRJJiiPS4a5US6vpHDb94paaFT\"]},\"@atpar/actus-solidity/contracts/Core/SignedMath.sol\":{\"keccak256\":\"0x179745be164f4540d848a50eeb8aea4ec3a0ddabc50f4c122c41ec0463e849c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e1088b178902de60c611c2dffd2c8943cc7b68988c9083936b760864775db7da\",\"dweb:/ipfs/QmV9XYTU6a8nPzoJv9FjRV4Z2rfbymGGARmzka57ydD1FG\"]},\"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"openzeppelin-solidity/contracts/access/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\n\nimport \"@atpar/actus-solidity/contracts/Core/SignedMath.sol\";\nimport \"@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol\";\nimport \"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\";\n\nimport \"../SharedTypes.sol\";\nimport \"../Conversions.sol\";\nimport \"../AssetRegistry/IAssetRegistry.sol\";\nimport \"../DataRegistry/IDataRegistry.sol\";\nimport \"./IAssetActor.sol\";\n\n\n/**\n * @title BaseActor\n * @notice As the centerpiece of the ACTUS Protocol it is responsible for managing the\n * lifecycle of assets registered through the AssetRegistry. It acts as the executive of AP\n * by initializing the state of the asset and by processing the assets schedule as specified\n * in the TemplateRegistry. It derives the next state and the current outstanding payoff of\n * the asset by submitting the last finalized state to the corresponding ACTUS Engine.\n * The AssetActor stores the next state in the AssetRegistry, depending on if it is able\n * to settle the current outstanding payoff on behalf of the obligor.\n */\nabstract contract BaseActor is Conversions, EventUtils, BusinessDayConventions, IAssetActor, Ownable {\n\n    using SignedMath for int;\n\n    event InitializedAsset(bytes32 indexed assetId, ContractType contractType, address creator, address counterparty);\n    event ProgressedAsset(bytes32 indexed assetId, EventType eventType, uint256 scheduleTime, int256 payoff);\n    event Status(bytes32 indexed assetId, bytes32 statusMessage);\n\n    IAssetRegistry public assetRegistry;\n    IDataRegistry public dataRegistry;\n\n\n    constructor (\n        IAssetRegistry _assetRegistry,\n        IDataRegistry _dataRegistry\n    )\n        public\n    {\n        assetRegistry = _assetRegistry;\n        dataRegistry = _dataRegistry;\n    }\n\n    /**\n     * @notice Proceeds with the next state of the asset based on the terms, the last state, market object data\n     * and the settlement status of current obligation, derived from either a prev. pending event, an event\n     * generated based on the current state of an underlying asset or the assets schedule.\n     * @dev Emits ProgressedAsset if the state of the asset was updated.\n     * @param assetId id of the asset\n     */\n    function progress(bytes32 assetId) external override {\n        // revert if the asset is not registered in the AssetRegistry\n        require(\n            assetRegistry.isRegistered(assetId),\n            \"BaseActor.progress: ASSET_DOES_NOT_EXIST\"\n        );\n\n        // enforce order:\n        // - 1. pending event has to be processed\n        // - 2. an event which was generated based on the state of the underlying asset\n        // - 3. the next event in the schedule\n        bytes32 _event = assetRegistry.popPendingEvent(assetId);\n        if (_event == bytes32(0)) _event = assetRegistry.getNextUnderlyingEvent(assetId);\n        if (_event == bytes32(0)) _event = assetRegistry.popNextScheduledEvent(assetId);\n\n        // e.g. if all events in the schedule are processed\n        require(\n            _event != bytes32(0),\n            \"BaseActor.progress: NO_NEXT_EVENT\"\n        );\n\n        processEvent(assetId, _event);\n    }\n\n    /**\n     * @notice Proceeds with the next state of the asset based on the terms, the last state, market object data\n     * and the settlement status of current obligation, derived from a provided (unscheduled) event\n     * Reverts if the provided event violates the order of events.\n     * @dev Emits ProgressedAsset if the state of the asset was updated.\n     * @param assetId id of the asset\n     * @param _event the unscheduled event\n     */\n    function progressWith(bytes32 assetId, bytes32 _event) external override {\n        // revert if msg.sender is not authorized to update the asset\n        require(\n            assetRegistry.hasRootAccess(assetId, msg.sender),\n            \"BaseActor.progressWith: UNAUTHORIZED_SENDER\"\n        );\n\n        // enforce order:\n        // - 1. pending event has to be processed\n        // - 2. an event which was generated based on the state of the underlying asset\n        require(\n            assetRegistry.getPendingEvent(assetId) == bytes32(0),\n            \"BaseActor.progressWith: FOUND_PENDING_EVENT\"\n        );\n        require(\n            assetRegistry.getNextUnderlyingEvent(assetId) == bytes32(0),\n            \"BaseActor.progressWith: FOUND_UNDERLYING_EVENT\"\n        );\n\n        // - 3. the scheduled event takes priority if its schedule time is early or equal to the provided event\n        (, uint256 scheduledEventScheduleTime) = decodeEvent(assetRegistry.getNextScheduledEvent(assetId));\n        (, uint256 providedEventScheduleTime) = decodeEvent(_event);\n        require(\n            scheduledEventScheduleTime == 0 || (providedEventScheduleTime < scheduledEventScheduleTime),\n            \"BaseActor.progressWith: FOUND_EARLIER_EVENT\"\n        );\n\n        processEvent(assetId, _event);\n    }\n\n    /**\n     * @notice Return true if event was settled\n     */\n    function processEvent(bytes32 assetId, bytes32 _event) internal {\n        State memory state = assetRegistry.getState(assetId);\n\n        // block progression if asset is has defaulted, terminated or reached maturity\n        require(\n            state.contractPerformance == ContractPerformance.PF\n            || state.contractPerformance == ContractPerformance.DL\n            || state.contractPerformance == ContractPerformance.DQ,\n            \"BaseActor.processEvent: ASSET_REACHED_FINAL_STATE\"\n        );\n\n        // get finalized state if asset is not performant\n        if (state.contractPerformance != ContractPerformance.PF) {\n            state = assetRegistry.getFinalizedState(assetId);\n        }\n\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        // revert if the event time of the next event is in the future\n        // compute event time by applying BDC to schedule time\n        require(\n            // solium-disable-next-line\n            shiftEventTime(\n                scheduleTime,\n                BusinessDayConvention(assetRegistry.getEnumValueForTermsAttribute(assetId, \"businessDayConvention\")),\n                Calendar(assetRegistry.getEnumValueForTermsAttribute(assetId, \"calendar\")),\n                assetRegistry.getUIntValueForTermsAttribute(assetId, \"maturityDate\")\n            ) <= block.timestamp,\n            \"ANNActor.processEvent: NEXT_EVENT_NOT_YET_SCHEDULED\"\n        );\n\n        // get external data for the next event\n        // compute payoff and the next state by applying the event to the current state\n        (State memory nextState, int256 payoff) = computeStateAndPayoffForEvent(assetId, state, _event);\n\n        // try to settle payoff of event\n        bool settledPayoff = settlePayoffForEvent(assetId, _event, payoff);\n\n        if (settledPayoff == false) {\n            // if the obligation can't be fulfilled and the performance changed from performant to DL, DQ or DF,\n            // store the last performant state of the asset\n            // (if the obligation is later fulfilled before the asset reaches default,\n            // the last performant state is used to derive subsequent states of the asset)\n            if (state.contractPerformance == ContractPerformance.PF) {\n                assetRegistry.setFinalizedState(assetId, state);\n            }\n\n            // store event as pending event for future settlement\n            assetRegistry.pushPendingEvent(assetId, _event);\n\n            // create CreditEvent\n            bytes32 ceEvent = encodeEvent(EventType.CE, scheduleTime);\n\n            // derive the actual state of the asset by applying the CreditEvent (updates performance of asset)\n            (nextState, ) = computeStateAndPayoffForEvent(assetId, nextState, ceEvent);\n        }\n\n        // store the resulting state\n        assetRegistry.setState(assetId, nextState);\n\n        // mark event as settled\n        if (settledPayoff == true) {\n            assetRegistry.markEventAsSettled(assetId, _event, payoff);\n        }\n\n        emit ProgressedAsset(\n            assetId,\n            // if settlement failed a CreditEvent got processed instead\n            (settledPayoff == true) ? eventType : EventType.CE,\n            scheduleTime,\n            payoff\n        );\n    }\n\n    /**\n     * @notice Routes a payment to the designated beneficiary of the event obligation.\n     * @dev Checks if an owner of the specified cashflowId is set, if not it sends\n     * funds to the default beneficiary.\n     * @param assetId id of the asset which the payment relates to\n     * @param _event _event to settle the payoff for\n     * @param payoff payoff of the event\n     */\n    function settlePayoffForEvent(\n        bytes32 assetId,\n        bytes32 _event,\n        int256 payoff\n    )\n        internal\n        returns (bool)\n    {\n        require(\n            assetId != bytes32(0) && _event != bytes32(0),\n            \"BaseActor.settlePayoffForEvent: INVALID_FUNCTION_PARAMETERS\"\n        );\n\n        // return if there is no amount due\n        if (payoff == 0) return true;\n\n        // get the token address either from currency attribute or from the second contract reference\n        address token = assetRegistry.getAddressValueForTermsAttribute(assetId, \"currency\");\n        ContractReference memory contractReference_2 = assetRegistry.getContractReferenceValueForTermsAttribute(\n            assetId,\n            \"contractReference_2\"\n        );\n        if (contractReference_2.role == ContractReferenceRole.COVI) {\n            (token, ) = decodeCollateralObject(contractReference_2.object);\n        }\n\n        AssetOwnership memory ownership = assetRegistry.getOwnership(assetId);\n\n        // determine the payee and payer of the payment by checking the sign of the payoff\n        address payee;\n        address payer;\n        if (payoff > 0) {\n            // only allow for the obligor to settle the payment\n            payer = ownership.counterpartyObligor;\n            // use the default beneficiary if the there is no specific owner of the cashflow\n            if (payee == address(0)) {\n                payee = ownership.creatorBeneficiary;\n            }\n        } else {\n            // only allow for the obligor to settle the payment\n            payer = ownership.creatorObligor;\n            // use the default beneficiary if the there is no specific owner of the cashflow\n            if (payee == address(0)) {\n                payee = ownership.counterpartyBeneficiary;\n            }\n        }\n\n        // calculate the magnitude of the payoff\n        uint256 amount = (payoff > 0) ? uint256(payoff) : uint256(payoff * -1);\n\n        // check if allowance is set by the payer for the Asset Actor and that payer is able to cover payment\n        if (IERC20(token).allowance(payer, address(this)) < amount || IERC20(token).balanceOf(payer) < amount) {\n            emit Status(assetId, \"INSUFFICIENT_FUNDS\");\n            return false;\n        }\n\n        // try to transfer amount due from obligor to payee\n        return IERC20(token).transferFrom(payer, payee, amount);\n    }\n\n    function computeStateAndPayoffForEvent(bytes32 assetId, State memory state, bytes32 _event)\n        internal\n        view\n        virtual\n        returns (State memory, int256);\n\n    /**\n     * @notice Retrieves external data (such as market object data, block time, underlying asset state)\n     * used for evaluating the STF for a given event.\n     */\n    function getExternalDataForSTF(\n        bytes32 assetId,\n        EventType eventType,\n        uint256 timestamp\n    )\n        internal\n        view\n        returns (bytes32)\n    {\n        if (eventType == EventType.RR) {\n            // get rate from DataRegistry\n            (int256 resetRate, bool isSet) = dataRegistry.getDataPoint(\n                assetRegistry.getBytes32ValueForTermsAttribute(assetId, \"marketObjectCodeRateReset\"),\n                timestamp\n            );\n            if (isSet) return bytes32(resetRate);\n        } else if (eventType == EventType.CE) {\n            // get current timestamp\n            // solium-disable-next-line\n            return bytes32(block.timestamp);\n        } else if (eventType == EventType.XD) {\n            // get the remaining notionalPrincipal from the underlying\n            ContractReference memory contractReference_1 = assetRegistry.getContractReferenceValueForTermsAttribute(\n                assetId,\n                \"contractReference_1\"\n            );\n            if (contractReference_1.role == ContractReferenceRole.COVE) {\n                bytes32 underlyingAssetId = contractReference_1.object;\n                address underlyingRegistry = address(uint160(uint256(contractReference_1.object2)));\n                require(\n                    IAssetRegistry(underlyingRegistry).isRegistered(underlyingAssetId) == true,\n                    \"BaseActor.getExternalDataForSTF: ASSET_DOES_NOT_EXIST\"\n                );\n                return bytes32(\n                    IAssetRegistry(underlyingRegistry).getIntValueForStateAttribute(underlyingAssetId, \"notionalPrincipal\")\n                );\n            }\n            ContractReference memory contractReference_2 = assetRegistry.getContractReferenceValueForTermsAttribute(\n                assetId,\n                \"contractReference_2\"\n            );\n            if (\n                contractReference_2._type == ContractReferenceType.MOC\n                && contractReference_2.role == ContractReferenceRole.UDL\n            ) {\n                (int256 quantity, bool isSet) = dataRegistry.getDataPoint(\n                    contractReference_2.object,\n                    timestamp\n                );\n                if (isSet) return bytes32(quantity);\n            }\n        } else if (eventType == EventType.RFD) {\n            ContractReference memory contractReference_1 = assetRegistry.getContractReferenceValueForTermsAttribute(\n                assetId,\n                \"contractReference_1\"\n            );\n            if (\n                contractReference_1._type == ContractReferenceType.MOC\n                && contractReference_1.role == ContractReferenceRole.UDL\n            ) {\n                (int256 redemptionAmountScheduleTime, bool isSetScheduleTime) = dataRegistry.getDataPoint(\n                    contractReference_1.object,\n                    timestamp\n                );\n                (int256 redemptionAmountAnchorDate, bool isSetAnchorDate) = dataRegistry.getDataPoint(\n                    contractReference_1.object,\n                    assetRegistry.getUIntValueForTermsAttribute(assetId, \"issueDate\")\n                );\n                if (isSetScheduleTime && isSetAnchorDate) {\n                    return bytes32(redemptionAmountScheduleTime.floatDiv(redemptionAmountAnchorDate));\n                }\n            }\n            return bytes32(0);\n        }\n\n        return bytes32(0);\n    }\n\n    /**\n     * @notice Retrieves external data (such as market object data)\n     * used for evaluating the POF for a given event.\n     */\n    function getExternalDataForPOF(\n        bytes32 assetId,\n        EventType /* eventType */,\n        uint256 timestamp\n    )\n        internal\n        view\n        returns (bytes32)\n    {\n        address currency = assetRegistry.getAddressValueForTermsAttribute(assetId, \"currency\");\n        address settlementCurrency = assetRegistry.getAddressValueForTermsAttribute(assetId, \"settlementCurrency\");\n\n        if (currency != settlementCurrency) {\n            // get FX rate\n            (int256 fxRate, bool isSet) = dataRegistry.getDataPoint(\n                keccak256(abi.encode(currency, settlementCurrency)),\n                timestamp\n            );\n            if (isSet) return bytes32(fxRate);\n        }\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
    "exportedSymbols": {
      "BaseActor": [
        3851
      ]
    },
    "id": 3852,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2972,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:4"
      },
      {
        "id": 2973,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:4"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/access/Ownable.sol",
        "id": 2974,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 38486,
        "src": "101:60:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 2975,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 39446,
        "src": "162:64:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/SignedMath.sol",
        "file": "@atpar/actus-solidity/contracts/Core/SignedMath.sol",
        "id": 2976,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 24231,
        "src": "228:61:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
        "id": 2977,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 23278,
        "src": "290:85:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "id": 2978,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 24759,
        "src": "376:67:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../SharedTypes.sol",
        "id": 2979,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 7865,
        "src": "445:28:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol",
        "file": "../Conversions.sol",
        "id": 2980,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 7056,
        "src": "474:28:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol",
        "file": "../AssetRegistry/IAssetRegistry.sol",
        "id": 2981,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 4501,
        "src": "503:45:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol",
        "file": "../DataRegistry/IDataRegistry.sol",
        "id": 2982,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 7767,
        "src": "549:43:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/IAssetActor.sol",
        "file": "./IAssetActor.sol",
        "id": 2983,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 3869,
        "src": "593:27:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2985,
              "name": "Conversions",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7055,
              "src": "1292:11:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Conversions_$7055",
                "typeString": "contract Conversions"
              }
            },
            "id": 2986,
            "nodeType": "InheritanceSpecifier",
            "src": "1292:11:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2987,
              "name": "EventUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24758,
              "src": "1305:10:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventUtils_$24758",
                "typeString": "contract EventUtils"
              }
            },
            "id": 2988,
            "nodeType": "InheritanceSpecifier",
            "src": "1305:10:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2989,
              "name": "BusinessDayConventions",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 23277,
              "src": "1317:22:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BusinessDayConventions_$23277",
                "typeString": "contract BusinessDayConventions"
              }
            },
            "id": 2990,
            "nodeType": "InheritanceSpecifier",
            "src": "1317:22:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2991,
              "name": "IAssetActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3868,
              "src": "1341:11:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAssetActor_$3868",
                "typeString": "contract IAssetActor"
              }
            },
            "id": 2992,
            "nodeType": "InheritanceSpecifier",
            "src": "1341:11:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2993,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38485,
              "src": "1354:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$38485",
                "typeString": "contract Ownable"
              }
            },
            "id": 2994,
            "nodeType": "InheritanceSpecifier",
            "src": "1354:7:4"
          }
        ],
        "contractDependencies": [
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 2984,
          "nodeType": "StructuredDocumentation",
          "src": "623:637:4",
          "text": " @title BaseActor\n @notice As the centerpiece of the ACTUS Protocol it is responsible for managing the\n lifecycle of assets registered through the AssetRegistry. It acts as the executive of AP\n by initializing the state of the asset and by processing the assets schedule as specified\n in the TemplateRegistry. It derives the next state and the current outstanding payoff of\n the asset by submitting the last finalized state to the corresponding ACTUS Engine.\n The AssetActor stores the next state in the AssetRegistry, depending on if it is able\n to settle the current outstanding payoff on behalf of the obligor."
        },
        "fullyImplemented": false,
        "id": 3851,
        "linearizedBaseContracts": [
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "BaseActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2997,
            "libraryName": {
              "contractScope": null,
              "id": 2995,
              "name": "SignedMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24230,
              "src": "1375:10:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignedMath_$24230",
                "typeString": "library SignedMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1369:25:4",
            "typeName": {
              "id": 2996,
              "name": "int",
              "nodeType": "ElementaryTypeName",
              "src": "1390:3:4",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3007,
            "name": "InitializedAsset",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2999,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3007,
                  "src": "1423:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2998,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1423:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3001,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "contractType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3007,
                  "src": "1448:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ContractType_$22559",
                    "typeString": "enum ContractType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3000,
                    "name": "ContractType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22559,
                    "src": "1448:12:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3003,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3007,
                  "src": "1475:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1475:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3005,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "counterparty",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3007,
                  "src": "1492:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3004,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1492:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1422:91:4"
            },
            "src": "1400:114:4"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3017,
            "name": "ProgressedAsset",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3016,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3009,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3017,
                  "src": "1541:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3008,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1541:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3011,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3017,
                  "src": "1566:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3010,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "1566:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3013,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3017,
                  "src": "1587:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3012,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1587:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3015,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "payoff",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3017,
                  "src": "1609:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3014,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1609:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1540:83:4"
            },
            "src": "1519:105:4"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3023,
            "name": "Status",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3019,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3023,
                  "src": "1642:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3018,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1642:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3021,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "statusMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3023,
                  "src": "1667:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3020,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1667:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1641:48:4"
            },
            "src": "1629:61:4"
          },
          {
            "constant": false,
            "functionSelector": "979d7e86",
            "id": 3025,
            "mutability": "mutable",
            "name": "assetRegistry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3851,
            "src": "1696:35:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
              "typeString": "contract IAssetRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 3024,
              "name": "IAssetRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4500,
              "src": "1696:14:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                "typeString": "contract IAssetRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a39c1d6b",
            "id": 3027,
            "mutability": "mutable",
            "name": "dataRegistry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3851,
            "src": "1737:33:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IDataRegistry_$7766",
              "typeString": "contract IDataRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 3026,
              "name": "IDataRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7766,
              "src": "1737:13:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                "typeString": "contract IDataRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3042,
              "nodeType": "Block",
              "src": "1892:85:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3034,
                      "name": "assetRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3025,
                      "src": "1902:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                        "typeString": "contract IAssetRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3035,
                      "name": "_assetRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3029,
                      "src": "1918:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                        "typeString": "contract IAssetRegistry"
                      }
                    },
                    "src": "1902:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "id": 3037,
                  "nodeType": "ExpressionStatement",
                  "src": "1902:30:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3038,
                      "name": "dataRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3027,
                      "src": "1942:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                        "typeString": "contract IDataRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3039,
                      "name": "_dataRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3031,
                      "src": "1957:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                        "typeString": "contract IDataRegistry"
                      }
                    },
                    "src": "1942:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "id": 3041,
                  "nodeType": "ExpressionStatement",
                  "src": "1942:28:4"
                }
              ]
            },
            "documentation": null,
            "id": 3043,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3029,
                  "mutability": "mutable",
                  "name": "_assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3043,
                  "src": "1800:29:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3028,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "1800:14:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3031,
                  "mutability": "mutable",
                  "name": "_dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3043,
                  "src": "1839:27:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3030,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "1839:13:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1790:82:4"
            },
            "returnParameters": {
              "id": 3033,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1892:0:4"
            },
            "scope": 3851,
            "src": "1778:199:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3860
            ],
            "body": {
              "id": 3108,
              "nodeType": "Block",
              "src": "2474:876:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3053,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3046,
                            "src": "2602:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3051,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "2575:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isRegistered",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4510,
                          "src": "2575:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view external returns (bool)"
                          }
                        },
                        "id": 3054,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2575:35:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f67726573733a2041535345545f444f45535f4e4f545f4558495354",
                        "id": 3055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2624:42:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_850487ee2487499989a08ddb83042f44f28ca1be42b686bf91738315ce206b29",
                          "typeString": "literal_string \"BaseActor.progress: ASSET_DOES_NOT_EXIST\""
                        },
                        "value": "BaseActor.progress: ASSET_DOES_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_850487ee2487499989a08ddb83042f44f28ca1be42b686bf91738315ce206b29",
                          "typeString": "literal_string \"BaseActor.progress: ASSET_DOES_NOT_EXIST\""
                        }
                      ],
                      "id": 3050,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2554:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2554:122:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3057,
                  "nodeType": "ExpressionStatement",
                  "src": "2554:122:4"
                },
                {
                  "assignments": [
                    3059
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3059,
                      "mutability": "mutable",
                      "name": "_event",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3108,
                      "src": "2898:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3058,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2898:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3064,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3062,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3046,
                        "src": "2945:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3060,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "2915:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "popPendingEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4851,
                      "src": "2915:29:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) external returns (bytes32)"
                      }
                    },
                    "id": 3063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2915:38:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2898:55:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3065,
                      "name": "_event",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3059,
                      "src": "2967:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2985:1:4",
                          "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": 3067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2977:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 3066,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2977:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 3069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2977:10:4",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2967:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3078,
                  "nodeType": "IfStatement",
                  "src": "2963:80:4",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 3071,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "2989:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3074,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3046,
                            "src": "3035:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3072,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "2998:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getNextUnderlyingEvent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4858,
                          "src": "2998:36:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32) view external returns (bytes32)"
                          }
                        },
                        "id": 3075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2998:45:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "2989:54:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3077,
                    "nodeType": "ExpressionStatement",
                    "src": "2989:54:4"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3079,
                      "name": "_event",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3059,
                      "src": "3057:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3075:1:4",
                          "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": 3081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3067:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 3080,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3067:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 3083,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3067:10:4",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3057:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3092,
                  "nodeType": "IfStatement",
                  "src": "3053:79:4",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 3085,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "3079:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3088,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3046,
                            "src": "3124:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3086,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "3088:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "popNextScheduledEvent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4903,
                          "src": "3088:35:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32) external returns (bytes32)"
                          }
                        },
                        "id": 3089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3088:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "3079:53:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3091,
                    "nodeType": "ExpressionStatement",
                    "src": "3079:53:4"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3094,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3059,
                          "src": "3224:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3242:1:4",
                              "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": 3096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3234:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 3095,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3234:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3234:10:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3224:20:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e54",
                        "id": 3100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3258:35:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_30c587f3e991161696dc17e37bfdd6528f5c0dcd4fc1dcb000389f4eb90ec1c1",
                          "typeString": "literal_string \"BaseActor.progress: NO_NEXT_EVENT\""
                        },
                        "value": "BaseActor.progress: NO_NEXT_EVENT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_30c587f3e991161696dc17e37bfdd6528f5c0dcd4fc1dcb000389f4eb90ec1c1",
                          "typeString": "literal_string \"BaseActor.progress: NO_NEXT_EVENT\""
                        }
                      ],
                      "id": 3093,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3203:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3203:100:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3102,
                  "nodeType": "ExpressionStatement",
                  "src": "3203:100:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3104,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3046,
                        "src": "3327:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3105,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "3336:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3103,
                      "name": "processEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3370,
                      "src": "3314:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 3106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3314:29:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3107,
                  "nodeType": "ExpressionStatement",
                  "src": "3314:29:4"
                }
              ]
            },
            "documentation": {
              "id": 3044,
              "nodeType": "StructuredDocumentation",
              "src": "1983:433:4",
              "text": " @notice Proceeds with the next state of the asset based on the terms, the last state, market object data\n and the settlement status of current obligation, derived from either a prev. pending event, an event\n generated based on the current state of an underlying asset or the assets schedule.\n @dev Emits ProgressedAsset if the state of the asset was updated.\n @param assetId id of the asset"
            },
            "functionSelector": "7aebd2a8",
            "id": 3109,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "progress",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3048,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2465:8:4"
            },
            "parameters": {
              "id": 3047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3046,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3109,
                  "src": "2439:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2439:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2438:17:4"
            },
            "returnParameters": {
              "id": 3049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2474:0:4"
            },
            "scope": 3851,
            "src": "2421:929:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3867
            ],
            "body": {
              "id": 3186,
              "nodeType": "Block",
              "src": "3878:1225:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3121,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3112,
                            "src": "4007:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3122,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4016:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4016:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3119,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "3979:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasRootAccess",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4124,
                          "src": "3979:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) external returns (bool)"
                          }
                        },
                        "id": 3124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3979:48:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f6772657373576974683a20554e415554484f52495a45445f53454e444552",
                        "id": 3125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4041:45:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_75786b066d473aef0c697dbaaba723a6c48e88c9cae9c91554cc61bb24e83da7",
                          "typeString": "literal_string \"BaseActor.progressWith: UNAUTHORIZED_SENDER\""
                        },
                        "value": "BaseActor.progressWith: UNAUTHORIZED_SENDER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_75786b066d473aef0c697dbaaba723a6c48e88c9cae9c91554cc61bb24e83da7",
                          "typeString": "literal_string \"BaseActor.progressWith: UNAUTHORIZED_SENDER\""
                        }
                      ],
                      "id": 3118,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3958:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3958:138:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3127,
                  "nodeType": "ExpressionStatement",
                  "src": "3958:138:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3131,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3112,
                              "src": "4322:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3129,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3025,
                              "src": "4292:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 3130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPendingEvent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4837,
                            "src": "4292:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view external returns (bytes32)"
                            }
                          },
                          "id": 3132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4292:38:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4342:1:4",
                              "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": 3134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4334:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 3133,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4334:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4334:10:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4292:52:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f6772657373576974683a20464f554e445f50454e44494e475f4556454e54",
                        "id": 3138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4358:45:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3cb8984c750326e1fb159d5d5a86329f70cec4a29ae54dc2f6abde58e5f810d",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_PENDING_EVENT\""
                        },
                        "value": "BaseActor.progressWith: FOUND_PENDING_EVENT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3cb8984c750326e1fb159d5d5a86329f70cec4a29ae54dc2f6abde58e5f810d",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_PENDING_EVENT\""
                        }
                      ],
                      "id": 3128,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4271:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4271:142:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3140,
                  "nodeType": "ExpressionStatement",
                  "src": "4271:142:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3144,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3112,
                              "src": "4481:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3142,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3025,
                              "src": "4444:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 3143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getNextUnderlyingEvent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4858,
                            "src": "4444:36:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view external returns (bytes32)"
                            }
                          },
                          "id": 3145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4444:45:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4501:1:4",
                              "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": 3147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4493:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 3146,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4493:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4493:10:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4444:59:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f6772657373576974683a20464f554e445f554e4445524c59494e475f4556454e54",
                        "id": 3151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4517:48:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_66540f335c9545d9b8f80a59843945fec76dace16b4b536da5ba4936c03b5463",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_UNDERLYING_EVENT\""
                        },
                        "value": "BaseActor.progressWith: FOUND_UNDERLYING_EVENT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_66540f335c9545d9b8f80a59843945fec76dace16b4b536da5ba4936c03b5463",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_UNDERLYING_EVENT\""
                        }
                      ],
                      "id": 3141,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4423:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4423:152:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3153,
                  "nodeType": "ExpressionStatement",
                  "src": "4423:152:4"
                },
                {
                  "assignments": [
                    null,
                    3155
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 3155,
                      "mutability": "mutable",
                      "name": "scheduledEventScheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3186,
                      "src": "4701:34:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3154,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4701:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3162,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3159,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3112,
                            "src": "4787:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3157,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "4751:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getNextScheduledEvent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4896,
                          "src": "4751:35:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32) view external returns (bytes32)"
                          }
                        },
                        "id": 3160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4751:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3156,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "4739:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 3161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4739:57:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4698:98:4"
                },
                {
                  "assignments": [
                    null,
                    3164
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 3164,
                      "mutability": "mutable",
                      "name": "providedEventScheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3186,
                      "src": "4809:33:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3163,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4809:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3168,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3166,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3114,
                        "src": "4858:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3165,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "4846:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 3167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4846:19:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4806:59:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3170,
                            "name": "scheduledEventScheduleTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3155,
                            "src": "4896:26:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4926:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4896:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3173,
                                "name": "providedEventScheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3164,
                                "src": "4932:25:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3174,
                                "name": "scheduledEventScheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3155,
                                "src": "4960:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4932:54:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 3176,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4931:56:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4896:91:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f6772657373576974683a20464f554e445f4541524c4945525f4556454e54",
                        "id": 3178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5001:45:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_237a5abef4ba99e05fbec096231441993ca4691f545b6f3536b234a8640dfe17",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_EARLIER_EVENT\""
                        },
                        "value": "BaseActor.progressWith: FOUND_EARLIER_EVENT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_237a5abef4ba99e05fbec096231441993ca4691f545b6f3536b234a8640dfe17",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_EARLIER_EVENT\""
                        }
                      ],
                      "id": 3169,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4875:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4875:181:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3180,
                  "nodeType": "ExpressionStatement",
                  "src": "4875:181:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3182,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3112,
                        "src": "5080:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3183,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3114,
                        "src": "5089:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3181,
                      "name": "processEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3370,
                      "src": "5067:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 3184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5067:29:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3185,
                  "nodeType": "ExpressionStatement",
                  "src": "5067:29:4"
                }
              ]
            },
            "documentation": {
              "id": 3110,
              "nodeType": "StructuredDocumentation",
              "src": "3356:444:4",
              "text": " @notice Proceeds with the next state of the asset based on the terms, the last state, market object data\n and the settlement status of current obligation, derived from a provided (unscheduled) event\n Reverts if the provided event violates the order of events.\n @dev Emits ProgressedAsset if the state of the asset was updated.\n @param assetId id of the asset\n @param _event the unscheduled event"
            },
            "functionSelector": "6b6ba664",
            "id": 3187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "progressWith",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3116,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3869:8:4"
            },
            "parameters": {
              "id": 3115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3112,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3187,
                  "src": "3827:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3111,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3827:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3114,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3187,
                  "src": "3844:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3113,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3844:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3826:33:4"
            },
            "returnParameters": {
              "id": 3117,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3878:0:4"
            },
            "scope": 3851,
            "src": "3805:1298:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3369,
              "nodeType": "Block",
              "src": "5237:3208:4",
              "statements": [
                {
                  "assignments": [
                    3196
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3196,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "5247:18:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3195,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "5247:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3201,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3199,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "5291:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3197,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "5268:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3198,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5727,
                      "src": "5268:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct State memory)"
                      }
                    },
                    "id": 3200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5268:31:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5247:52:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "id": 3207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3203,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3196,
                                "src": "5418:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              "id": 3204,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractPerformance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22634,
                              "src": "5418:25:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3205,
                                "name": "ContractPerformance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22513,
                                "src": "5447:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                  "typeString": "type(enum ContractPerformance)"
                                }
                              },
                              "id": 3206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PF",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5447:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "src": "5418:51:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "id": 3212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3208,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3196,
                                "src": "5485:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              "id": 3209,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractPerformance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22634,
                              "src": "5485:25:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3210,
                                "name": "ContractPerformance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22513,
                                "src": "5514:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                  "typeString": "type(enum ContractPerformance)"
                                }
                              },
                              "id": 3211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "DL",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5514:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "src": "5485:51:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5418:118:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                            "typeString": "enum ContractPerformance"
                          },
                          "id": 3218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3214,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3196,
                              "src": "5552:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 3215,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractPerformance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22634,
                            "src": "5552:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3216,
                              "name": "ContractPerformance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22513,
                              "src": "5581:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                "typeString": "type(enum ContractPerformance)"
                              }
                            },
                            "id": 3217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "DQ",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5581:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            }
                          },
                          "src": "5552:51:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5418:185:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f636573734576656e743a2041535345545f524541434845445f46494e414c5f5354415445",
                        "id": 3220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5617:51:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f2d9d8890914b4e0343aeceb25ee6e12c8728517a70331fb07cf782f58af53d3",
                          "typeString": "literal_string \"BaseActor.processEvent: ASSET_REACHED_FINAL_STATE\""
                        },
                        "value": "BaseActor.processEvent: ASSET_REACHED_FINAL_STATE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f2d9d8890914b4e0343aeceb25ee6e12c8728517a70331fb07cf782f58af53d3",
                          "typeString": "literal_string \"BaseActor.processEvent: ASSET_REACHED_FINAL_STATE\""
                        }
                      ],
                      "id": 3202,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5397:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5397:281:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3222,
                  "nodeType": "ExpressionStatement",
                  "src": "5397:281:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    },
                    "id": 3227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3223,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3196,
                        "src": "5751:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 3224,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "5751:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3225,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "5780:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 3226,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5780:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "5751:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3236,
                  "nodeType": "IfStatement",
                  "src": "5747:130:4",
                  "trueBody": {
                    "id": 3235,
                    "nodeType": "Block",
                    "src": "5804:73:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3228,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3196,
                            "src": "5818:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3231,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3190,
                                "src": "5858:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3229,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "5826:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 3230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getFinalizedState",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5734,
                              "src": "5826:31:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                                "typeString": "function (bytes32) view external returns (struct State memory)"
                              }
                            },
                            "id": 3232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5826:40:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "src": "5818:48:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        "id": 3234,
                        "nodeType": "ExpressionStatement",
                        "src": "5818:48:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3238,
                    3240
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3238,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "5888:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3237,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "5888:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3240,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "5909:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3239,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5909:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3244,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3242,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3192,
                        "src": "5945:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3241,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "5933:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 3243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5933:19:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5887:65:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3247,
                              "name": "scheduleTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3240,
                              "src": "6190:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3251,
                                      "name": "assetId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3190,
                                      "src": "6286:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "627573696e657373446179436f6e76656e74696f6e",
                                      "id": 3252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6295:23:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                        "typeString": "literal_string \"businessDayConvention\""
                                      },
                                      "value": "businessDayConvention"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                        "typeString": "literal_string \"businessDayConvention\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3249,
                                      "name": "assetRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3025,
                                      "src": "6242:13:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                        "typeString": "contract IAssetRegistry"
                                      }
                                    },
                                    "id": 3250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getEnumValueForTermsAttribute",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6830,
                                    "src": "6242:43:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                      "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                                    }
                                  },
                                  "id": 3253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6242:77:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 3248,
                                "name": "BusinessDayConvention",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22503,
                                "src": "6220:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                  "typeString": "type(enum BusinessDayConvention)"
                                }
                              },
                              "id": 3254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6220:100:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3258,
                                      "name": "assetId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3190,
                                      "src": "6391:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "63616c656e646172",
                                      "id": 3259,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6400:10:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                        "typeString": "literal_string \"calendar\""
                                      },
                                      "value": "calendar"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                        "typeString": "literal_string \"calendar\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3256,
                                      "name": "assetRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3025,
                                      "src": "6347:13:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                        "typeString": "contract IAssetRegistry"
                                      }
                                    },
                                    "id": 3257,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getEnumValueForTermsAttribute",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6830,
                                    "src": "6347:43:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                      "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                                    }
                                  },
                                  "id": 3260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6347:64:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 3255,
                                "name": "Calendar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22506,
                                "src": "6338:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                                  "typeString": "type(enum Calendar)"
                                }
                              },
                              "id": 3261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6338:74:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Calendar_$22506",
                                "typeString": "enum Calendar"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3264,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3190,
                                  "src": "6474:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6d6174757269747944617465",
                                  "id": 3265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6483:14:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                                    "typeString": "literal_string \"maturityDate\""
                                  },
                                  "value": "maturityDate"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                                    "typeString": "literal_string \"maturityDate\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3262,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "6430:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 3263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getUIntValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6857,
                                "src": "6430:43:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                                }
                              },
                              "id": 3266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6430:68:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              },
                              {
                                "typeIdentifier": "t_enum$_Calendar_$22506",
                                "typeString": "enum Calendar"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3246,
                            "name": "shiftEventTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23182,
                            "src": "6158:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6158:354:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3268,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "6516:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6516:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6158:373:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e545f4e4f545f5945545f5343484544554c4544",
                        "id": 3271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6545:53:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c0fa582723c6c77df03eb53b0a6f2785bdcb5cce41adbf598a2df8366364f08b",
                          "typeString": "literal_string \"ANNActor.processEvent: NEXT_EVENT_NOT_YET_SCHEDULED\""
                        },
                        "value": "ANNActor.processEvent: NEXT_EVENT_NOT_YET_SCHEDULED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c0fa582723c6c77df03eb53b0a6f2785bdcb5cce41adbf598a2df8366364f08b",
                          "typeString": "literal_string \"ANNActor.processEvent: NEXT_EVENT_NOT_YET_SCHEDULED\""
                        }
                      ],
                      "id": 3245,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6097:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6097:511:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3273,
                  "nodeType": "ExpressionStatement",
                  "src": "6097:511:4"
                },
                {
                  "assignments": [
                    3275,
                    3277
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3275,
                      "mutability": "mutable",
                      "name": "nextState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "6756:22:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3274,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "6756:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3277,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "6780:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 3276,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6780:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3283,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3279,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "6827:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3280,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3196,
                        "src": "6836:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3281,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3192,
                        "src": "6843:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3278,
                      "name": "computeStateAndPayoffForEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3563,
                      "src": "6797:29:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                        "typeString": "function (bytes32,struct State memory,bytes32) view returns (struct State memory,int256)"
                      }
                    },
                    "id": 3282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6797:53:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6755:95:4"
                },
                {
                  "assignments": [
                    3285
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3285,
                      "mutability": "mutable",
                      "name": "settledPayoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "6902:18:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3284,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6902:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3291,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3287,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "6944:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3288,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3192,
                        "src": "6953:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3289,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "6961:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 3286,
                      "name": "settlePayoffForEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3550,
                      "src": "6923:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                        "typeString": "function (bytes32,bytes32,int256) returns (bool)"
                      }
                    },
                    "id": 3290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6923:45:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6902:66:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3292,
                      "name": "settledPayoff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3285,
                      "src": "6983:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 3293,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7000:5:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "6983:22:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3334,
                  "nodeType": "IfStatement",
                  "src": "6979:974:4",
                  "trueBody": {
                    "id": 3333,
                    "nodeType": "Block",
                    "src": "7007:946:4",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                            "typeString": "enum ContractPerformance"
                          },
                          "id": 3299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3295,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3196,
                              "src": "7376:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 3296,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractPerformance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22634,
                            "src": "7376:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3297,
                              "name": "ContractPerformance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22513,
                              "src": "7405:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                "typeString": "type(enum ContractPerformance)"
                              }
                            },
                            "id": 3298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7405:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            }
                          },
                          "src": "7376:51:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3308,
                        "nodeType": "IfStatement",
                        "src": "7372:137:4",
                        "trueBody": {
                          "id": 3307,
                          "nodeType": "Block",
                          "src": "7429:80:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3303,
                                    "name": "assetId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3190,
                                    "src": "7479:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3304,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3196,
                                    "src": "7488:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3300,
                                    "name": "assetRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3025,
                                    "src": "7447:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                      "typeString": "contract IAssetRegistry"
                                    }
                                  },
                                  "id": 3302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setFinalizedState",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5775,
                                  "src": "7447:31:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes32,struct State memory) external"
                                  }
                                },
                                "id": 3305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7447:47:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3306,
                              "nodeType": "ExpressionStatement",
                              "src": "7447:47:4"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3312,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3190,
                              "src": "7620:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3313,
                              "name": "_event",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3192,
                              "src": "7629:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3309,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3025,
                              "src": "7589:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 3311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pushPendingEvent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4844,
                            "src": "7589:30:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32) external"
                            }
                          },
                          "id": 3314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7589:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3315,
                        "nodeType": "ExpressionStatement",
                        "src": "7589:47:4"
                      },
                      {
                        "assignments": [
                          3317
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3317,
                            "mutability": "mutable",
                            "name": "ceEvent",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3333,
                            "src": "7685:15:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3316,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7685:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3323,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3319,
                                "name": "EventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22610,
                                "src": "7715:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                  "typeString": "type(enum EventType)"
                                }
                              },
                              "id": 3320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "CE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7715:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3321,
                              "name": "scheduleTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3240,
                              "src": "7729:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3318,
                            "name": "encodeEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24702,
                            "src": "7703:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 3322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7703:39:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7685:57:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3324,
                                "name": "nextState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3275,
                                "src": "7869:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              null
                            ],
                            "id": 3325,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "7868:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$__$",
                              "typeString": "tuple(struct State memory,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3327,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3190,
                                "src": "7914:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3328,
                                "name": "nextState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3275,
                                "src": "7923:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3329,
                                "name": "ceEvent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3317,
                                "src": "7934:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 3326,
                              "name": "computeStateAndPayoffForEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3563,
                              "src": "7884:29:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                                "typeString": "function (bytes32,struct State memory,bytes32) view returns (struct State memory,int256)"
                              }
                            },
                            "id": 3330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7884:58:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                              "typeString": "tuple(struct State memory,int256)"
                            }
                          },
                          "src": "7868:74:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3332,
                        "nodeType": "ExpressionStatement",
                        "src": "7868:74:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3338,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "8023:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3339,
                        "name": "nextState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3275,
                        "src": "8032:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3335,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "8000:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5768,
                      "src": "8000:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct State memory) external"
                      }
                    },
                    "id": 3340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8000:42:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3341,
                  "nodeType": "ExpressionStatement",
                  "src": "8000:42:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3342,
                      "name": "settledPayoff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3285,
                      "src": "8090:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8107:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8090:21:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3354,
                  "nodeType": "IfStatement",
                  "src": "8086:109:4",
                  "trueBody": {
                    "id": 3353,
                    "nodeType": "Block",
                    "src": "8113:82:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3348,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3190,
                              "src": "8160:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3349,
                              "name": "_event",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3192,
                              "src": "8169:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3350,
                              "name": "payoff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "8177:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3345,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3025,
                              "src": "8127:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 3347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "markEventAsSettled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4923,
                            "src": "8127:32:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_int256_$returns$__$",
                              "typeString": "function (bytes32,bytes32,int256) external"
                            }
                          },
                          "id": 3351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8127:57:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3352,
                        "nodeType": "ExpressionStatement",
                        "src": "8127:57:4"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3356,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "8239:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3357,
                                "name": "settledPayoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3285,
                                "src": "8333:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 3358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8350:4:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "8333:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 3360,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8332:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3362,
                            "name": "EventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22610,
                            "src": "8370:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                              "typeString": "type(enum EventType)"
                            }
                          },
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "CE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8370:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          }
                        },
                        "id": 3364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "8332:50:4",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 3361,
                          "name": "eventType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3238,
                          "src": "8358:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3365,
                        "name": "scheduleTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3240,
                        "src": "8396:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3366,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "8422:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 3355,
                      "name": "ProgressedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3017,
                      "src": "8210:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$_t_int256_$returns$__$",
                        "typeString": "function (bytes32,enum EventType,uint256,int256)"
                      }
                    },
                    "id": 3367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8210:228:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3368,
                  "nodeType": "EmitStatement",
                  "src": "8205:233:4"
                }
              ]
            },
            "documentation": {
              "id": 3188,
              "nodeType": "StructuredDocumentation",
              "src": "5109:59:4",
              "text": " @notice Return true if event was settled"
            },
            "id": 3370,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "processEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3193,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3190,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3370,
                  "src": "5195:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3189,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5195:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3192,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3370,
                  "src": "5212:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3191,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5212:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5194:33:4"
            },
            "returnParameters": {
              "id": 3194,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5237:0:4"
            },
            "scope": 3851,
            "src": "5173:3272:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3549,
              "nodeType": "Block",
              "src": "8991:2255:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3383,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3373,
                            "src": "9022:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9041:1:4",
                                "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": 3385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9033:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3384,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "9033:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9033:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9022:21:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3389,
                            "name": "_event",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3375,
                            "src": "9047:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9065:1:4",
                                "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": 3391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9057:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3390,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "9057:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9057:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9047:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "9022:45:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e736574746c655061796f6666466f724576656e743a20494e56414c49445f46554e4354494f4e5f504152414d4554455253",
                        "id": 3396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9081:61:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_95a9d6e9d513196b9cd7a3a9ba103c38990aee5d561d1cfc908624b18cefc268",
                          "typeString": "literal_string \"BaseActor.settlePayoffForEvent: INVALID_FUNCTION_PARAMETERS\""
                        },
                        "value": "BaseActor.settlePayoffForEvent: INVALID_FUNCTION_PARAMETERS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_95a9d6e9d513196b9cd7a3a9ba103c38990aee5d561d1cfc908624b18cefc268",
                          "typeString": "literal_string \"BaseActor.settlePayoffForEvent: INVALID_FUNCTION_PARAMETERS\""
                        }
                      ],
                      "id": 3382,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9001:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9001:151:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3398,
                  "nodeType": "ExpressionStatement",
                  "src": "9001:151:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 3401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3399,
                      "name": "payoff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3377,
                      "src": "9211:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9221:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9211:11:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3404,
                  "nodeType": "IfStatement",
                  "src": "9207:28:4",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9231:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "functionReturnParameters": 3381,
                    "id": 3403,
                    "nodeType": "Return",
                    "src": "9224:11:4"
                  }
                },
                {
                  "assignments": [
                    3406
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3406,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9348:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3405,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9348:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3412,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3409,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3373,
                        "src": "9411:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63757272656e6379",
                        "id": 3410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9420:10:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        },
                        "value": "currency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3407,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "9364:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3408,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAddressValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6839,
                      "src": "9364:46:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 3411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9364:67:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9348:83:4"
                },
                {
                  "assignments": [
                    3414
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3414,
                      "mutability": "mutable",
                      "name": "contractReference_2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9441:44:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                        "typeString": "struct ContractReference"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3413,
                        "name": "ContractReference",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22632,
                        "src": "9441:17:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                          "typeString": "struct ContractReference"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3420,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3417,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3373,
                        "src": "9558:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e74726163745265666572656e63655f32",
                        "id": 3418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9579:21:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_01acef38074a0e0d5976473f7e34539badf35a9665d3e6a9e9fe377f17f1ea4f",
                          "typeString": "literal_string \"contractReference_2\""
                        },
                        "value": "contractReference_2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_01acef38074a0e0d5976473f7e34539badf35a9665d3e6a9e9fe377f17f1ea4f",
                          "typeString": "literal_string \"contractReference_2\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3415,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "9488:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getContractReferenceValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6893,
                      "src": "9488:56:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) view external returns (struct ContractReference memory)"
                      }
                    },
                    "id": 3419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9488:122:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9441:169:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                      "typeString": "enum ContractReferenceRole"
                    },
                    "id": 3425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3421,
                        "name": "contractReference_2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3414,
                        "src": "9624:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                          "typeString": "struct ContractReference memory"
                        }
                      },
                      "id": 3422,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22631,
                      "src": "9624:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3423,
                        "name": "ContractReferenceRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22525,
                        "src": "9652:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                          "typeString": "type(enum ContractReferenceRole)"
                        }
                      },
                      "id": 3424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "COVI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9652:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "src": "9624:54:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3435,
                  "nodeType": "IfStatement",
                  "src": "9620:147:4",
                  "trueBody": {
                    "id": 3434,
                    "nodeType": "Block",
                    "src": "9680:87:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3426,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3406,
                                "src": "9695:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              null
                            ],
                            "id": 3427,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "9694:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$__$",
                              "typeString": "tuple(address,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3429,
                                  "name": "contractReference_2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3414,
                                  "src": "9729:19:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                    "typeString": "struct ContractReference memory"
                                  }
                                },
                                "id": 3430,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22625,
                                "src": "9729:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 3428,
                              "name": "decodeCollateralObject",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7054,
                              "src": "9706:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$_t_uint256_$",
                                "typeString": "function (bytes32) pure returns (address,uint256)"
                              }
                            },
                            "id": 3431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9706:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                              "typeString": "tuple(address,uint256)"
                            }
                          },
                          "src": "9694:62:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3433,
                        "nodeType": "ExpressionStatement",
                        "src": "9694:62:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3437,
                      "mutability": "mutable",
                      "name": "ownership",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9777:31:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                        "typeString": "struct AssetOwnership"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3436,
                        "name": "AssetOwnership",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7849,
                        "src": "9777:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                          "typeString": "struct AssetOwnership"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3442,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3440,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3373,
                        "src": "9838:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3438,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "9811:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3439,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4578,
                      "src": "9811:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_AssetOwnership_$7849_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct AssetOwnership memory)"
                      }
                    },
                    "id": 3441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9811:35:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                      "typeString": "struct AssetOwnership memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9777:69:4"
                },
                {
                  "assignments": [
                    3444
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3444,
                      "mutability": "mutable",
                      "name": "payee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9948:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3443,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9948:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3445,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9948:13:4"
                },
                {
                  "assignments": [
                    3447
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3447,
                      "mutability": "mutable",
                      "name": "payer",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9971:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3446,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9971:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3448,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9971:13:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 3451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3449,
                      "name": "payoff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3377,
                      "src": "9998:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3450,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10007:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9998:10:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3489,
                    "nodeType": "Block",
                    "src": "10342:326:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3471,
                            "name": "payer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "10420:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3472,
                              "name": "ownership",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3437,
                              "src": "10428:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                "typeString": "struct AssetOwnership memory"
                              }
                            },
                            "id": 3473,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creatorObligor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7842,
                            "src": "10428:24:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10420:32:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3475,
                        "nodeType": "ExpressionStatement",
                        "src": "10420:32:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3476,
                            "name": "payee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "10563:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10580:1:4",
                                "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": 3478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10572:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3477,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10572:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10572:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10563:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3488,
                        "nodeType": "IfStatement",
                        "src": "10559:99:4",
                        "trueBody": {
                          "id": 3487,
                          "nodeType": "Block",
                          "src": "10584:74:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3482,
                                  "name": "payee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3444,
                                  "src": "10602:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3483,
                                    "name": "ownership",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3437,
                                    "src": "10610:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                      "typeString": "struct AssetOwnership memory"
                                    }
                                  },
                                  "id": 3484,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "counterpartyBeneficiary",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7848,
                                  "src": "10610:33:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10602:41:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3486,
                              "nodeType": "ExpressionStatement",
                              "src": "10602:41:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3490,
                  "nodeType": "IfStatement",
                  "src": "9994:674:4",
                  "trueBody": {
                    "id": 3470,
                    "nodeType": "Block",
                    "src": "10010:326:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3452,
                            "name": "payer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "10088:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3453,
                              "name": "ownership",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3437,
                              "src": "10096:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                "typeString": "struct AssetOwnership memory"
                              }
                            },
                            "id": 3454,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "counterpartyObligor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7846,
                            "src": "10096:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10088:37:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3456,
                        "nodeType": "ExpressionStatement",
                        "src": "10088:37:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3457,
                            "name": "payee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "10236:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10253:1:4",
                                "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": 3459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10245:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3458,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10245:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10245:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10236:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3469,
                        "nodeType": "IfStatement",
                        "src": "10232:94:4",
                        "trueBody": {
                          "id": 3468,
                          "nodeType": "Block",
                          "src": "10257:69:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3466,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3463,
                                  "name": "payee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3444,
                                  "src": "10275:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3464,
                                    "name": "ownership",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3437,
                                    "src": "10283:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                      "typeString": "struct AssetOwnership memory"
                                    }
                                  },
                                  "id": 3465,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "creatorBeneficiary",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7844,
                                  "src": "10283:28:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10275:36:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3467,
                              "nodeType": "ExpressionStatement",
                              "src": "10275:36:4"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3492
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3492,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "10727:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3491,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10727:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3509,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3493,
                            "name": "payoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3377,
                            "src": "10745:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10754:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10745:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 3496,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "10744:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3503,
                            "name": "payoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3377,
                            "src": "10785:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "10794:2:4",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10795:1:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          },
                          "src": "10785:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 3502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10777:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 3501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10777:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 3507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10777:20:4",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "10744:53:4",
                    "trueExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3499,
                          "name": "payoff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3377,
                          "src": "10767:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 3498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10759:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 3497,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10759:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 3500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10759:15:4",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10727:70:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3521,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3514,
                            "name": "payer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "10946:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3517,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "10961:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BaseActor_$3851",
                                  "typeString": "contract BaseActor"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BaseActor_$3851",
                                  "typeString": "contract BaseActor"
                                }
                              ],
                              "id": 3516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10953:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3515,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10953:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10953:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3511,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3406,
                                "src": "10929:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3510,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39445,
                              "src": "10922:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 3512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10922:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$39445",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "allowance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 39404,
                          "src": "10922:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address,address) view external returns (uint256)"
                          }
                        },
                        "id": 3519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10922:45:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3520,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3492,
                        "src": "10970:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10922:54:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3526,
                            "name": "payer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "11004:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3523,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3406,
                                "src": "10987:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3522,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39445,
                              "src": "10980:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 3524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10980:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$39445",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 39384,
                          "src": "10980:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 3527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10980:30:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3528,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3492,
                        "src": "11013:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10980:39:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10922:97:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3539,
                  "nodeType": "IfStatement",
                  "src": "10918:196:4",
                  "trueBody": {
                    "id": 3538,
                    "nodeType": "Block",
                    "src": "11021:93:4",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3532,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3373,
                              "src": "11047:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e53554646494349454e545f46554e4453",
                              "id": 3533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11056:20:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_292ddc23e79f5a4f6e48dc7ac9f5dc6912d137767d4f92ed78c3842d7550ed2d",
                                "typeString": "literal_string \"INSUFFICIENT_FUNDS\""
                              },
                              "value": "INSUFFICIENT_FUNDS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_292ddc23e79f5a4f6e48dc7ac9f5dc6912d137767d4f92ed78c3842d7550ed2d",
                                "typeString": "literal_string \"INSUFFICIENT_FUNDS\""
                              }
                            ],
                            "id": 3531,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3023,
                            "src": "11040:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32)"
                            }
                          },
                          "id": 3534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11040:37:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3535,
                        "nodeType": "EmitStatement",
                        "src": "11035:42:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11098:5:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3381,
                        "id": 3537,
                        "nodeType": "Return",
                        "src": "11091:12:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3544,
                        "name": "payer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3447,
                        "src": "11218:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3545,
                        "name": "payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3444,
                        "src": "11225:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3546,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3492,
                        "src": "11232:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3541,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3406,
                            "src": "11198:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3540,
                          "name": "IERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39445,
                          "src": "11191:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                            "typeString": "type(contract IERC20)"
                          }
                        },
                        "id": 3542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11191:13:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$39445",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 3543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39426,
                      "src": "11191:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) external returns (bool)"
                      }
                    },
                    "id": 3547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11191:48:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3381,
                  "id": 3548,
                  "nodeType": "Return",
                  "src": "11184:55:4"
                }
              ]
            },
            "documentation": {
              "id": 3371,
              "nodeType": "StructuredDocumentation",
              "src": "8451:383:4",
              "text": " @notice Routes a payment to the designated beneficiary of the event obligation.\n @dev Checks if an owner of the specified cashflowId is set, if not it sends\n funds to the default beneficiary.\n @param assetId id of the asset which the payment relates to\n @param _event _event to settle the payoff for\n @param payoff payoff of the event"
            },
            "id": 3550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settlePayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3373,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3550,
                  "src": "8878:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3372,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8878:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3375,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3550,
                  "src": "8903:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3374,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8903:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3377,
                  "mutability": "mutable",
                  "name": "payoff",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3550,
                  "src": "8927:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3376,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8927:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8868:78:4"
            },
            "returnParameters": {
              "id": 3381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3380,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3550,
                  "src": "8981:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3379,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8981:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8980:6:4"
            },
            "scope": 3851,
            "src": "8839:2407:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": null,
            "documentation": null,
            "id": 3563,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3552,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11291:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3551,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11291:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3554,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11308:18:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3553,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11308:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3556,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11328:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3555,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11328:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11290:53:4"
            },
            "returnParameters": {
              "id": 3562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3559,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11407:12:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3558,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11407:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3561,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11421:6:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3560,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11421:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11406:22:4"
            },
            "scope": 3851,
            "src": "11252:177:4",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3792,
              "nodeType": "Block",
              "src": "11787:3247:4",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 3578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3575,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3568,
                      "src": "11801:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3576,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11814:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 3577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11814:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11801:25:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "id": 3604,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3601,
                        "name": "eventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3568,
                        "src": "12156:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3602,
                          "name": "EventType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22610,
                          "src": "12169:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                            "typeString": "type(enum EventType)"
                          }
                        },
                        "id": 3603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CE",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12169:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "src": "12156:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        "id": 3615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3612,
                          "name": "eventType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3568,
                          "src": "12326:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3613,
                            "name": "EventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22610,
                            "src": "12339:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                              "typeString": "type(enum EventType)"
                            }
                          },
                          "id": 3614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "XD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12339:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          }
                        },
                        "src": "12326:25:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "id": 3716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3713,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3568,
                            "src": "13903:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3714,
                              "name": "EventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22610,
                              "src": "13916:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                "typeString": "type(enum EventType)"
                              }
                            },
                            "id": 3715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "RFD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13916:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "src": "13903:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3783,
                        "nodeType": "IfStatement",
                        "src": "13899:1101:4",
                        "trueBody": {
                          "id": 3782,
                          "nodeType": "Block",
                          "src": "13931:1069:4",
                          "statements": [
                            {
                              "assignments": [
                                3718
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3718,
                                  "mutability": "mutable",
                                  "name": "contractReference_1",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3782,
                                  "src": "13945:44:4",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                    "typeString": "struct ContractReference"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 3717,
                                    "name": "ContractReference",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22632,
                                    "src": "13945:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                                      "typeString": "struct ContractReference"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3724,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3721,
                                    "name": "assetId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3566,
                                    "src": "14066:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636f6e74726163745265666572656e63655f31",
                                    "id": 3722,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14091:21:4",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                                      "typeString": "literal_string \"contractReference_1\""
                                    },
                                    "value": "contractReference_1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                                      "typeString": "literal_string \"contractReference_1\""
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3719,
                                    "name": "assetRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3025,
                                    "src": "13992:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                      "typeString": "contract IAssetRegistry"
                                    }
                                  },
                                  "id": 3720,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getContractReferenceValueForTermsAttribute",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6893,
                                  "src": "13992:56:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                                    "typeString": "function (bytes32,bytes32) view external returns (struct ContractReference memory)"
                                  }
                                },
                                "id": 3723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13992:134:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                  "typeString": "struct ContractReference memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13945:181:4"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                    "typeString": "enum ContractReferenceType"
                                  },
                                  "id": 3729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3725,
                                      "name": "contractReference_1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3718,
                                      "src": "14161:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                        "typeString": "struct ContractReference memory"
                                      }
                                    },
                                    "id": 3726,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_type",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22629,
                                    "src": "14161:25:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                      "typeString": "enum ContractReferenceType"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3727,
                                      "name": "ContractReferenceType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22519,
                                      "src": "14190:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ContractReferenceType_$22519_$",
                                        "typeString": "type(enum ContractReferenceType)"
                                      }
                                    },
                                    "id": 3728,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "MOC",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14190:25:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                      "typeString": "enum ContractReferenceType"
                                    }
                                  },
                                  "src": "14161:54:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                    "typeString": "enum ContractReferenceRole"
                                  },
                                  "id": 3734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3730,
                                      "name": "contractReference_1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3718,
                                      "src": "14235:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                        "typeString": "struct ContractReference memory"
                                      }
                                    },
                                    "id": 3731,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "role",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22631,
                                    "src": "14235:24:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                      "typeString": "enum ContractReferenceRole"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3732,
                                      "name": "ContractReferenceRole",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22525,
                                      "src": "14263:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                                        "typeString": "type(enum ContractReferenceRole)"
                                      }
                                    },
                                    "id": 3733,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "UDL",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14263:25:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                      "typeString": "enum ContractReferenceRole"
                                    }
                                  },
                                  "src": "14235:53:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "14161:127:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3776,
                              "nodeType": "IfStatement",
                              "src": "14140:819:4",
                              "trueBody": {
                                "id": 3775,
                                "nodeType": "Block",
                                "src": "14303:656:4",
                                "statements": [
                                  {
                                    "assignments": [
                                      3737,
                                      3739
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 3737,
                                        "mutability": "mutable",
                                        "name": "redemptionAmountScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 3775,
                                        "src": "14322:35:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "typeName": {
                                          "id": 3736,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14322:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 3739,
                                        "mutability": "mutable",
                                        "name": "isSetScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 3775,
                                        "src": "14359:22:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "typeName": {
                                          "id": 3738,
                                          "name": "bool",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14359:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 3746,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3742,
                                            "name": "contractReference_1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3718,
                                            "src": "14432:19:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                              "typeString": "struct ContractReference memory"
                                            }
                                          },
                                          "id": 3743,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "object",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22625,
                                          "src": "14432:26:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3744,
                                          "name": "timestamp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3570,
                                          "src": "14480:9:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3740,
                                          "name": "dataRegistry",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3027,
                                          "src": "14385:12:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                            "typeString": "contract IDataRegistry"
                                          }
                                        },
                                        "id": 3741,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getDataPoint",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7765,
                                        "src": "14385:25:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                                          "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                                        }
                                      },
                                      "id": 3745,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14385:122:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                                        "typeString": "tuple(int256,bool)"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14321:186:4"
                                  },
                                  {
                                    "assignments": [
                                      3748,
                                      3750
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 3748,
                                        "mutability": "mutable",
                                        "name": "redemptionAmountAnchorDate",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 3775,
                                        "src": "14526:33:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "typeName": {
                                          "id": 3747,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14526:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 3750,
                                        "mutability": "mutable",
                                        "name": "isSetAnchorDate",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 3775,
                                        "src": "14561:20:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "typeName": {
                                          "id": 3749,
                                          "name": "bool",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14561:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 3761,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3753,
                                            "name": "contractReference_1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3718,
                                            "src": "14632:19:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                              "typeString": "struct ContractReference memory"
                                            }
                                          },
                                          "id": 3754,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "object",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22625,
                                          "src": "14632:26:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3757,
                                              "name": "assetId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3566,
                                              "src": "14724:7:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "697373756544617465",
                                              "id": 3758,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "14733:11:4",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_6076d2bbe55ad3c4b6ee7953ef9ae2e5b181f22d3eba84d569dbda4b99713e82",
                                                "typeString": "literal_string \"issueDate\""
                                              },
                                              "value": "issueDate"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_stringliteral_6076d2bbe55ad3c4b6ee7953ef9ae2e5b181f22d3eba84d569dbda4b99713e82",
                                                "typeString": "literal_string \"issueDate\""
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 3755,
                                              "name": "assetRegistry",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3025,
                                              "src": "14680:13:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                                "typeString": "contract IAssetRegistry"
                                              }
                                            },
                                            "id": 3756,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getUIntValueForTermsAttribute",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6857,
                                            "src": "14680:43:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                              "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                                            }
                                          },
                                          "id": 3759,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14680:65:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3751,
                                          "name": "dataRegistry",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3027,
                                          "src": "14585:12:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                            "typeString": "contract IDataRegistry"
                                          }
                                        },
                                        "id": 3752,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getDataPoint",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7765,
                                        "src": "14585:25:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                                          "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                                        }
                                      },
                                      "id": 3760,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14585:178:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                                        "typeString": "tuple(int256,bool)"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14525:238:4"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 3764,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3762,
                                        "name": "isSetScheduleTime",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3739,
                                        "src": "14785:17:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3763,
                                        "name": "isSetAnchorDate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3750,
                                        "src": "14806:15:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "14785:36:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 3774,
                                    "nodeType": "IfStatement",
                                    "src": "14781:164:4",
                                    "trueBody": {
                                      "id": 3773,
                                      "nodeType": "Block",
                                      "src": "14823:122:4",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 3769,
                                                    "name": "redemptionAmountAnchorDate",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3748,
                                                    "src": "14898:26:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 3767,
                                                    "name": "redemptionAmountScheduleTime",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3737,
                                                    "src": "14860:28:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  },
                                                  "id": 3768,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "floatDiv",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 24193,
                                                  "src": "14860:37:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                  }
                                                },
                                                "id": 3770,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14860:65:4",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "id": 3766,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "14852:7:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes32_$",
                                                "typeString": "type(bytes32)"
                                              },
                                              "typeName": {
                                                "id": 3765,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14852:7:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 3771,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14852:74:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "functionReturnParameters": 3574,
                                          "id": 3772,
                                          "nodeType": "Return",
                                          "src": "14845:81:4"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3779,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14987:1:4",
                                    "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": 3778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14979:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 3777,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14979:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14979:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 3574,
                              "id": 3781,
                              "nodeType": "Return",
                              "src": "14972:17:4"
                            }
                          ]
                        }
                      },
                      "id": 3784,
                      "nodeType": "IfStatement",
                      "src": "12322:2678:4",
                      "trueBody": {
                        "id": 3712,
                        "nodeType": "Block",
                        "src": "12353:1540:4",
                        "statements": [
                          {
                            "assignments": [
                              3617
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3617,
                                "mutability": "mutable",
                                "name": "contractReference_1",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3712,
                                "src": "12438:44:4",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                  "typeString": "struct ContractReference"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3616,
                                  "name": "ContractReference",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 22632,
                                  "src": "12438:17:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                                    "typeString": "struct ContractReference"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3623,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3620,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3566,
                                  "src": "12559:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "636f6e74726163745265666572656e63655f31",
                                  "id": 3621,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12584:21:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                                    "typeString": "literal_string \"contractReference_1\""
                                  },
                                  "value": "contractReference_1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                                    "typeString": "literal_string \"contractReference_1\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3618,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "12485:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 3619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getContractReferenceValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6893,
                                "src": "12485:56:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (struct ContractReference memory)"
                                }
                              },
                              "id": 3622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12485:134:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                "typeString": "struct ContractReference memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12438:181:4"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                "typeString": "enum ContractReferenceRole"
                              },
                              "id": 3628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3624,
                                  "name": "contractReference_1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3617,
                                  "src": "12637:19:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                    "typeString": "struct ContractReference memory"
                                  }
                                },
                                "id": 3625,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "role",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22631,
                                "src": "12637:24:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                  "typeString": "enum ContractReferenceRole"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3626,
                                  "name": "ContractReferenceRole",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22525,
                                  "src": "12665:21:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                                    "typeString": "type(enum ContractReferenceRole)"
                                  }
                                },
                                "id": 3627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "COVE",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12665:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                  "typeString": "enum ContractReferenceRole"
                                }
                              },
                              "src": "12637:54:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 3672,
                            "nodeType": "IfStatement",
                            "src": "12633:639:4",
                            "trueBody": {
                              "id": 3671,
                              "nodeType": "Block",
                              "src": "12693:579:4",
                              "statements": [
                                {
                                  "assignments": [
                                    3630
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3630,
                                      "mutability": "mutable",
                                      "name": "underlyingAssetId",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3671,
                                      "src": "12711:25:4",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "typeName": {
                                        "id": 3629,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12711:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3633,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3631,
                                      "name": "contractReference_1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3617,
                                      "src": "12739:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                        "typeString": "struct ContractReference memory"
                                      }
                                    },
                                    "id": 3632,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "object",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22625,
                                    "src": "12739:26:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "12711:54:4"
                                },
                                {
                                  "assignments": [
                                    3635
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3635,
                                      "mutability": "mutable",
                                      "name": "underlyingRegistry",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3671,
                                      "src": "12783:26:4",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "typeName": {
                                        "id": 3634,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12783:7:4",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3647,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 3642,
                                                  "name": "contractReference_1",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3617,
                                                  "src": "12836:19:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                                    "typeString": "struct ContractReference memory"
                                                  }
                                                },
                                                "id": 3643,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "object2",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22627,
                                                "src": "12836:27:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "id": 3641,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "12828:7:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 3640,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "12828:7:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 3644,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12828:36:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 3639,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "12820:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 3638,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12820:7:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 3645,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12820:45:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 3637,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12812:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3636,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12812:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12812:54:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "12783:83:4"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 3656,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3653,
                                              "name": "underlyingAssetId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3630,
                                              "src": "12961:17:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 3650,
                                                  "name": "underlyingRegistry",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3635,
                                                  "src": "12928:18:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 3649,
                                                "name": "IAssetRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4500,
                                                "src": "12913:14:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IAssetRegistry_$4500_$",
                                                  "typeString": "type(contract IAssetRegistry)"
                                                }
                                              },
                                              "id": 3651,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "12913:34:4",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                                "typeString": "contract IAssetRegistry"
                                              }
                                            },
                                            "id": 3652,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "isRegistered",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4510,
                                            "src": "12913:47:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                                              "typeString": "function (bytes32) view external returns (bool)"
                                            }
                                          },
                                          "id": 3654,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12913:66:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "74727565",
                                          "id": 3655,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12983:4:4",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        },
                                        "src": "12913:74:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "426173654163746f722e67657445787465726e616c44617461466f725354463a2041535345545f444f45535f4e4f545f4558495354",
                                        "id": 3657,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13009:55:4",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_4fe404e1cc72848e501a6265fcd5480374321a669da571be5729083f292c8e58",
                                          "typeString": "literal_string \"BaseActor.getExternalDataForSTF: ASSET_DOES_NOT_EXIST\""
                                        },
                                        "value": "BaseActor.getExternalDataForSTF: ASSET_DOES_NOT_EXIST"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_4fe404e1cc72848e501a6265fcd5480374321a669da571be5729083f292c8e58",
                                          "typeString": "literal_string \"BaseActor.getExternalDataForSTF: ASSET_DOES_NOT_EXIST\""
                                        }
                                      ],
                                      "id": 3648,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "12884:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 3658,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12884:198:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3659,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12884:198:4"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 3666,
                                            "name": "underlyingAssetId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3630,
                                            "src": "13200:17:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "6e6f74696f6e616c5072696e636970616c",
                                            "id": 3667,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13219:19:4",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_e2fff6dcb62db100a261b355ab60197116fe802903e74d960566f166da38c4d7",
                                              "typeString": "literal_string \"notionalPrincipal\""
                                            },
                                            "value": "notionalPrincipal"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_e2fff6dcb62db100a261b355ab60197116fe802903e74d960566f166da38c4d7",
                                              "typeString": "literal_string \"notionalPrincipal\""
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 3663,
                                                "name": "underlyingRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3635,
                                                "src": "13151:18:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 3662,
                                              "name": "IAssetRegistry",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4500,
                                              "src": "13136:14:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IAssetRegistry_$4500_$",
                                                "typeString": "type(contract IAssetRegistry)"
                                              }
                                            },
                                            "id": 3664,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13136:34:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                              "typeString": "contract IAssetRegistry"
                                            }
                                          },
                                          "id": 3665,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getIntValueForStateAttribute",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5752,
                                          "src": "13136:63:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                                            "typeString": "function (bytes32,bytes32) view external returns (int256)"
                                          }
                                        },
                                        "id": 3668,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13136:103:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "id": 3661,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13107:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 3660,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13107:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3669,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13107:150:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "functionReturnParameters": 3574,
                                  "id": 3670,
                                  "nodeType": "Return",
                                  "src": "13100:157:4"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              3674
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3674,
                                "mutability": "mutable",
                                "name": "contractReference_2",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3712,
                                "src": "13285:44:4",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                  "typeString": "struct ContractReference"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3673,
                                  "name": "ContractReference",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 22632,
                                  "src": "13285:17:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                                    "typeString": "struct ContractReference"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3680,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3677,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3566,
                                  "src": "13406:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "636f6e74726163745265666572656e63655f32",
                                  "id": 3678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13431:21:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_01acef38074a0e0d5976473f7e34539badf35a9665d3e6a9e9fe377f17f1ea4f",
                                    "typeString": "literal_string \"contractReference_2\""
                                  },
                                  "value": "contractReference_2"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_01acef38074a0e0d5976473f7e34539badf35a9665d3e6a9e9fe377f17f1ea4f",
                                    "typeString": "literal_string \"contractReference_2\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3675,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "13332:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 3676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getContractReferenceValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6893,
                                "src": "13332:56:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (struct ContractReference memory)"
                                }
                              },
                              "id": 3679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13332:134:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                "typeString": "struct ContractReference memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13285:181:4"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                  "typeString": "enum ContractReferenceType"
                                },
                                "id": 3685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3681,
                                    "name": "contractReference_2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3674,
                                    "src": "13501:19:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                      "typeString": "struct ContractReference memory"
                                    }
                                  },
                                  "id": 3682,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_type",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22629,
                                  "src": "13501:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                    "typeString": "enum ContractReferenceType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3683,
                                    "name": "ContractReferenceType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22519,
                                    "src": "13530:21:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractReferenceType_$22519_$",
                                      "typeString": "type(enum ContractReferenceType)"
                                    }
                                  },
                                  "id": 3684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "MOC",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "13530:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                    "typeString": "enum ContractReferenceType"
                                  }
                                },
                                "src": "13501:54:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                  "typeString": "enum ContractReferenceRole"
                                },
                                "id": 3690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3686,
                                    "name": "contractReference_2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3674,
                                    "src": "13575:19:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                      "typeString": "struct ContractReference memory"
                                    }
                                  },
                                  "id": 3687,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "role",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22631,
                                  "src": "13575:24:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                    "typeString": "enum ContractReferenceRole"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3688,
                                    "name": "ContractReferenceRole",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22525,
                                    "src": "13603:21:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                                      "typeString": "type(enum ContractReferenceRole)"
                                    }
                                  },
                                  "id": 3689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "UDL",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "13603:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                    "typeString": "enum ContractReferenceRole"
                                  }
                                },
                                "src": "13575:53:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13501:127:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 3711,
                            "nodeType": "IfStatement",
                            "src": "13480:403:4",
                            "trueBody": {
                              "id": 3710,
                              "nodeType": "Block",
                              "src": "13643:240:4",
                              "statements": [
                                {
                                  "assignments": [
                                    3693,
                                    3695
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3693,
                                      "mutability": "mutable",
                                      "name": "quantity",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3710,
                                      "src": "13662:15:4",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "typeName": {
                                        "id": 3692,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13662:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 3695,
                                      "mutability": "mutable",
                                      "name": "isSet",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3710,
                                      "src": "13679:10:4",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "typeName": {
                                        "id": 3694,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13679:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3702,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3698,
                                          "name": "contractReference_2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3674,
                                          "src": "13740:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                            "typeString": "struct ContractReference memory"
                                          }
                                        },
                                        "id": 3699,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "object",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22625,
                                        "src": "13740:26:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3700,
                                        "name": "timestamp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3570,
                                        "src": "13788:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3696,
                                        "name": "dataRegistry",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3027,
                                        "src": "13693:12:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                          "typeString": "contract IDataRegistry"
                                        }
                                      },
                                      "id": 3697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getDataPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7765,
                                      "src": "13693:25:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                                        "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                                      }
                                    },
                                    "id": 3701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13693:122:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                                      "typeString": "tuple(int256,bool)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13661:154:4"
                                },
                                {
                                  "condition": {
                                    "argumentTypes": null,
                                    "id": 3703,
                                    "name": "isSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3695,
                                    "src": "13837:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": null,
                                  "id": 3709,
                                  "nodeType": "IfStatement",
                                  "src": "13833:35:4",
                                  "trueBody": {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3706,
                                          "name": "quantity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3693,
                                          "src": "13859:8:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        ],
                                        "id": 3705,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "13851:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes32_$",
                                          "typeString": "type(bytes32)"
                                        },
                                        "typeName": {
                                          "id": 3704,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13851:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 3707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13851:17:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "functionReturnParameters": 3574,
                                    "id": 3708,
                                    "nodeType": "Return",
                                    "src": "13844:24:4"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    "id": 3785,
                    "nodeType": "IfStatement",
                    "src": "12152:2848:4",
                    "trueBody": {
                      "id": 3611,
                      "nodeType": "Block",
                      "src": "12183:133:4",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3607,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "12289:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 3608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12289:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12281:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3605,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "12281:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12281:24:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "functionReturnParameters": 3574,
                          "id": 3610,
                          "nodeType": "Return",
                          "src": "12274:31:4"
                        }
                      ]
                    }
                  },
                  "id": 3786,
                  "nodeType": "IfStatement",
                  "src": "11797:3203:4",
                  "trueBody": {
                    "id": 3600,
                    "nodeType": "Block",
                    "src": "11828:318:4",
                    "statements": [
                      {
                        "assignments": [
                          3580,
                          3582
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3580,
                            "mutability": "mutable",
                            "name": "resetRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3600,
                            "src": "11885:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3579,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11885:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3582,
                            "mutability": "mutable",
                            "name": "isSet",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3600,
                            "src": "11903:10:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3581,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11903:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3592,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3587,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3566,
                                  "src": "12007:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6d61726b65744f626a656374436f6465526174655265736574",
                                  "id": 3588,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12016:27:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6296574969a8db06026b102601de73f4d0af8610ea7cc2f197ff5af584e6f370",
                                    "typeString": "literal_string \"marketObjectCodeRateReset\""
                                  },
                                  "value": "marketObjectCodeRateReset"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_6296574969a8db06026b102601de73f4d0af8610ea7cc2f197ff5af584e6f370",
                                    "typeString": "literal_string \"marketObjectCodeRateReset\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3585,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "11960:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 3586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getBytes32ValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6848,
                                "src": "11960:46:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (bytes32)"
                                }
                              },
                              "id": 3589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11960:84:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3590,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3570,
                              "src": "12062:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3583,
                              "name": "dataRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3027,
                              "src": "11917:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                "typeString": "contract IDataRegistry"
                              }
                            },
                            "id": 3584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getDataPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7765,
                            "src": "11917:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                            }
                          },
                          "id": 3591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11917:168:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                            "typeString": "tuple(int256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11884:201:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 3593,
                          "name": "isSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3582,
                          "src": "12103:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3599,
                        "nodeType": "IfStatement",
                        "src": "12099:36:4",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3596,
                                "name": "resetRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3580,
                                "src": "12125:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 3595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12117:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3594,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "12117:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12117:18:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "functionReturnParameters": 3574,
                          "id": 3598,
                          "nodeType": "Return",
                          "src": "12110:25:4"
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15025:1:4",
                        "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": 3788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "15017:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 3787,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15017:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 3790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15017:10:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 3574,
                  "id": 3791,
                  "nodeType": "Return",
                  "src": "15010:17:4"
                }
              ]
            },
            "documentation": {
              "id": 3564,
              "nodeType": "StructuredDocumentation",
              "src": "11435:169:4",
              "text": " @notice Retrieves external data (such as market object data, block time, underlying asset state)\n used for evaluating the STF for a given event."
            },
            "id": 3793,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getExternalDataForSTF",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3566,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3793,
                  "src": "11649:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3565,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11649:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3568,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3793,
                  "src": "11674:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3567,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "11674:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3570,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3793,
                  "src": "11703:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3569,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11703:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11639:87:4"
            },
            "returnParameters": {
              "id": 3574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3573,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3793,
                  "src": "11774:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3572,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11774:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11773:9:4"
            },
            "scope": 3851,
            "src": "11609:3425:4",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3849,
              "nodeType": "Block",
              "src": "15362:529:4",
              "statements": [
                {
                  "assignments": [
                    3806
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3806,
                      "mutability": "mutable",
                      "name": "currency",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3849,
                      "src": "15372:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3805,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15372:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3812,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3809,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3796,
                        "src": "15438:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63757272656e6379",
                        "id": 3810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15447:10:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        },
                        "value": "currency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3807,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "15391:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAddressValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6839,
                      "src": "15391:46:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 3811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15391:67:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15372:86:4"
                },
                {
                  "assignments": [
                    3814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3814,
                      "mutability": "mutable",
                      "name": "settlementCurrency",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3849,
                      "src": "15468:26:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3813,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15468:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3820,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3817,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3796,
                        "src": "15544:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "736574746c656d656e7443757272656e6379",
                        "id": 3818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15553:20:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_65999d3600410af5fedcc103765923091f3cc8d34115a761fdb149578c152e9b",
                          "typeString": "literal_string \"settlementCurrency\""
                        },
                        "value": "settlementCurrency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_65999d3600410af5fedcc103765923091f3cc8d34115a761fdb149578c152e9b",
                          "typeString": "literal_string \"settlementCurrency\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3815,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "15497:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3816,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAddressValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6839,
                      "src": "15497:46:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 3819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15497:77:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15468:106:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3821,
                      "name": "currency",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3806,
                      "src": "15589:8:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3822,
                      "name": "settlementCurrency",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3814,
                      "src": "15601:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "15589:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3848,
                  "nodeType": "IfStatement",
                  "src": "15585:300:4",
                  "trueBody": {
                    "id": 3847,
                    "nodeType": "Block",
                    "src": "15621:264:4",
                    "statements": [
                      {
                        "assignments": [
                          3825,
                          3827
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3825,
                            "mutability": "mutable",
                            "name": "fxRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3847,
                            "src": "15663:13:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3824,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15663:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3827,
                            "mutability": "mutable",
                            "name": "isSet",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3847,
                            "src": "15678:10:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3826,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "15678:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3839,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3833,
                                      "name": "currency",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3806,
                                      "src": "15756:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3834,
                                      "name": "settlementCurrency",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3814,
                                      "src": "15766:18:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3831,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "15745:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 3832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "15745:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 3835,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15745:40:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 3830,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "15735:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 3836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15735:51:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3837,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3800,
                              "src": "15804:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3828,
                              "name": "dataRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3027,
                              "src": "15692:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                "typeString": "contract IDataRegistry"
                              }
                            },
                            "id": 3829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getDataPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7765,
                            "src": "15692:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                            }
                          },
                          "id": 3838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15692:135:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                            "typeString": "tuple(int256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15662:165:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 3840,
                          "name": "isSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3827,
                          "src": "15845:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3846,
                        "nodeType": "IfStatement",
                        "src": "15841:33:4",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3843,
                                "name": "fxRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3825,
                                "src": "15867:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 3842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15859:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3841,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "15859:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15859:15:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "functionReturnParameters": 3804,
                          "id": 3845,
                          "nodeType": "Return",
                          "src": "15852:22:4"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 3794,
              "nodeType": "StructuredDocumentation",
              "src": "15040:133:4",
              "text": " @notice Retrieves external data (such as market object data)\n used for evaluating the POF for a given event."
            },
            "id": 3850,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getExternalDataForPOF",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3796,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3850,
                  "src": "15218:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3795,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15218:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3798,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3850,
                  "src": "15243:9:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3797,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "15243:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3800,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3850,
                  "src": "15278:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15278:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15208:93:4"
            },
            "returnParameters": {
              "id": 3804,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3803,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3850,
                  "src": "15349:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3802,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15349:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15348:9:4"
            },
            "scope": 3851,
            "src": "15178:713:4",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 3852,
        "src": "1261:14632:4"
      }
    ],
    "src": "41:15853:4"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
    "exportedSymbols": {
      "BaseActor": [
        3851
      ]
    },
    "id": 3852,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2972,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:4"
      },
      {
        "id": 2973,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:4"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/access/Ownable.sol",
        "id": 2974,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 38486,
        "src": "101:60:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 2975,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 39446,
        "src": "162:64:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/SignedMath.sol",
        "file": "@atpar/actus-solidity/contracts/Core/SignedMath.sol",
        "id": 2976,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 24231,
        "src": "228:61:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
        "id": 2977,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 23278,
        "src": "290:85:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "id": 2978,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 24759,
        "src": "376:67:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../SharedTypes.sol",
        "id": 2979,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 7865,
        "src": "445:28:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol",
        "file": "../Conversions.sol",
        "id": 2980,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 7056,
        "src": "474:28:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol",
        "file": "../AssetRegistry/IAssetRegistry.sol",
        "id": 2981,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 4501,
        "src": "503:45:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol",
        "file": "../DataRegistry/IDataRegistry.sol",
        "id": 2982,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 7767,
        "src": "549:43:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/IAssetActor.sol",
        "file": "./IAssetActor.sol",
        "id": 2983,
        "nodeType": "ImportDirective",
        "scope": 3852,
        "sourceUnit": 3869,
        "src": "593:27:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2985,
              "name": "Conversions",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7055,
              "src": "1292:11:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Conversions_$7055",
                "typeString": "contract Conversions"
              }
            },
            "id": 2986,
            "nodeType": "InheritanceSpecifier",
            "src": "1292:11:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2987,
              "name": "EventUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24758,
              "src": "1305:10:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventUtils_$24758",
                "typeString": "contract EventUtils"
              }
            },
            "id": 2988,
            "nodeType": "InheritanceSpecifier",
            "src": "1305:10:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2989,
              "name": "BusinessDayConventions",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 23277,
              "src": "1317:22:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BusinessDayConventions_$23277",
                "typeString": "contract BusinessDayConventions"
              }
            },
            "id": 2990,
            "nodeType": "InheritanceSpecifier",
            "src": "1317:22:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2991,
              "name": "IAssetActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3868,
              "src": "1341:11:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAssetActor_$3868",
                "typeString": "contract IAssetActor"
              }
            },
            "id": 2992,
            "nodeType": "InheritanceSpecifier",
            "src": "1341:11:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2993,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38485,
              "src": "1354:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$38485",
                "typeString": "contract Ownable"
              }
            },
            "id": 2994,
            "nodeType": "InheritanceSpecifier",
            "src": "1354:7:4"
          }
        ],
        "contractDependencies": [
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 2984,
          "nodeType": "StructuredDocumentation",
          "src": "623:637:4",
          "text": " @title BaseActor\n @notice As the centerpiece of the ACTUS Protocol it is responsible for managing the\n lifecycle of assets registered through the AssetRegistry. It acts as the executive of AP\n by initializing the state of the asset and by processing the assets schedule as specified\n in the TemplateRegistry. It derives the next state and the current outstanding payoff of\n the asset by submitting the last finalized state to the corresponding ACTUS Engine.\n The AssetActor stores the next state in the AssetRegistry, depending on if it is able\n to settle the current outstanding payoff on behalf of the obligor."
        },
        "fullyImplemented": false,
        "id": 3851,
        "linearizedBaseContracts": [
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "BaseActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2997,
            "libraryName": {
              "contractScope": null,
              "id": 2995,
              "name": "SignedMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24230,
              "src": "1375:10:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignedMath_$24230",
                "typeString": "library SignedMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1369:25:4",
            "typeName": {
              "id": 2996,
              "name": "int",
              "nodeType": "ElementaryTypeName",
              "src": "1390:3:4",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3007,
            "name": "InitializedAsset",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2999,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3007,
                  "src": "1423:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2998,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1423:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3001,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "contractType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3007,
                  "src": "1448:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ContractType_$22559",
                    "typeString": "enum ContractType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3000,
                    "name": "ContractType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22559,
                    "src": "1448:12:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3003,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3007,
                  "src": "1475:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1475:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3005,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "counterparty",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3007,
                  "src": "1492:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3004,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1492:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1422:91:4"
            },
            "src": "1400:114:4"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3017,
            "name": "ProgressedAsset",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3016,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3009,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3017,
                  "src": "1541:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3008,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1541:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3011,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3017,
                  "src": "1566:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3010,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "1566:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3013,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3017,
                  "src": "1587:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3012,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1587:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3015,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "payoff",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3017,
                  "src": "1609:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3014,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1609:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1540:83:4"
            },
            "src": "1519:105:4"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3023,
            "name": "Status",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3019,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3023,
                  "src": "1642:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3018,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1642:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3021,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "statusMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3023,
                  "src": "1667:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3020,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1667:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1641:48:4"
            },
            "src": "1629:61:4"
          },
          {
            "constant": false,
            "functionSelector": "979d7e86",
            "id": 3025,
            "mutability": "mutable",
            "name": "assetRegistry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3851,
            "src": "1696:35:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
              "typeString": "contract IAssetRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 3024,
              "name": "IAssetRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4500,
              "src": "1696:14:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                "typeString": "contract IAssetRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a39c1d6b",
            "id": 3027,
            "mutability": "mutable",
            "name": "dataRegistry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 3851,
            "src": "1737:33:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IDataRegistry_$7766",
              "typeString": "contract IDataRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 3026,
              "name": "IDataRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7766,
              "src": "1737:13:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                "typeString": "contract IDataRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3042,
              "nodeType": "Block",
              "src": "1892:85:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3034,
                      "name": "assetRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3025,
                      "src": "1902:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                        "typeString": "contract IAssetRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3035,
                      "name": "_assetRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3029,
                      "src": "1918:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                        "typeString": "contract IAssetRegistry"
                      }
                    },
                    "src": "1902:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "id": 3037,
                  "nodeType": "ExpressionStatement",
                  "src": "1902:30:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3038,
                      "name": "dataRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3027,
                      "src": "1942:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                        "typeString": "contract IDataRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3039,
                      "name": "_dataRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3031,
                      "src": "1957:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                        "typeString": "contract IDataRegistry"
                      }
                    },
                    "src": "1942:28:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "id": 3041,
                  "nodeType": "ExpressionStatement",
                  "src": "1942:28:4"
                }
              ]
            },
            "documentation": null,
            "id": 3043,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3029,
                  "mutability": "mutable",
                  "name": "_assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3043,
                  "src": "1800:29:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3028,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "1800:14:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3031,
                  "mutability": "mutable",
                  "name": "_dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3043,
                  "src": "1839:27:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3030,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "1839:13:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1790:82:4"
            },
            "returnParameters": {
              "id": 3033,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1892:0:4"
            },
            "scope": 3851,
            "src": "1778:199:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3860
            ],
            "body": {
              "id": 3108,
              "nodeType": "Block",
              "src": "2474:876:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3053,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3046,
                            "src": "2602:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3051,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "2575:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isRegistered",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4510,
                          "src": "2575:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view external returns (bool)"
                          }
                        },
                        "id": 3054,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2575:35:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f67726573733a2041535345545f444f45535f4e4f545f4558495354",
                        "id": 3055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2624:42:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_850487ee2487499989a08ddb83042f44f28ca1be42b686bf91738315ce206b29",
                          "typeString": "literal_string \"BaseActor.progress: ASSET_DOES_NOT_EXIST\""
                        },
                        "value": "BaseActor.progress: ASSET_DOES_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_850487ee2487499989a08ddb83042f44f28ca1be42b686bf91738315ce206b29",
                          "typeString": "literal_string \"BaseActor.progress: ASSET_DOES_NOT_EXIST\""
                        }
                      ],
                      "id": 3050,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2554:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2554:122:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3057,
                  "nodeType": "ExpressionStatement",
                  "src": "2554:122:4"
                },
                {
                  "assignments": [
                    3059
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3059,
                      "mutability": "mutable",
                      "name": "_event",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3108,
                      "src": "2898:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3058,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2898:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3064,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3062,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3046,
                        "src": "2945:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3060,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "2915:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "popPendingEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4851,
                      "src": "2915:29:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) external returns (bytes32)"
                      }
                    },
                    "id": 3063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2915:38:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2898:55:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3065,
                      "name": "_event",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3059,
                      "src": "2967:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2985:1:4",
                          "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": 3067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2977:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 3066,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2977:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 3069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2977:10:4",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2967:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3078,
                  "nodeType": "IfStatement",
                  "src": "2963:80:4",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 3071,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "2989:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3074,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3046,
                            "src": "3035:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3072,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "2998:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getNextUnderlyingEvent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4858,
                          "src": "2998:36:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32) view external returns (bytes32)"
                          }
                        },
                        "id": 3075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2998:45:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "2989:54:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3077,
                    "nodeType": "ExpressionStatement",
                    "src": "2989:54:4"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3079,
                      "name": "_event",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3059,
                      "src": "3057:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3075:1:4",
                          "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": 3081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3067:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 3080,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3067:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 3083,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3067:10:4",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3057:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3092,
                  "nodeType": "IfStatement",
                  "src": "3053:79:4",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 3085,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "3079:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3088,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3046,
                            "src": "3124:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3086,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "3088:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "popNextScheduledEvent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4903,
                          "src": "3088:35:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32) external returns (bytes32)"
                          }
                        },
                        "id": 3089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3088:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "3079:53:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3091,
                    "nodeType": "ExpressionStatement",
                    "src": "3079:53:4"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3094,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3059,
                          "src": "3224:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3242:1:4",
                              "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": 3096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3234:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 3095,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3234:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3234:10:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3224:20:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e54",
                        "id": 3100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3258:35:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_30c587f3e991161696dc17e37bfdd6528f5c0dcd4fc1dcb000389f4eb90ec1c1",
                          "typeString": "literal_string \"BaseActor.progress: NO_NEXT_EVENT\""
                        },
                        "value": "BaseActor.progress: NO_NEXT_EVENT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_30c587f3e991161696dc17e37bfdd6528f5c0dcd4fc1dcb000389f4eb90ec1c1",
                          "typeString": "literal_string \"BaseActor.progress: NO_NEXT_EVENT\""
                        }
                      ],
                      "id": 3093,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3203:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3203:100:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3102,
                  "nodeType": "ExpressionStatement",
                  "src": "3203:100:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3104,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3046,
                        "src": "3327:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3105,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3059,
                        "src": "3336:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3103,
                      "name": "processEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3370,
                      "src": "3314:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 3106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3314:29:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3107,
                  "nodeType": "ExpressionStatement",
                  "src": "3314:29:4"
                }
              ]
            },
            "documentation": {
              "id": 3044,
              "nodeType": "StructuredDocumentation",
              "src": "1983:433:4",
              "text": " @notice Proceeds with the next state of the asset based on the terms, the last state, market object data\n and the settlement status of current obligation, derived from either a prev. pending event, an event\n generated based on the current state of an underlying asset or the assets schedule.\n @dev Emits ProgressedAsset if the state of the asset was updated.\n @param assetId id of the asset"
            },
            "functionSelector": "7aebd2a8",
            "id": 3109,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "progress",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3048,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2465:8:4"
            },
            "parameters": {
              "id": 3047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3046,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3109,
                  "src": "2439:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2439:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2438:17:4"
            },
            "returnParameters": {
              "id": 3049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2474:0:4"
            },
            "scope": 3851,
            "src": "2421:929:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3867
            ],
            "body": {
              "id": 3186,
              "nodeType": "Block",
              "src": "3878:1225:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3121,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3112,
                            "src": "4007:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3122,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4016:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4016:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3119,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "3979:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasRootAccess",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4124,
                          "src": "3979:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) external returns (bool)"
                          }
                        },
                        "id": 3124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3979:48:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f6772657373576974683a20554e415554484f52495a45445f53454e444552",
                        "id": 3125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4041:45:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_75786b066d473aef0c697dbaaba723a6c48e88c9cae9c91554cc61bb24e83da7",
                          "typeString": "literal_string \"BaseActor.progressWith: UNAUTHORIZED_SENDER\""
                        },
                        "value": "BaseActor.progressWith: UNAUTHORIZED_SENDER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_75786b066d473aef0c697dbaaba723a6c48e88c9cae9c91554cc61bb24e83da7",
                          "typeString": "literal_string \"BaseActor.progressWith: UNAUTHORIZED_SENDER\""
                        }
                      ],
                      "id": 3118,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3958:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3958:138:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3127,
                  "nodeType": "ExpressionStatement",
                  "src": "3958:138:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3131,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3112,
                              "src": "4322:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3129,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3025,
                              "src": "4292:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 3130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPendingEvent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4837,
                            "src": "4292:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view external returns (bytes32)"
                            }
                          },
                          "id": 3132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4292:38:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4342:1:4",
                              "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": 3134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4334:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 3133,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4334:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4334:10:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4292:52:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f6772657373576974683a20464f554e445f50454e44494e475f4556454e54",
                        "id": 3138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4358:45:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3cb8984c750326e1fb159d5d5a86329f70cec4a29ae54dc2f6abde58e5f810d",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_PENDING_EVENT\""
                        },
                        "value": "BaseActor.progressWith: FOUND_PENDING_EVENT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3cb8984c750326e1fb159d5d5a86329f70cec4a29ae54dc2f6abde58e5f810d",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_PENDING_EVENT\""
                        }
                      ],
                      "id": 3128,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4271:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4271:142:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3140,
                  "nodeType": "ExpressionStatement",
                  "src": "4271:142:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3144,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3112,
                              "src": "4481:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3142,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3025,
                              "src": "4444:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 3143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getNextUnderlyingEvent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4858,
                            "src": "4444:36:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view external returns (bytes32)"
                            }
                          },
                          "id": 3145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4444:45:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4501:1:4",
                              "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": 3147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4493:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 3146,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4493:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4493:10:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4444:59:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f6772657373576974683a20464f554e445f554e4445524c59494e475f4556454e54",
                        "id": 3151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4517:48:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_66540f335c9545d9b8f80a59843945fec76dace16b4b536da5ba4936c03b5463",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_UNDERLYING_EVENT\""
                        },
                        "value": "BaseActor.progressWith: FOUND_UNDERLYING_EVENT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_66540f335c9545d9b8f80a59843945fec76dace16b4b536da5ba4936c03b5463",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_UNDERLYING_EVENT\""
                        }
                      ],
                      "id": 3141,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4423:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4423:152:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3153,
                  "nodeType": "ExpressionStatement",
                  "src": "4423:152:4"
                },
                {
                  "assignments": [
                    null,
                    3155
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 3155,
                      "mutability": "mutable",
                      "name": "scheduledEventScheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3186,
                      "src": "4701:34:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3154,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4701:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3162,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3159,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3112,
                            "src": "4787:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3157,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3025,
                            "src": "4751:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getNextScheduledEvent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4896,
                          "src": "4751:35:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32) view external returns (bytes32)"
                          }
                        },
                        "id": 3160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4751:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3156,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "4739:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 3161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4739:57:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4698:98:4"
                },
                {
                  "assignments": [
                    null,
                    3164
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 3164,
                      "mutability": "mutable",
                      "name": "providedEventScheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3186,
                      "src": "4809:33:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3163,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4809:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3168,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3166,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3114,
                        "src": "4858:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3165,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "4846:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 3167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4846:19:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4806:59:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3170,
                            "name": "scheduledEventScheduleTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3155,
                            "src": "4896:26:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4926:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4896:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3173,
                                "name": "providedEventScheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3164,
                                "src": "4932:25:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3174,
                                "name": "scheduledEventScheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3155,
                                "src": "4960:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4932:54:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 3176,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4931:56:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4896:91:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f6772657373576974683a20464f554e445f4541524c4945525f4556454e54",
                        "id": 3178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5001:45:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_237a5abef4ba99e05fbec096231441993ca4691f545b6f3536b234a8640dfe17",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_EARLIER_EVENT\""
                        },
                        "value": "BaseActor.progressWith: FOUND_EARLIER_EVENT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_237a5abef4ba99e05fbec096231441993ca4691f545b6f3536b234a8640dfe17",
                          "typeString": "literal_string \"BaseActor.progressWith: FOUND_EARLIER_EVENT\""
                        }
                      ],
                      "id": 3169,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4875:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4875:181:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3180,
                  "nodeType": "ExpressionStatement",
                  "src": "4875:181:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3182,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3112,
                        "src": "5080:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3183,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3114,
                        "src": "5089:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3181,
                      "name": "processEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3370,
                      "src": "5067:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 3184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5067:29:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3185,
                  "nodeType": "ExpressionStatement",
                  "src": "5067:29:4"
                }
              ]
            },
            "documentation": {
              "id": 3110,
              "nodeType": "StructuredDocumentation",
              "src": "3356:444:4",
              "text": " @notice Proceeds with the next state of the asset based on the terms, the last state, market object data\n and the settlement status of current obligation, derived from a provided (unscheduled) event\n Reverts if the provided event violates the order of events.\n @dev Emits ProgressedAsset if the state of the asset was updated.\n @param assetId id of the asset\n @param _event the unscheduled event"
            },
            "functionSelector": "6b6ba664",
            "id": 3187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "progressWith",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3116,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3869:8:4"
            },
            "parameters": {
              "id": 3115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3112,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3187,
                  "src": "3827:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3111,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3827:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3114,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3187,
                  "src": "3844:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3113,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3844:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3826:33:4"
            },
            "returnParameters": {
              "id": 3117,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3878:0:4"
            },
            "scope": 3851,
            "src": "3805:1298:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3369,
              "nodeType": "Block",
              "src": "5237:3208:4",
              "statements": [
                {
                  "assignments": [
                    3196
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3196,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "5247:18:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3195,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "5247:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3201,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3199,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "5291:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3197,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "5268:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3198,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5727,
                      "src": "5268:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct State memory)"
                      }
                    },
                    "id": 3200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5268:31:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5247:52:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "id": 3207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3203,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3196,
                                "src": "5418:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              "id": 3204,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractPerformance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22634,
                              "src": "5418:25:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3205,
                                "name": "ContractPerformance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22513,
                                "src": "5447:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                  "typeString": "type(enum ContractPerformance)"
                                }
                              },
                              "id": 3206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PF",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5447:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "src": "5418:51:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "id": 3212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3208,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3196,
                                "src": "5485:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              "id": 3209,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractPerformance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22634,
                              "src": "5485:25:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3210,
                                "name": "ContractPerformance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22513,
                                "src": "5514:19:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                  "typeString": "type(enum ContractPerformance)"
                                }
                              },
                              "id": 3211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "DL",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5514:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "src": "5485:51:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5418:118:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                            "typeString": "enum ContractPerformance"
                          },
                          "id": 3218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3214,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3196,
                              "src": "5552:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 3215,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractPerformance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22634,
                            "src": "5552:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3216,
                              "name": "ContractPerformance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22513,
                              "src": "5581:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                "typeString": "type(enum ContractPerformance)"
                              }
                            },
                            "id": 3217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "DQ",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5581:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            }
                          },
                          "src": "5552:51:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5418:185:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e70726f636573734576656e743a2041535345545f524541434845445f46494e414c5f5354415445",
                        "id": 3220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5617:51:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f2d9d8890914b4e0343aeceb25ee6e12c8728517a70331fb07cf782f58af53d3",
                          "typeString": "literal_string \"BaseActor.processEvent: ASSET_REACHED_FINAL_STATE\""
                        },
                        "value": "BaseActor.processEvent: ASSET_REACHED_FINAL_STATE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f2d9d8890914b4e0343aeceb25ee6e12c8728517a70331fb07cf782f58af53d3",
                          "typeString": "literal_string \"BaseActor.processEvent: ASSET_REACHED_FINAL_STATE\""
                        }
                      ],
                      "id": 3202,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5397:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5397:281:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3222,
                  "nodeType": "ExpressionStatement",
                  "src": "5397:281:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    },
                    "id": 3227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3223,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3196,
                        "src": "5751:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 3224,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "5751:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3225,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "5780:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 3226,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5780:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "5751:51:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3236,
                  "nodeType": "IfStatement",
                  "src": "5747:130:4",
                  "trueBody": {
                    "id": 3235,
                    "nodeType": "Block",
                    "src": "5804:73:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3228,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3196,
                            "src": "5818:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3231,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3190,
                                "src": "5858:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3229,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "5826:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 3230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getFinalizedState",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5734,
                              "src": "5826:31:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                                "typeString": "function (bytes32) view external returns (struct State memory)"
                              }
                            },
                            "id": 3232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5826:40:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "src": "5818:48:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        "id": 3234,
                        "nodeType": "ExpressionStatement",
                        "src": "5818:48:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3238,
                    3240
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3238,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "5888:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3237,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "5888:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3240,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "5909:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3239,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5909:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3244,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3242,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3192,
                        "src": "5945:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3241,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "5933:11:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 3243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5933:19:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5887:65:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3247,
                              "name": "scheduleTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3240,
                              "src": "6190:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3251,
                                      "name": "assetId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3190,
                                      "src": "6286:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "627573696e657373446179436f6e76656e74696f6e",
                                      "id": 3252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6295:23:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                        "typeString": "literal_string \"businessDayConvention\""
                                      },
                                      "value": "businessDayConvention"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                        "typeString": "literal_string \"businessDayConvention\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3249,
                                      "name": "assetRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3025,
                                      "src": "6242:13:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                        "typeString": "contract IAssetRegistry"
                                      }
                                    },
                                    "id": 3250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getEnumValueForTermsAttribute",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6830,
                                    "src": "6242:43:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                      "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                                    }
                                  },
                                  "id": 3253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6242:77:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 3248,
                                "name": "BusinessDayConvention",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22503,
                                "src": "6220:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                  "typeString": "type(enum BusinessDayConvention)"
                                }
                              },
                              "id": 3254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6220:100:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3258,
                                      "name": "assetId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3190,
                                      "src": "6391:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "63616c656e646172",
                                      "id": 3259,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6400:10:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                        "typeString": "literal_string \"calendar\""
                                      },
                                      "value": "calendar"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                        "typeString": "literal_string \"calendar\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3256,
                                      "name": "assetRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3025,
                                      "src": "6347:13:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                        "typeString": "contract IAssetRegistry"
                                      }
                                    },
                                    "id": 3257,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getEnumValueForTermsAttribute",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6830,
                                    "src": "6347:43:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                      "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                                    }
                                  },
                                  "id": 3260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6347:64:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 3255,
                                "name": "Calendar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22506,
                                "src": "6338:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                                  "typeString": "type(enum Calendar)"
                                }
                              },
                              "id": 3261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6338:74:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Calendar_$22506",
                                "typeString": "enum Calendar"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3264,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3190,
                                  "src": "6474:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6d6174757269747944617465",
                                  "id": 3265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6483:14:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                                    "typeString": "literal_string \"maturityDate\""
                                  },
                                  "value": "maturityDate"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                                    "typeString": "literal_string \"maturityDate\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3262,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "6430:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 3263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getUIntValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6857,
                                "src": "6430:43:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                                }
                              },
                              "id": 3266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6430:68:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              },
                              {
                                "typeIdentifier": "t_enum$_Calendar_$22506",
                                "typeString": "enum Calendar"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3246,
                            "name": "shiftEventTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23182,
                            "src": "6158:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6158:354:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3268,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "6516:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6516:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6158:373:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e545f4e4f545f5945545f5343484544554c4544",
                        "id": 3271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6545:53:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c0fa582723c6c77df03eb53b0a6f2785bdcb5cce41adbf598a2df8366364f08b",
                          "typeString": "literal_string \"ANNActor.processEvent: NEXT_EVENT_NOT_YET_SCHEDULED\""
                        },
                        "value": "ANNActor.processEvent: NEXT_EVENT_NOT_YET_SCHEDULED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c0fa582723c6c77df03eb53b0a6f2785bdcb5cce41adbf598a2df8366364f08b",
                          "typeString": "literal_string \"ANNActor.processEvent: NEXT_EVENT_NOT_YET_SCHEDULED\""
                        }
                      ],
                      "id": 3245,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6097:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6097:511:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3273,
                  "nodeType": "ExpressionStatement",
                  "src": "6097:511:4"
                },
                {
                  "assignments": [
                    3275,
                    3277
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3275,
                      "mutability": "mutable",
                      "name": "nextState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "6756:22:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3274,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "6756:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3277,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "6780:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 3276,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6780:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3283,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3279,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "6827:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3280,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3196,
                        "src": "6836:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3281,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3192,
                        "src": "6843:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3278,
                      "name": "computeStateAndPayoffForEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3563,
                      "src": "6797:29:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                        "typeString": "function (bytes32,struct State memory,bytes32) view returns (struct State memory,int256)"
                      }
                    },
                    "id": 3282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6797:53:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6755:95:4"
                },
                {
                  "assignments": [
                    3285
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3285,
                      "mutability": "mutable",
                      "name": "settledPayoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3369,
                      "src": "6902:18:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3284,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6902:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3291,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3287,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "6944:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3288,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3192,
                        "src": "6953:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3289,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "6961:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 3286,
                      "name": "settlePayoffForEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3550,
                      "src": "6923:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                        "typeString": "function (bytes32,bytes32,int256) returns (bool)"
                      }
                    },
                    "id": 3290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6923:45:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6902:66:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3292,
                      "name": "settledPayoff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3285,
                      "src": "6983:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 3293,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7000:5:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "6983:22:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3334,
                  "nodeType": "IfStatement",
                  "src": "6979:974:4",
                  "trueBody": {
                    "id": 3333,
                    "nodeType": "Block",
                    "src": "7007:946:4",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                            "typeString": "enum ContractPerformance"
                          },
                          "id": 3299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3295,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3196,
                              "src": "7376:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 3296,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractPerformance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22634,
                            "src": "7376:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3297,
                              "name": "ContractPerformance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22513,
                              "src": "7405:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                "typeString": "type(enum ContractPerformance)"
                              }
                            },
                            "id": 3298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7405:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            }
                          },
                          "src": "7376:51:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3308,
                        "nodeType": "IfStatement",
                        "src": "7372:137:4",
                        "trueBody": {
                          "id": 3307,
                          "nodeType": "Block",
                          "src": "7429:80:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3303,
                                    "name": "assetId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3190,
                                    "src": "7479:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3304,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3196,
                                    "src": "7488:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3300,
                                    "name": "assetRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3025,
                                    "src": "7447:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                      "typeString": "contract IAssetRegistry"
                                    }
                                  },
                                  "id": 3302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setFinalizedState",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5775,
                                  "src": "7447:31:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes32,struct State memory) external"
                                  }
                                },
                                "id": 3305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7447:47:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3306,
                              "nodeType": "ExpressionStatement",
                              "src": "7447:47:4"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3312,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3190,
                              "src": "7620:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3313,
                              "name": "_event",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3192,
                              "src": "7629:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3309,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3025,
                              "src": "7589:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 3311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pushPendingEvent",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4844,
                            "src": "7589:30:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32) external"
                            }
                          },
                          "id": 3314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7589:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3315,
                        "nodeType": "ExpressionStatement",
                        "src": "7589:47:4"
                      },
                      {
                        "assignments": [
                          3317
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3317,
                            "mutability": "mutable",
                            "name": "ceEvent",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3333,
                            "src": "7685:15:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3316,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7685:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3323,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3319,
                                "name": "EventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22610,
                                "src": "7715:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                  "typeString": "type(enum EventType)"
                                }
                              },
                              "id": 3320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "CE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7715:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3321,
                              "name": "scheduleTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3240,
                              "src": "7729:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3318,
                            "name": "encodeEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24702,
                            "src": "7703:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 3322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7703:39:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7685:57:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3324,
                                "name": "nextState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3275,
                                "src": "7869:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              null
                            ],
                            "id": 3325,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "7868:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$__$",
                              "typeString": "tuple(struct State memory,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3327,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3190,
                                "src": "7914:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3328,
                                "name": "nextState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3275,
                                "src": "7923:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3329,
                                "name": "ceEvent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3317,
                                "src": "7934:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 3326,
                              "name": "computeStateAndPayoffForEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3563,
                              "src": "7884:29:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                                "typeString": "function (bytes32,struct State memory,bytes32) view returns (struct State memory,int256)"
                              }
                            },
                            "id": 3330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7884:58:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                              "typeString": "tuple(struct State memory,int256)"
                            }
                          },
                          "src": "7868:74:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3332,
                        "nodeType": "ExpressionStatement",
                        "src": "7868:74:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3338,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "8023:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3339,
                        "name": "nextState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3275,
                        "src": "8032:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3335,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "8000:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5768,
                      "src": "8000:22:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct State memory) external"
                      }
                    },
                    "id": 3340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8000:42:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3341,
                  "nodeType": "ExpressionStatement",
                  "src": "8000:42:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3342,
                      "name": "settledPayoff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3285,
                      "src": "8090:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8107:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8090:21:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3354,
                  "nodeType": "IfStatement",
                  "src": "8086:109:4",
                  "trueBody": {
                    "id": 3353,
                    "nodeType": "Block",
                    "src": "8113:82:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3348,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3190,
                              "src": "8160:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3349,
                              "name": "_event",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3192,
                              "src": "8169:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3350,
                              "name": "payoff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "8177:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3345,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3025,
                              "src": "8127:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 3347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "markEventAsSettled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4923,
                            "src": "8127:32:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_int256_$returns$__$",
                              "typeString": "function (bytes32,bytes32,int256) external"
                            }
                          },
                          "id": 3351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8127:57:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3352,
                        "nodeType": "ExpressionStatement",
                        "src": "8127:57:4"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3356,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3190,
                        "src": "8239:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3357,
                                "name": "settledPayoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3285,
                                "src": "8333:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 3358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8350:4:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "8333:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 3360,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8332:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3362,
                            "name": "EventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22610,
                            "src": "8370:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                              "typeString": "type(enum EventType)"
                            }
                          },
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "CE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8370:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          }
                        },
                        "id": 3364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "8332:50:4",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 3361,
                          "name": "eventType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3238,
                          "src": "8358:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3365,
                        "name": "scheduleTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3240,
                        "src": "8396:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3366,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "8422:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 3355,
                      "name": "ProgressedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3017,
                      "src": "8210:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$_t_int256_$returns$__$",
                        "typeString": "function (bytes32,enum EventType,uint256,int256)"
                      }
                    },
                    "id": 3367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8210:228:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3368,
                  "nodeType": "EmitStatement",
                  "src": "8205:233:4"
                }
              ]
            },
            "documentation": {
              "id": 3188,
              "nodeType": "StructuredDocumentation",
              "src": "5109:59:4",
              "text": " @notice Return true if event was settled"
            },
            "id": 3370,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "processEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3193,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3190,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3370,
                  "src": "5195:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3189,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5195:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3192,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3370,
                  "src": "5212:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3191,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5212:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5194:33:4"
            },
            "returnParameters": {
              "id": 3194,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5237:0:4"
            },
            "scope": 3851,
            "src": "5173:3272:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3549,
              "nodeType": "Block",
              "src": "8991:2255:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3383,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3373,
                            "src": "9022:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9041:1:4",
                                "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": 3385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9033:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3384,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "9033:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9033:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9022:21:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3389,
                            "name": "_event",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3375,
                            "src": "9047:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9065:1:4",
                                "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": 3391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9057:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3390,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "9057:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9057:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9047:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "9022:45:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "426173654163746f722e736574746c655061796f6666466f724576656e743a20494e56414c49445f46554e4354494f4e5f504152414d4554455253",
                        "id": 3396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9081:61:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_95a9d6e9d513196b9cd7a3a9ba103c38990aee5d561d1cfc908624b18cefc268",
                          "typeString": "literal_string \"BaseActor.settlePayoffForEvent: INVALID_FUNCTION_PARAMETERS\""
                        },
                        "value": "BaseActor.settlePayoffForEvent: INVALID_FUNCTION_PARAMETERS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_95a9d6e9d513196b9cd7a3a9ba103c38990aee5d561d1cfc908624b18cefc268",
                          "typeString": "literal_string \"BaseActor.settlePayoffForEvent: INVALID_FUNCTION_PARAMETERS\""
                        }
                      ],
                      "id": 3382,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9001:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9001:151:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3398,
                  "nodeType": "ExpressionStatement",
                  "src": "9001:151:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 3401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3399,
                      "name": "payoff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3377,
                      "src": "9211:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9221:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9211:11:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3404,
                  "nodeType": "IfStatement",
                  "src": "9207:28:4",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9231:4:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "functionReturnParameters": 3381,
                    "id": 3403,
                    "nodeType": "Return",
                    "src": "9224:11:4"
                  }
                },
                {
                  "assignments": [
                    3406
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3406,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9348:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3405,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9348:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3412,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3409,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3373,
                        "src": "9411:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63757272656e6379",
                        "id": 3410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9420:10:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        },
                        "value": "currency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3407,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "9364:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3408,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAddressValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6839,
                      "src": "9364:46:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 3411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9364:67:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9348:83:4"
                },
                {
                  "assignments": [
                    3414
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3414,
                      "mutability": "mutable",
                      "name": "contractReference_2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9441:44:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                        "typeString": "struct ContractReference"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3413,
                        "name": "ContractReference",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22632,
                        "src": "9441:17:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                          "typeString": "struct ContractReference"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3420,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3417,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3373,
                        "src": "9558:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e74726163745265666572656e63655f32",
                        "id": 3418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9579:21:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_01acef38074a0e0d5976473f7e34539badf35a9665d3e6a9e9fe377f17f1ea4f",
                          "typeString": "literal_string \"contractReference_2\""
                        },
                        "value": "contractReference_2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_01acef38074a0e0d5976473f7e34539badf35a9665d3e6a9e9fe377f17f1ea4f",
                          "typeString": "literal_string \"contractReference_2\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3415,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "9488:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getContractReferenceValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6893,
                      "src": "9488:56:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) view external returns (struct ContractReference memory)"
                      }
                    },
                    "id": 3419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9488:122:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9441:169:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                      "typeString": "enum ContractReferenceRole"
                    },
                    "id": 3425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3421,
                        "name": "contractReference_2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3414,
                        "src": "9624:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                          "typeString": "struct ContractReference memory"
                        }
                      },
                      "id": 3422,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22631,
                      "src": "9624:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3423,
                        "name": "ContractReferenceRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22525,
                        "src": "9652:21:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                          "typeString": "type(enum ContractReferenceRole)"
                        }
                      },
                      "id": 3424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "COVI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9652:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "src": "9624:54:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3435,
                  "nodeType": "IfStatement",
                  "src": "9620:147:4",
                  "trueBody": {
                    "id": 3434,
                    "nodeType": "Block",
                    "src": "9680:87:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3426,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3406,
                                "src": "9695:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              null
                            ],
                            "id": 3427,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "9694:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$__$",
                              "typeString": "tuple(address,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3429,
                                  "name": "contractReference_2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3414,
                                  "src": "9729:19:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                    "typeString": "struct ContractReference memory"
                                  }
                                },
                                "id": 3430,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22625,
                                "src": "9729:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 3428,
                              "name": "decodeCollateralObject",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7054,
                              "src": "9706:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$_t_uint256_$",
                                "typeString": "function (bytes32) pure returns (address,uint256)"
                              }
                            },
                            "id": 3431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9706:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                              "typeString": "tuple(address,uint256)"
                            }
                          },
                          "src": "9694:62:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3433,
                        "nodeType": "ExpressionStatement",
                        "src": "9694:62:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3437,
                      "mutability": "mutable",
                      "name": "ownership",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9777:31:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                        "typeString": "struct AssetOwnership"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3436,
                        "name": "AssetOwnership",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7849,
                        "src": "9777:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                          "typeString": "struct AssetOwnership"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3442,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3440,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3373,
                        "src": "9838:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3438,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "9811:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3439,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4578,
                      "src": "9811:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_AssetOwnership_$7849_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct AssetOwnership memory)"
                      }
                    },
                    "id": 3441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9811:35:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                      "typeString": "struct AssetOwnership memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9777:69:4"
                },
                {
                  "assignments": [
                    3444
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3444,
                      "mutability": "mutable",
                      "name": "payee",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9948:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3443,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9948:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3445,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9948:13:4"
                },
                {
                  "assignments": [
                    3447
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3447,
                      "mutability": "mutable",
                      "name": "payer",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "9971:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3446,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9971:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3448,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9971:13:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 3451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3449,
                      "name": "payoff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3377,
                      "src": "9998:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3450,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10007:1:4",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9998:10:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3489,
                    "nodeType": "Block",
                    "src": "10342:326:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3471,
                            "name": "payer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "10420:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3472,
                              "name": "ownership",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3437,
                              "src": "10428:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                "typeString": "struct AssetOwnership memory"
                              }
                            },
                            "id": 3473,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creatorObligor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7842,
                            "src": "10428:24:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10420:32:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3475,
                        "nodeType": "ExpressionStatement",
                        "src": "10420:32:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3476,
                            "name": "payee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "10563:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10580:1:4",
                                "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": 3478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10572:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3477,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10572:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10572:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10563:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3488,
                        "nodeType": "IfStatement",
                        "src": "10559:99:4",
                        "trueBody": {
                          "id": 3487,
                          "nodeType": "Block",
                          "src": "10584:74:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3482,
                                  "name": "payee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3444,
                                  "src": "10602:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3483,
                                    "name": "ownership",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3437,
                                    "src": "10610:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                      "typeString": "struct AssetOwnership memory"
                                    }
                                  },
                                  "id": 3484,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "counterpartyBeneficiary",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7848,
                                  "src": "10610:33:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10602:41:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3486,
                              "nodeType": "ExpressionStatement",
                              "src": "10602:41:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3490,
                  "nodeType": "IfStatement",
                  "src": "9994:674:4",
                  "trueBody": {
                    "id": 3470,
                    "nodeType": "Block",
                    "src": "10010:326:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3452,
                            "name": "payer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "10088:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3453,
                              "name": "ownership",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3437,
                              "src": "10096:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                "typeString": "struct AssetOwnership memory"
                              }
                            },
                            "id": 3454,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "counterpartyObligor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7846,
                            "src": "10096:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10088:37:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3456,
                        "nodeType": "ExpressionStatement",
                        "src": "10088:37:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3457,
                            "name": "payee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3444,
                            "src": "10236:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10253:1:4",
                                "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": 3459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10245:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3458,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10245:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10245:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10236:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3469,
                        "nodeType": "IfStatement",
                        "src": "10232:94:4",
                        "trueBody": {
                          "id": 3468,
                          "nodeType": "Block",
                          "src": "10257:69:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3466,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3463,
                                  "name": "payee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3444,
                                  "src": "10275:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3464,
                                    "name": "ownership",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3437,
                                    "src": "10283:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_memory_ptr",
                                      "typeString": "struct AssetOwnership memory"
                                    }
                                  },
                                  "id": 3465,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "creatorBeneficiary",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7844,
                                  "src": "10283:28:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10275:36:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3467,
                              "nodeType": "ExpressionStatement",
                              "src": "10275:36:4"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3492
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3492,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3549,
                      "src": "10727:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3491,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10727:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3509,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3493,
                            "name": "payoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3377,
                            "src": "10745:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10754:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10745:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 3496,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "10744:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3503,
                            "name": "payoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3377,
                            "src": "10785:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "10794:2:4",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10795:1:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          },
                          "src": "10785:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 3502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10777:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 3501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10777:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 3507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10777:20:4",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "10744:53:4",
                    "trueExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3499,
                          "name": "payoff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3377,
                          "src": "10767:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 3498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10759:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 3497,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10759:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 3500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10759:15:4",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10727:70:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3521,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3514,
                            "name": "payer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "10946:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3517,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "10961:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BaseActor_$3851",
                                  "typeString": "contract BaseActor"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BaseActor_$3851",
                                  "typeString": "contract BaseActor"
                                }
                              ],
                              "id": 3516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10953:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3515,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10953:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10953:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3511,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3406,
                                "src": "10929:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3510,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39445,
                              "src": "10922:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 3512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10922:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$39445",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "allowance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 39404,
                          "src": "10922:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address,address) view external returns (uint256)"
                          }
                        },
                        "id": 3519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10922:45:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3520,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3492,
                        "src": "10970:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10922:54:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3526,
                            "name": "payer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "11004:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3523,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3406,
                                "src": "10987:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3522,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39445,
                              "src": "10980:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 3524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10980:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$39445",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 39384,
                          "src": "10980:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 3527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10980:30:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3528,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3492,
                        "src": "11013:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10980:39:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10922:97:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3539,
                  "nodeType": "IfStatement",
                  "src": "10918:196:4",
                  "trueBody": {
                    "id": 3538,
                    "nodeType": "Block",
                    "src": "11021:93:4",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3532,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3373,
                              "src": "11047:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e53554646494349454e545f46554e4453",
                              "id": 3533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11056:20:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_292ddc23e79f5a4f6e48dc7ac9f5dc6912d137767d4f92ed78c3842d7550ed2d",
                                "typeString": "literal_string \"INSUFFICIENT_FUNDS\""
                              },
                              "value": "INSUFFICIENT_FUNDS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_292ddc23e79f5a4f6e48dc7ac9f5dc6912d137767d4f92ed78c3842d7550ed2d",
                                "typeString": "literal_string \"INSUFFICIENT_FUNDS\""
                              }
                            ],
                            "id": 3531,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3023,
                            "src": "11040:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32)"
                            }
                          },
                          "id": 3534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11040:37:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3535,
                        "nodeType": "EmitStatement",
                        "src": "11035:42:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 3536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11098:5:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 3381,
                        "id": 3537,
                        "nodeType": "Return",
                        "src": "11091:12:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3544,
                        "name": "payer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3447,
                        "src": "11218:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3545,
                        "name": "payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3444,
                        "src": "11225:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3546,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3492,
                        "src": "11232:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3541,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3406,
                            "src": "11198:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3540,
                          "name": "IERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39445,
                          "src": "11191:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                            "typeString": "type(contract IERC20)"
                          }
                        },
                        "id": 3542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11191:13:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$39445",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 3543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39426,
                      "src": "11191:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) external returns (bool)"
                      }
                    },
                    "id": 3547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11191:48:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3381,
                  "id": 3548,
                  "nodeType": "Return",
                  "src": "11184:55:4"
                }
              ]
            },
            "documentation": {
              "id": 3371,
              "nodeType": "StructuredDocumentation",
              "src": "8451:383:4",
              "text": " @notice Routes a payment to the designated beneficiary of the event obligation.\n @dev Checks if an owner of the specified cashflowId is set, if not it sends\n funds to the default beneficiary.\n @param assetId id of the asset which the payment relates to\n @param _event _event to settle the payoff for\n @param payoff payoff of the event"
            },
            "id": 3550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "settlePayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3373,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3550,
                  "src": "8878:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3372,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8878:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3375,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3550,
                  "src": "8903:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3374,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8903:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3377,
                  "mutability": "mutable",
                  "name": "payoff",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3550,
                  "src": "8927:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3376,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8927:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8868:78:4"
            },
            "returnParameters": {
              "id": 3381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3380,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3550,
                  "src": "8981:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3379,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8981:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8980:6:4"
            },
            "scope": 3851,
            "src": "8839:2407:4",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": null,
            "documentation": null,
            "id": 3563,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3552,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11291:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3551,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11291:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3554,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11308:18:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3553,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11308:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3556,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11328:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3555,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11328:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11290:53:4"
            },
            "returnParameters": {
              "id": 3562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3559,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11407:12:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3558,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11407:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3561,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3563,
                  "src": "11421:6:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3560,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11421:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11406:22:4"
            },
            "scope": 3851,
            "src": "11252:177:4",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3792,
              "nodeType": "Block",
              "src": "11787:3247:4",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 3578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3575,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3568,
                      "src": "11801:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3576,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11814:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 3577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11814:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11801:25:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "id": 3604,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3601,
                        "name": "eventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3568,
                        "src": "12156:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3602,
                          "name": "EventType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22610,
                          "src": "12169:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                            "typeString": "type(enum EventType)"
                          }
                        },
                        "id": 3603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CE",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12169:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "src": "12156:25:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        "id": 3615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3612,
                          "name": "eventType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3568,
                          "src": "12326:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3613,
                            "name": "EventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22610,
                            "src": "12339:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                              "typeString": "type(enum EventType)"
                            }
                          },
                          "id": 3614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "XD",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12339:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          }
                        },
                        "src": "12326:25:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "id": 3716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3713,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3568,
                            "src": "13903:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3714,
                              "name": "EventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22610,
                              "src": "13916:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                "typeString": "type(enum EventType)"
                              }
                            },
                            "id": 3715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "RFD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13916:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "src": "13903:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3783,
                        "nodeType": "IfStatement",
                        "src": "13899:1101:4",
                        "trueBody": {
                          "id": 3782,
                          "nodeType": "Block",
                          "src": "13931:1069:4",
                          "statements": [
                            {
                              "assignments": [
                                3718
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3718,
                                  "mutability": "mutable",
                                  "name": "contractReference_1",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3782,
                                  "src": "13945:44:4",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                    "typeString": "struct ContractReference"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 3717,
                                    "name": "ContractReference",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22632,
                                    "src": "13945:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                                      "typeString": "struct ContractReference"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3724,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3721,
                                    "name": "assetId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3566,
                                    "src": "14066:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636f6e74726163745265666572656e63655f31",
                                    "id": 3722,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14091:21:4",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                                      "typeString": "literal_string \"contractReference_1\""
                                    },
                                    "value": "contractReference_1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                                      "typeString": "literal_string \"contractReference_1\""
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3719,
                                    "name": "assetRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3025,
                                    "src": "13992:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                      "typeString": "contract IAssetRegistry"
                                    }
                                  },
                                  "id": 3720,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getContractReferenceValueForTermsAttribute",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6893,
                                  "src": "13992:56:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                                    "typeString": "function (bytes32,bytes32) view external returns (struct ContractReference memory)"
                                  }
                                },
                                "id": 3723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13992:134:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                  "typeString": "struct ContractReference memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13945:181:4"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                    "typeString": "enum ContractReferenceType"
                                  },
                                  "id": 3729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3725,
                                      "name": "contractReference_1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3718,
                                      "src": "14161:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                        "typeString": "struct ContractReference memory"
                                      }
                                    },
                                    "id": 3726,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_type",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22629,
                                    "src": "14161:25:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                      "typeString": "enum ContractReferenceType"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3727,
                                      "name": "ContractReferenceType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22519,
                                      "src": "14190:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ContractReferenceType_$22519_$",
                                        "typeString": "type(enum ContractReferenceType)"
                                      }
                                    },
                                    "id": 3728,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "MOC",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14190:25:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                      "typeString": "enum ContractReferenceType"
                                    }
                                  },
                                  "src": "14161:54:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                    "typeString": "enum ContractReferenceRole"
                                  },
                                  "id": 3734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3730,
                                      "name": "contractReference_1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3718,
                                      "src": "14235:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                        "typeString": "struct ContractReference memory"
                                      }
                                    },
                                    "id": 3731,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "role",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22631,
                                    "src": "14235:24:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                      "typeString": "enum ContractReferenceRole"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3732,
                                      "name": "ContractReferenceRole",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22525,
                                      "src": "14263:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                                        "typeString": "type(enum ContractReferenceRole)"
                                      }
                                    },
                                    "id": 3733,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "UDL",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14263:25:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                      "typeString": "enum ContractReferenceRole"
                                    }
                                  },
                                  "src": "14235:53:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "14161:127:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3776,
                              "nodeType": "IfStatement",
                              "src": "14140:819:4",
                              "trueBody": {
                                "id": 3775,
                                "nodeType": "Block",
                                "src": "14303:656:4",
                                "statements": [
                                  {
                                    "assignments": [
                                      3737,
                                      3739
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 3737,
                                        "mutability": "mutable",
                                        "name": "redemptionAmountScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 3775,
                                        "src": "14322:35:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "typeName": {
                                          "id": 3736,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14322:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 3739,
                                        "mutability": "mutable",
                                        "name": "isSetScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 3775,
                                        "src": "14359:22:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "typeName": {
                                          "id": 3738,
                                          "name": "bool",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14359:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 3746,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3742,
                                            "name": "contractReference_1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3718,
                                            "src": "14432:19:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                              "typeString": "struct ContractReference memory"
                                            }
                                          },
                                          "id": 3743,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "object",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22625,
                                          "src": "14432:26:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3744,
                                          "name": "timestamp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3570,
                                          "src": "14480:9:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3740,
                                          "name": "dataRegistry",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3027,
                                          "src": "14385:12:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                            "typeString": "contract IDataRegistry"
                                          }
                                        },
                                        "id": 3741,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getDataPoint",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7765,
                                        "src": "14385:25:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                                          "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                                        }
                                      },
                                      "id": 3745,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14385:122:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                                        "typeString": "tuple(int256,bool)"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14321:186:4"
                                  },
                                  {
                                    "assignments": [
                                      3748,
                                      3750
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 3748,
                                        "mutability": "mutable",
                                        "name": "redemptionAmountAnchorDate",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 3775,
                                        "src": "14526:33:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "typeName": {
                                          "id": 3747,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14526:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 3750,
                                        "mutability": "mutable",
                                        "name": "isSetAnchorDate",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 3775,
                                        "src": "14561:20:4",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "typeName": {
                                          "id": 3749,
                                          "name": "bool",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14561:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 3761,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3753,
                                            "name": "contractReference_1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3718,
                                            "src": "14632:19:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                              "typeString": "struct ContractReference memory"
                                            }
                                          },
                                          "id": 3754,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "object",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22625,
                                          "src": "14632:26:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3757,
                                              "name": "assetId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3566,
                                              "src": "14724:7:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "697373756544617465",
                                              "id": 3758,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "14733:11:4",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_6076d2bbe55ad3c4b6ee7953ef9ae2e5b181f22d3eba84d569dbda4b99713e82",
                                                "typeString": "literal_string \"issueDate\""
                                              },
                                              "value": "issueDate"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_stringliteral_6076d2bbe55ad3c4b6ee7953ef9ae2e5b181f22d3eba84d569dbda4b99713e82",
                                                "typeString": "literal_string \"issueDate\""
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 3755,
                                              "name": "assetRegistry",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3025,
                                              "src": "14680:13:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                                "typeString": "contract IAssetRegistry"
                                              }
                                            },
                                            "id": 3756,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getUIntValueForTermsAttribute",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6857,
                                            "src": "14680:43:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                              "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                                            }
                                          },
                                          "id": 3759,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14680:65:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3751,
                                          "name": "dataRegistry",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3027,
                                          "src": "14585:12:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                            "typeString": "contract IDataRegistry"
                                          }
                                        },
                                        "id": 3752,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getDataPoint",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7765,
                                        "src": "14585:25:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                                          "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                                        }
                                      },
                                      "id": 3760,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14585:178:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                                        "typeString": "tuple(int256,bool)"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14525:238:4"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 3764,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3762,
                                        "name": "isSetScheduleTime",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3739,
                                        "src": "14785:17:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3763,
                                        "name": "isSetAnchorDate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3750,
                                        "src": "14806:15:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "14785:36:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 3774,
                                    "nodeType": "IfStatement",
                                    "src": "14781:164:4",
                                    "trueBody": {
                                      "id": 3773,
                                      "nodeType": "Block",
                                      "src": "14823:122:4",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 3769,
                                                    "name": "redemptionAmountAnchorDate",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3748,
                                                    "src": "14898:26:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 3767,
                                                    "name": "redemptionAmountScheduleTime",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3737,
                                                    "src": "14860:28:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  },
                                                  "id": 3768,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "floatDiv",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 24193,
                                                  "src": "14860:37:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                  }
                                                },
                                                "id": 3770,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14860:65:4",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "id": 3766,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "14852:7:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes32_$",
                                                "typeString": "type(bytes32)"
                                              },
                                              "typeName": {
                                                "id": 3765,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14852:7:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 3771,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14852:74:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "functionReturnParameters": 3574,
                                          "id": 3772,
                                          "nodeType": "Return",
                                          "src": "14845:81:4"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3779,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14987:1:4",
                                    "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": 3778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14979:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 3777,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14979:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14979:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 3574,
                              "id": 3781,
                              "nodeType": "Return",
                              "src": "14972:17:4"
                            }
                          ]
                        }
                      },
                      "id": 3784,
                      "nodeType": "IfStatement",
                      "src": "12322:2678:4",
                      "trueBody": {
                        "id": 3712,
                        "nodeType": "Block",
                        "src": "12353:1540:4",
                        "statements": [
                          {
                            "assignments": [
                              3617
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3617,
                                "mutability": "mutable",
                                "name": "contractReference_1",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3712,
                                "src": "12438:44:4",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                  "typeString": "struct ContractReference"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3616,
                                  "name": "ContractReference",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 22632,
                                  "src": "12438:17:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                                    "typeString": "struct ContractReference"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3623,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3620,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3566,
                                  "src": "12559:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "636f6e74726163745265666572656e63655f31",
                                  "id": 3621,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12584:21:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                                    "typeString": "literal_string \"contractReference_1\""
                                  },
                                  "value": "contractReference_1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                                    "typeString": "literal_string \"contractReference_1\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3618,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "12485:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 3619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getContractReferenceValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6893,
                                "src": "12485:56:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (struct ContractReference memory)"
                                }
                              },
                              "id": 3622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12485:134:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                "typeString": "struct ContractReference memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12438:181:4"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                "typeString": "enum ContractReferenceRole"
                              },
                              "id": 3628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3624,
                                  "name": "contractReference_1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3617,
                                  "src": "12637:19:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                    "typeString": "struct ContractReference memory"
                                  }
                                },
                                "id": 3625,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "role",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22631,
                                "src": "12637:24:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                  "typeString": "enum ContractReferenceRole"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3626,
                                  "name": "ContractReferenceRole",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22525,
                                  "src": "12665:21:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                                    "typeString": "type(enum ContractReferenceRole)"
                                  }
                                },
                                "id": 3627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "COVE",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12665:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                  "typeString": "enum ContractReferenceRole"
                                }
                              },
                              "src": "12637:54:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 3672,
                            "nodeType": "IfStatement",
                            "src": "12633:639:4",
                            "trueBody": {
                              "id": 3671,
                              "nodeType": "Block",
                              "src": "12693:579:4",
                              "statements": [
                                {
                                  "assignments": [
                                    3630
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3630,
                                      "mutability": "mutable",
                                      "name": "underlyingAssetId",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3671,
                                      "src": "12711:25:4",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "typeName": {
                                        "id": 3629,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12711:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3633,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3631,
                                      "name": "contractReference_1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3617,
                                      "src": "12739:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                        "typeString": "struct ContractReference memory"
                                      }
                                    },
                                    "id": 3632,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "object",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22625,
                                    "src": "12739:26:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "12711:54:4"
                                },
                                {
                                  "assignments": [
                                    3635
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3635,
                                      "mutability": "mutable",
                                      "name": "underlyingRegistry",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3671,
                                      "src": "12783:26:4",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "typeName": {
                                        "id": 3634,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12783:7:4",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3647,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 3642,
                                                  "name": "contractReference_1",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3617,
                                                  "src": "12836:19:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                                    "typeString": "struct ContractReference memory"
                                                  }
                                                },
                                                "id": 3643,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "object2",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 22627,
                                                "src": "12836:27:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "id": 3641,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "12828:7:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 3640,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "12828:7:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 3644,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12828:36:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 3639,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "12820:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 3638,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12820:7:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 3645,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12820:45:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 3637,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12812:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3636,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12812:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12812:54:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "12783:83:4"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 3656,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3653,
                                              "name": "underlyingAssetId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3630,
                                              "src": "12961:17:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 3650,
                                                  "name": "underlyingRegistry",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3635,
                                                  "src": "12928:18:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 3649,
                                                "name": "IAssetRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4500,
                                                "src": "12913:14:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IAssetRegistry_$4500_$",
                                                  "typeString": "type(contract IAssetRegistry)"
                                                }
                                              },
                                              "id": 3651,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "12913:34:4",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                                "typeString": "contract IAssetRegistry"
                                              }
                                            },
                                            "id": 3652,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "isRegistered",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4510,
                                            "src": "12913:47:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                                              "typeString": "function (bytes32) view external returns (bool)"
                                            }
                                          },
                                          "id": 3654,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12913:66:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "74727565",
                                          "id": 3655,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12983:4:4",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        },
                                        "src": "12913:74:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "426173654163746f722e67657445787465726e616c44617461466f725354463a2041535345545f444f45535f4e4f545f4558495354",
                                        "id": 3657,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13009:55:4",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_4fe404e1cc72848e501a6265fcd5480374321a669da571be5729083f292c8e58",
                                          "typeString": "literal_string \"BaseActor.getExternalDataForSTF: ASSET_DOES_NOT_EXIST\""
                                        },
                                        "value": "BaseActor.getExternalDataForSTF: ASSET_DOES_NOT_EXIST"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_4fe404e1cc72848e501a6265fcd5480374321a669da571be5729083f292c8e58",
                                          "typeString": "literal_string \"BaseActor.getExternalDataForSTF: ASSET_DOES_NOT_EXIST\""
                                        }
                                      ],
                                      "id": 3648,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "12884:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 3658,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12884:198:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3659,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12884:198:4"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 3666,
                                            "name": "underlyingAssetId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3630,
                                            "src": "13200:17:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "6e6f74696f6e616c5072696e636970616c",
                                            "id": 3667,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13219:19:4",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_e2fff6dcb62db100a261b355ab60197116fe802903e74d960566f166da38c4d7",
                                              "typeString": "literal_string \"notionalPrincipal\""
                                            },
                                            "value": "notionalPrincipal"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_e2fff6dcb62db100a261b355ab60197116fe802903e74d960566f166da38c4d7",
                                              "typeString": "literal_string \"notionalPrincipal\""
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 3663,
                                                "name": "underlyingRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3635,
                                                "src": "13151:18:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 3662,
                                              "name": "IAssetRegistry",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4500,
                                              "src": "13136:14:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IAssetRegistry_$4500_$",
                                                "typeString": "type(contract IAssetRegistry)"
                                              }
                                            },
                                            "id": 3664,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13136:34:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                              "typeString": "contract IAssetRegistry"
                                            }
                                          },
                                          "id": 3665,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getIntValueForStateAttribute",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5752,
                                          "src": "13136:63:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                                            "typeString": "function (bytes32,bytes32) view external returns (int256)"
                                          }
                                        },
                                        "id": 3668,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13136:103:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "id": 3661,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13107:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 3660,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13107:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3669,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13107:150:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "functionReturnParameters": 3574,
                                  "id": 3670,
                                  "nodeType": "Return",
                                  "src": "13100:157:4"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              3674
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3674,
                                "mutability": "mutable",
                                "name": "contractReference_2",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3712,
                                "src": "13285:44:4",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                  "typeString": "struct ContractReference"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3673,
                                  "name": "ContractReference",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 22632,
                                  "src": "13285:17:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                                    "typeString": "struct ContractReference"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3680,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3677,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3566,
                                  "src": "13406:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "636f6e74726163745265666572656e63655f32",
                                  "id": 3678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13431:21:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_01acef38074a0e0d5976473f7e34539badf35a9665d3e6a9e9fe377f17f1ea4f",
                                    "typeString": "literal_string \"contractReference_2\""
                                  },
                                  "value": "contractReference_2"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_01acef38074a0e0d5976473f7e34539badf35a9665d3e6a9e9fe377f17f1ea4f",
                                    "typeString": "literal_string \"contractReference_2\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3675,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "13332:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 3676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getContractReferenceValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6893,
                                "src": "13332:56:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (struct ContractReference memory)"
                                }
                              },
                              "id": 3679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13332:134:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                "typeString": "struct ContractReference memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13285:181:4"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                  "typeString": "enum ContractReferenceType"
                                },
                                "id": 3685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3681,
                                    "name": "contractReference_2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3674,
                                    "src": "13501:19:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                      "typeString": "struct ContractReference memory"
                                    }
                                  },
                                  "id": 3682,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_type",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22629,
                                  "src": "13501:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                    "typeString": "enum ContractReferenceType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3683,
                                    "name": "ContractReferenceType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22519,
                                    "src": "13530:21:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractReferenceType_$22519_$",
                                      "typeString": "type(enum ContractReferenceType)"
                                    }
                                  },
                                  "id": 3684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "MOC",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "13530:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractReferenceType_$22519",
                                    "typeString": "enum ContractReferenceType"
                                  }
                                },
                                "src": "13501:54:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                  "typeString": "enum ContractReferenceRole"
                                },
                                "id": 3690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3686,
                                    "name": "contractReference_2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3674,
                                    "src": "13575:19:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                      "typeString": "struct ContractReference memory"
                                    }
                                  },
                                  "id": 3687,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "role",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22631,
                                  "src": "13575:24:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                    "typeString": "enum ContractReferenceRole"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3688,
                                    "name": "ContractReferenceRole",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22525,
                                    "src": "13603:21:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                                      "typeString": "type(enum ContractReferenceRole)"
                                    }
                                  },
                                  "id": 3689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "UDL",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "13603:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                                    "typeString": "enum ContractReferenceRole"
                                  }
                                },
                                "src": "13575:53:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13501:127:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 3711,
                            "nodeType": "IfStatement",
                            "src": "13480:403:4",
                            "trueBody": {
                              "id": 3710,
                              "nodeType": "Block",
                              "src": "13643:240:4",
                              "statements": [
                                {
                                  "assignments": [
                                    3693,
                                    3695
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3693,
                                      "mutability": "mutable",
                                      "name": "quantity",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3710,
                                      "src": "13662:15:4",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "typeName": {
                                        "id": 3692,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13662:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 3695,
                                      "mutability": "mutable",
                                      "name": "isSet",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3710,
                                      "src": "13679:10:4",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "typeName": {
                                        "id": 3694,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13679:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3702,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3698,
                                          "name": "contractReference_2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3674,
                                          "src": "13740:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                            "typeString": "struct ContractReference memory"
                                          }
                                        },
                                        "id": 3699,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "object",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22625,
                                        "src": "13740:26:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3700,
                                        "name": "timestamp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3570,
                                        "src": "13788:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3696,
                                        "name": "dataRegistry",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3027,
                                        "src": "13693:12:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                          "typeString": "contract IDataRegistry"
                                        }
                                      },
                                      "id": 3697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getDataPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7765,
                                      "src": "13693:25:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                                        "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                                      }
                                    },
                                    "id": 3701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13693:122:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                                      "typeString": "tuple(int256,bool)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13661:154:4"
                                },
                                {
                                  "condition": {
                                    "argumentTypes": null,
                                    "id": 3703,
                                    "name": "isSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3695,
                                    "src": "13837:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": null,
                                  "id": 3709,
                                  "nodeType": "IfStatement",
                                  "src": "13833:35:4",
                                  "trueBody": {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3706,
                                          "name": "quantity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3693,
                                          "src": "13859:8:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        ],
                                        "id": 3705,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "13851:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes32_$",
                                          "typeString": "type(bytes32)"
                                        },
                                        "typeName": {
                                          "id": 3704,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13851:7:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 3707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13851:17:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "functionReturnParameters": 3574,
                                    "id": 3708,
                                    "nodeType": "Return",
                                    "src": "13844:24:4"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    "id": 3785,
                    "nodeType": "IfStatement",
                    "src": "12152:2848:4",
                    "trueBody": {
                      "id": 3611,
                      "nodeType": "Block",
                      "src": "12183:133:4",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3607,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "12289:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 3608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12289:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12281:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3605,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "12281:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12281:24:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "functionReturnParameters": 3574,
                          "id": 3610,
                          "nodeType": "Return",
                          "src": "12274:31:4"
                        }
                      ]
                    }
                  },
                  "id": 3786,
                  "nodeType": "IfStatement",
                  "src": "11797:3203:4",
                  "trueBody": {
                    "id": 3600,
                    "nodeType": "Block",
                    "src": "11828:318:4",
                    "statements": [
                      {
                        "assignments": [
                          3580,
                          3582
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3580,
                            "mutability": "mutable",
                            "name": "resetRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3600,
                            "src": "11885:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3579,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11885:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3582,
                            "mutability": "mutable",
                            "name": "isSet",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3600,
                            "src": "11903:10:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3581,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11903:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3592,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3587,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3566,
                                  "src": "12007:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6d61726b65744f626a656374436f6465526174655265736574",
                                  "id": 3588,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12016:27:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6296574969a8db06026b102601de73f4d0af8610ea7cc2f197ff5af584e6f370",
                                    "typeString": "literal_string \"marketObjectCodeRateReset\""
                                  },
                                  "value": "marketObjectCodeRateReset"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_6296574969a8db06026b102601de73f4d0af8610ea7cc2f197ff5af584e6f370",
                                    "typeString": "literal_string \"marketObjectCodeRateReset\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3585,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3025,
                                  "src": "11960:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 3586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getBytes32ValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6848,
                                "src": "11960:46:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (bytes32)"
                                }
                              },
                              "id": 3589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11960:84:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3590,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3570,
                              "src": "12062:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3583,
                              "name": "dataRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3027,
                              "src": "11917:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                "typeString": "contract IDataRegistry"
                              }
                            },
                            "id": 3584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getDataPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7765,
                            "src": "11917:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                            }
                          },
                          "id": 3591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11917:168:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                            "typeString": "tuple(int256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11884:201:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 3593,
                          "name": "isSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3582,
                          "src": "12103:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3599,
                        "nodeType": "IfStatement",
                        "src": "12099:36:4",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3596,
                                "name": "resetRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3580,
                                "src": "12125:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 3595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12117:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3594,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "12117:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12117:18:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "functionReturnParameters": 3574,
                          "id": 3598,
                          "nodeType": "Return",
                          "src": "12110:25:4"
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15025:1:4",
                        "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": 3788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "15017:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 3787,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15017:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 3790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15017:10:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 3574,
                  "id": 3791,
                  "nodeType": "Return",
                  "src": "15010:17:4"
                }
              ]
            },
            "documentation": {
              "id": 3564,
              "nodeType": "StructuredDocumentation",
              "src": "11435:169:4",
              "text": " @notice Retrieves external data (such as market object data, block time, underlying asset state)\n used for evaluating the STF for a given event."
            },
            "id": 3793,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getExternalDataForSTF",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3566,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3793,
                  "src": "11649:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3565,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11649:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3568,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3793,
                  "src": "11674:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3567,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "11674:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3570,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3793,
                  "src": "11703:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3569,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11703:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11639:87:4"
            },
            "returnParameters": {
              "id": 3574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3573,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3793,
                  "src": "11774:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3572,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11774:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11773:9:4"
            },
            "scope": 3851,
            "src": "11609:3425:4",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3849,
              "nodeType": "Block",
              "src": "15362:529:4",
              "statements": [
                {
                  "assignments": [
                    3806
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3806,
                      "mutability": "mutable",
                      "name": "currency",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3849,
                      "src": "15372:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3805,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15372:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3812,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3809,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3796,
                        "src": "15438:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63757272656e6379",
                        "id": 3810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15447:10:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        },
                        "value": "currency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3807,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "15391:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAddressValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6839,
                      "src": "15391:46:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 3811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15391:67:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15372:86:4"
                },
                {
                  "assignments": [
                    3814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3814,
                      "mutability": "mutable",
                      "name": "settlementCurrency",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3849,
                      "src": "15468:26:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3813,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15468:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3820,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3817,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3796,
                        "src": "15544:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "736574746c656d656e7443757272656e6379",
                        "id": 3818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15553:20:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_65999d3600410af5fedcc103765923091f3cc8d34115a761fdb149578c152e9b",
                          "typeString": "literal_string \"settlementCurrency\""
                        },
                        "value": "settlementCurrency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_65999d3600410af5fedcc103765923091f3cc8d34115a761fdb149578c152e9b",
                          "typeString": "literal_string \"settlementCurrency\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3815,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "15497:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 3816,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAddressValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6839,
                      "src": "15497:46:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 3819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15497:77:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15468:106:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 3823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3821,
                      "name": "currency",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3806,
                      "src": "15589:8:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3822,
                      "name": "settlementCurrency",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3814,
                      "src": "15601:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "15589:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3848,
                  "nodeType": "IfStatement",
                  "src": "15585:300:4",
                  "trueBody": {
                    "id": 3847,
                    "nodeType": "Block",
                    "src": "15621:264:4",
                    "statements": [
                      {
                        "assignments": [
                          3825,
                          3827
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3825,
                            "mutability": "mutable",
                            "name": "fxRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3847,
                            "src": "15663:13:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3824,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15663:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3827,
                            "mutability": "mutable",
                            "name": "isSet",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3847,
                            "src": "15678:10:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3826,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "15678:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3839,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3833,
                                      "name": "currency",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3806,
                                      "src": "15756:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3834,
                                      "name": "settlementCurrency",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3814,
                                      "src": "15766:18:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3831,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "15745:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 3832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "15745:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 3835,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15745:40:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 3830,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "15735:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 3836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15735:51:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3837,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3800,
                              "src": "15804:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3828,
                              "name": "dataRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3027,
                              "src": "15692:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                                "typeString": "contract IDataRegistry"
                              }
                            },
                            "id": 3829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getDataPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7765,
                            "src": "15692:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_int256_$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (int256,bool)"
                            }
                          },
                          "id": 3838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15692:135:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                            "typeString": "tuple(int256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15662:165:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 3840,
                          "name": "isSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3827,
                          "src": "15845:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3846,
                        "nodeType": "IfStatement",
                        "src": "15841:33:4",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3843,
                                "name": "fxRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3825,
                                "src": "15867:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 3842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15859:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3841,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "15859:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15859:15:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "functionReturnParameters": 3804,
                          "id": 3845,
                          "nodeType": "Return",
                          "src": "15852:22:4"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 3794,
              "nodeType": "StructuredDocumentation",
              "src": "15040:133:4",
              "text": " @notice Retrieves external data (such as market object data)\n used for evaluating the POF for a given event."
            },
            "id": 3850,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getExternalDataForPOF",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3796,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3850,
                  "src": "15218:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3795,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15218:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3798,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3850,
                  "src": "15243:9:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3797,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "15243:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3800,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3850,
                  "src": "15278:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15278:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15208:93:4"
            },
            "returnParameters": {
              "id": 3804,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3803,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3850,
                  "src": "15349:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3802,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15349:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15348:9:4"
            },
            "scope": 3851,
            "src": "15178:713:4",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 3852,
        "src": "1261:14632:4"
      }
    ],
    "src": "41:15853:4"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.651Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "progress(bytes32)": {
        "details": "Emits ProgressedAsset if the state of the asset was updated.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "progressWith(bytes32,bytes32)": {
        "details": "Emits ProgressedAsset if the state of the asset was updated.",
        "params": {
          "_event": "the unscheduled event",
          "assetId": "id of the asset"
        }
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "BaseActor",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "getEpochOffset(uint8)": {
        "notice": "Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp"
      },
      "progress(bytes32)": {
        "notice": "Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from either a prev. pending event, an event generated based on the current state of an underlying asset or the assets schedule."
      },
      "progressWith(bytes32,bytes32)": {
        "notice": "Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from a provided (unscheduled) event Reverts if the provided event violates the order of events."
      },
      "shiftCalcTime(uint256,uint8,uint8,uint256)": {
        "notice": "Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
      }
    },
    "notice": "As the centerpiece of the ACTUS Protocol it is responsible for managing the lifecycle of assets registered through the AssetRegistry. It acts as the executive of AP by initializing the state of the asset and by processing the assets schedule as specified in the TemplateRegistry. It derives the next state and the current outstanding payoff of the asset by submitting the last finalized state to the corresponding ACTUS Engine. The AssetActor stores the next state in the AssetRegistry, depending on if it is able to settle the current outstanding payoff on behalf of the obligor.",
    "version": 1
  }
}