{
  "contractName": "ANNRegistry",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "GrantedAccess",
      "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": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "RegisteredAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "RevokedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevActor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newActor",
          "type": "address"
        }
      ],
      "name": "UpdatedActor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevBeneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newBeneficiary",
          "type": "address"
        }
      ],
      "name": "UpdatedBeneficiary",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevEngine",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newEngine",
          "type": "address"
        }
      ],
      "name": "UpdatedEngine",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedFinalizedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevObligor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newObligor",
          "type": "address"
        }
      ],
      "name": "UpdatedObligor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "UpdatedTerms",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "approveActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "approvedActors",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "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": "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": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getActor",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getEngine",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getEventAtIndex",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getFinalizedState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForStateAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduleIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextUnderlyingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getOwnership",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getSchedule",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getScheduleLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUintValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRootAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "isEventSettled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_payoff",
          "type": "int256"
        }
      ],
      "name": "markEventAsSettled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "pendingEvent",
          "type": "bytes32"
        }
      ],
      "name": "pushPendingEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "setActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCounterpartyBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyObligor",
          "type": "address"
        }
      ],
      "name": "setCounterpartyObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCreatorBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorObligor",
          "type": "address"
        }
      ],
      "name": "setCreatorObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        }
      ],
      "name": "setEngine",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setFinalizedState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfFee",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        },
        {
          "internalType": "bytes32[]",
          "name": "schedule",
          "type": "bytes32[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "ownership",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "registerAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getTerms",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfFee",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfFee",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "name": "terms",
          "type": "tuple"
        }
      ],
      "name": "setTerms",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getAddressValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getBytes32ValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getPeriodValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IP",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getCycleValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "enum S",
              "name": "s",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IPS",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getContractReferenceValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "object",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "object2",
              "type": "bytes32"
            },
            {
              "internalType": "enum ContractReferenceType",
              "name": "_type",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractReferenceRole",
              "name": "role",
              "type": "uint8"
            }
          ],
          "internalType": "struct ContractReference",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"GrantedAccess\",\"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\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"RegisteredAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"RevokedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevActor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newActor\",\"type\":\"address\"}],\"name\":\"UpdatedActor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevBeneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"UpdatedBeneficiary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevEngine\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newEngine\",\"type\":\"address\"}],\"name\":\"UpdatedEngine\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedFinalizedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevObligor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newObligor\",\"type\":\"address\"}],\"name\":\"UpdatedObligor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"UpdatedTerms\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"approveActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"approvedActors\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":\"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\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getActor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getAddressValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getBytes32ValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getContractReferenceValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getCycleValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getEngine\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getEventAtIndex\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getFinalizedState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForStateAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduleIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextUnderlyingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getOwnership\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getPeriodValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getSchedule\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getScheduleLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getTerms\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUintValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRootAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"isEventSettled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"int256\",\"name\":\"_payoff\",\"type\":\"int256\"}],\"name\":\"markEventAsSettled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"pendingEvent\",\"type\":\"bytes32\"}],\"name\":\"pushPendingEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"schedule\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"ownership\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"registerAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"setActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCounterpartyBeneficiary\",\"type\":\"address\"}],\"name\":\"setCounterpartyBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCounterpartyObligor\",\"type\":\"address\"}],\"name\":\"setCounterpartyObligor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCreatorBeneficiary\",\"type\":\"address\"}],\"name\":\"setCreatorBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCreatorObligor\",\"type\":\"address\"}],\"name\":\"setCreatorObligor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"}],\"name\":\"setEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setFinalizedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfRateReset\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfScalingIndex\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"name\":\"terms\",\"type\":\"tuple\"}],\"name\":\"setTerms\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveActor(address)\":{\"details\":\"Can only be called by the owner of the contract.\",\"params\":{\"actor\":\"address of the actor\"}},\"getActor(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"address of the asset actor\"}},\"getEngine(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"address of the engine of the asset\"}},\"getEventAtIndex(bytes32,uint256)\":{\"params\":{\"assetId\":\"id of the asset\",\"index\":\"index of the event to return\"},\"returns\":{\"_0\":\"Event\"}},\"getFinalizedState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getNextScheduleIndex(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Index\"}},\"getNextScheduledEvent(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"event\"}},\"getOwnership(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"addresses of all owners of the asset\"}},\"getSchedule(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"the schedule\"}},\"getScheduleLength(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Length of the schedule\"}},\"getState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getTerms(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"terms of the asset\"}},\"grantAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to grant access to\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"hasAccess(bytes32,bytes4,address)\":{\"params\":{\"account\":\"address of the account for which to check access\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"},\"returns\":{\"_0\":\"true if allowed access\"}},\"hasRootAccess(bytes32,address)\":{\"params\":{\"account\":\"address of the account for which to check root acccess\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if has root access\"}},\"isEventSettled(bytes32,bytes32)\":{\"params\":{\"_event\":\"event (encoded)\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if event was settled\"}},\"isRegistered(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if asset exist\"}},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"_event\":\"event (encoded) to be marked as settled\",\"assetId\":\"id of the asset\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"popNextScheduledEvent(bytes32)\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\"}},\"registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)\":{\"params\":{\"actor\":\"account which is allowed to update the asset state\",\"admin\":\"account which as admin rights (optional)\",\"engine\":\"ACTUS Engine of the asset\",\"ownership\":\"ownership of the asset\",\"schedule\":\"schedule of the asset\",\"state\":\"initial state of the asset\",\"terms\":\"asset specific terms (ANNTerms)\"}},\"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.\"},\"revokeAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to revoke access for\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"setActor(bytes32,address)\":{\"params\":{\"actor\":\"address of the Actor contract\",\"assetId\":\"id of the asset\"}},\"setCounterpartyBeneficiary(bytes32,address)\":{\"details\":\"Can only be updated by the current counterparty beneficiary or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCounterpartyBeneficiary\":\"address of the new beneficiary\"}},\"setCounterpartyObligor(bytes32,address)\":{\"details\":\"Can only be updated by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCounterpartyObligor\":\"address of the new counterparty obligor\"}},\"setCreatorBeneficiary(bytes32,address)\":{\"details\":\"Can only be updated by the current creator beneficiary or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCreatorBeneficiary\":\"address of the new beneficiary\"}},\"setCreatorObligor(bytes32,address)\":{\"details\":\"Can only be updated by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCreatorObligor\":\"address of the new creator obligor\"}},\"setEngine(bytes32,address)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"engine\":\"new engine address\"}},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"terms\":\"new terms\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"ANNRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveActor(address)\":{\"notice\":\"Approves the address of an actor contract e.g. for registering assets.\"},\"getActor(bytes32)\":{\"notice\":\"Returns the address of the actor which is allowed to update the state of the asset.\"},\"getEngine(bytes32)\":{\"notice\":\"Returns the address of a the ACTUS engine corresponding to the ContractType of an asset.\"},\"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\"},\"getEventAtIndex(bytes32,uint256)\":{\"notice\":\"Returns an event for a given position (index) in a schedule of a given asset.\"},\"getFinalizedState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getNextScheduleIndex(bytes32)\":{\"notice\":\"Returns the index of the next event to be processed for a schedule of an asset.\"},\"getNextScheduledEvent(bytes32)\":{\"notice\":\"Returns the next event to process.\"},\"getNextUnderlyingEvent(bytes32)\":{\"notice\":\"If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event.\"},\"getOwnership(bytes32)\":{\"notice\":\"Retrieves the registered addresses of owners (creator, counterparty) of an asset.\"},\"getSchedule(bytes32)\":{\"notice\":\"Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)\"},\"getScheduleLength(bytes32)\":{\"notice\":\"Returns the length of a schedule of a given asset.\"},\"getState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getTerms(bytes32)\":{\"notice\":\"Returns the terms of an asset.\"},\"grantAccess(bytes32,bytes4,address)\":{\"notice\":\"Grant access to an account to call a specific method on a specific asset.\"},\"hasAccess(bytes32,bytes4,address)\":{\"notice\":\"Check whether an account is allowed to call a specific method on a specific asset.\"},\"hasRootAccess(bytes32,address)\":{\"notice\":\"Check whether an account has root access for a specific asset.\"},\"isEventSettled(bytes32,bytes32)\":{\"notice\":\"Returns true if an event of an assets schedule was settled\"},\"isRegistered(bytes32)\":{\"notice\":\"Returns if there is an asset registerd for a given assetId\"},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"notice\":\"Mark an event as settled\"},\"popNextScheduledEvent(bytes32)\":{\"notice\":\"Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)\"},\"registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)\":{\"notice\":\"@param assetId id of the asset\"},\"revokeAccess(bytes32,bytes4,address)\":{\"notice\":\"Revoke access for an account to call a specific method on a specific asset.\"},\"setActor(bytes32,address)\":{\"notice\":\"Set the address of the Actor contract which should be going forward.\"},\"setCounterpartyBeneficiary(bytes32,address)\":{\"notice\":\"Updates the address of the default beneficiary of cashflows going to the counterparty.\"},\"setCounterpartyObligor(bytes32,address)\":{\"notice\":\"Update the address of the counterparty which has to fulfill obligations for the counterparty of the asset.\"},\"setCreatorBeneficiary(bytes32,address)\":{\"notice\":\"Update the address of the default beneficiary of cashflows going to the creator.\"},\"setCreatorObligor(bytes32,address)\":{\"notice\":\"Update the address of the obligor which has to fulfill obligations for the creator of the asset.\"},\"setEngine(bytes32,address)\":{\"notice\":\"Set the engine address which should be used for the asset going forward.\"},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next finalized state of an asset.\"},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next state of an asset.\"},\"setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))\":{\"notice\":\"Set the terms of the asset\"}},\"notice\":\"Registry for ACTUS Protocol assets\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNRegistry.sol\":\"ANNRegistry\"},\"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/ANN/ANNEncoder.sol\":{\"keccak256\":\"0x0d5e9986e0d64999bffa93f4f958a2284715d14c1e66441c66a27c620b2bcb3d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://44bbd81c3324e7cb5707d712b0b44d62e21ce21aa12a741602632bff39db1387\",\"dweb:/ipfs/QmfJwzFLhV6BA1bcQXfKJj1yZKXhQc22w52DTYCnCZmnwh\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNRegistry.sol\":{\"keccak256\":\"0xb0ba6baa31ca5c054029f19b8994a423ea7729c9606de8046cce3f90fb2ca9d4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d309a544f4f56434c21148ef91d4de64859efd76cc497f04bed673f6859cf52\",\"dweb:/ipfs/QmWKK7iuF7K7hGjD4UQkD6xP3ERPiqzirUt2WCBSDLeZMk\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/IANNRegistry.sol\":{\"keccak256\":\"0xcc12f3d90c2d92853ecf5807ef884b91ee304bab75e2d51b39b88fe941328468\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b16d114799afad30c03755c94b54f57dfd9fdd5c0da84d671a5cdf75731c553\",\"dweb:/ipfs/QmXYFvotetoJzgBPYUFKrw6RxDVyFESUPtJqy9LTaMeRRE\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol\":{\"keccak256\":\"0x7cb99654f112c88d67ac567b688f2d38e54bf2d4eeb5c3df12bac7d68c85c6e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836ccdb22ebced3535672e70a0c41803b3064872ab18bfeeafff6c4437f128c2\",\"dweb:/ipfs/QmV3RuN1vmHoiZUFymS6FHeEHkcZy1yZyR13sfMwEDyjbr\"]},\"/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/BaseRegistry.sol\":{\"keccak256\":\"0x9899864abf65d99906f23a24d6b4d52e1c6102c11993dad09f90e1d7bbc49744\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cd11e167f393e04f82f0619080f778239992d730b51b1771aaabdddf627ebdaf\",\"dweb:/ipfs/QmXaMYWTLW5xzhjkotfX63dtfRk1MsqJgM9uiqAUg6vtXe\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol\":{\"keccak256\":\"0x872f4fd27fe80b6b3826bdaeaacdb77fb529d34235735f82e1413a5fe655f68b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c24b8fa53dfb2a11c67053c4b00de83307e45c83229e4b44f71d21eb9b0e5abd\",\"dweb:/ipfs/QmetZ6ptmsueoaCxjBMqpaZYdHgpjqPhjZurKbG2ZudbqY\"]},\"/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/Ownership/OwnershipRegistry.sol\":{\"keccak256\":\"0x3208a383e52d2ac8417093f9d165c1a6f32f625988f59fec26aeddff0dbcc490\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://45593942700d2bbdbe86f9420c9c365c503845089745a0f7ad7ffa811e559ed6\",\"dweb:/ipfs/QmeTLQdx1C6vnWmtrXbLGwaSk2axKFEzeiX6TQesTCjadZ\"]},\"/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/Schedule/ScheduleEncoder.sol\":{\"keccak256\":\"0x887c1085da0a8f7b055ae73bc3337228d70cef2296521103abb5fcb53315313e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cb408a6f3e5f9394eacaeeaeb2d38db05f994b952cfaa6ca896c0af978cf27d7\",\"dweb:/ipfs/QmeDp1TWA1rGijSgQUPwCJoc933gPD8FVTkDTupppxuZhS\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol\":{\"keccak256\":\"0x5a377f9877c1748cf2e6ee158306f204e5d740e82ad2aa3b3ca680258edc8c36\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ad876b340f89357f3baf8dae0bfecd3758323f93019d1b4543da387f720c2f73\",\"dweb:/ipfs/QmQyDtzUtGgEz3JXnpU8qdg6tHAP3KWAfwgY6Y2Z8RytJo\"]},\"/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/State/StateEncoder.sol\":{\"keccak256\":\"0x2668d331c79ff3eb189a5fd813fdc77ff9adb82c8c6323f3b09fd72e47674492\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://01ecc394db0ce16d5e415b55dd0bf78d7de70197ed3a60602b11a814451fd5ff\",\"dweb:/ipfs/QmfVdpeeuFXSjnUSMiwp9pS3gAhKE72zwBFdBy29DDLBH4\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol\":{\"keccak256\":\"0xb370cd39c2cb2dafb80cd7c75f9239126715a7b5b537dff4ead9fa0cab8afe06\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6b848682df2d28ad4f3988193249488f0fe9d7e656678054efe258b7d0eb9ee1\",\"dweb:/ipfs/QmTFT5Gg55ZLsdrTQ73ZvDCjaCfNKeBK2MS9hwaxQXhoQK\"]},\"/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/AssetRegistry/Terms/TermsRegistry.sol\":{\"keccak256\":\"0xbb72fb674b59a69ddfbbbae6646779d9a9e45d5f6ce058090cea73898c6144f3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://002359bb2412c5dfe0172701869a9014dfd8c5210b22f5cb7cd70e615cbe1b78\",\"dweb:/ipfs/QmPATHyGY8MhzKH96o37EWQx7n99C5kXgV4xyHt64szxPX\"]},\"/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/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/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol\":{\"keccak256\":\"0xb549e34dc631989f8aae1b8a397bf77598b8c018860645a627d2929229543a79\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a0ef5e2ad69ef87b9fc2beeed66336b3857c576efb9833b40a1be2ee35786fc\",\"dweb:/ipfs/QmT33MWqdjecGoPj8Js6a5fgESTcGW5vbQqYamKRDJZnhS\"]},\"@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol\":{\"keccak256\":\"0x2c444213691e110c6ef818015c4e8887fe408462be51dfcb0eeefa1ea8cc8e1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a52d6401a369653b0c480ba33772901ac33e2a5c06ab77c054a18408c5b467b0\",\"dweb:/ipfs/QmXV7tQEo2FeG3st6weByeMrA7zZJZCsBfakNzr7xi4DNv\"]},\"@atpar/actus-solidity/contracts/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@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\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b506000620000276001600160e01b036200007716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200007b565b3390565b61560a806200008b6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c8063a17b75b51161019d578063d51dc3dc116100e9578063e7dc3188116100a2578063ecef55771161007c578063ecef55771461072e578063ee43eda114610741578063f2fde38b14610754578063f52f84e1146107675761030c565b8063e7dc3188146106f5578063e8f7ca3e14610708578063eb0125591461071b5761030c565b8063d51dc3dc14610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e4d063d5146106c2578063e50e0ef7146106d55761030c565b8063ba4d2d2811610156578063c0d9429311610130578063c0d942931461061d578063c3b6e7c214610630578063ccfc347e14610643578063cf5aed12146106565761030c565b8063ba4d2d28146105c9578063bc6a7d76146105ea578063bd1f0a6c1461060a5761030c565b8063a17b75b51461054a578063b02ca0c01461055d578063b0b4888f14610570578063b3c45ebe14610590578063b461dd4f146105a3578063b8282041146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638da5cb5b146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613e7f565b61077a565b005b610339610334366004613e4f565b61084f565b60405161034691906153b4565b60405180910390f35b61036261035d366004613e4f565b610876565b60405161034691906149e5565b61032461037d366004613e7f565b6108ed565b610362610390366004613eae565b610992565b6103246103a3366004613efa565b610a31565b6103bb6103b6366004613efa565b610ae7565b60405161034691906149ca565b6103bb6103d6366004613e4f565b610b64565b6103626103e9366004613e4f565b610b79565b6103246103fc366004613e7f565b610b8e565b61033961040f366004613e4f565b610c69565b610324610422366004613efa565b610c88565b61043a610435366004613e4f565b610d2d565b6040516103469190614986565b610324610455366004613e7f565b610d47565b610324610468366004613e7f565b610e0e565b61036261047b366004613eae565b610ee9565b61032461048e36600461405b565b610f07565b6104a66104a1366004613e4f565b610fcd565b6040516103469190614fb1565b6104c66104c1366004613eae565b61106b565b60405161034691906153a6565b61032461110a565b6104ee6104e9366004613e4f565b611189565b604051610346929190614aaa565b61036261050a366004613e4f565b6111b2565b61032461051d36600461405b565b611586565b61036261053036600461407f565b61163f565b61053d61164d565b6040516103469190614958565b610362610558366004613e4f565b61165c565b61036261056b366004613eae565b611671565b61058361057e366004613eae565b611692565b6040516103469190615398565b61053d61059e366004613e4f565b611731565b6103626105b1366004613eae565b611750565b6103626105c4366004613e4f565b611796565b6105dc6105d7366004613eae565b611869565b6040516103469291906149d5565b6105fd6105f8366004613eae565b611893565b6040516103469190615358565b610324610618366004613e7f565b611932565b61032461062b366004613f47565b6119ca565b61036261063e366004613e4f565b611aca565b6103bb610651366004613dfb565b611cc7565b610669610664366004613eae565b611cdc565b6040516103469190615499565b610362610684366004613eae565b611cfa565b610324610697366004613eae565b611d40565b6103246106aa366004613ecf565b611daf565b6103626106bd36600461409b565b611e4b565b6103246106d0366004613f74565b611e69565b6106e86106e3366004613e4f565b611f78565b6040516103469190614fed565b610324610703366004613dfb565b611fd6565b6103bb610716366004613e7f565b61202f565b61053d610729366004613eae565b612065565b61066961073c366004613eae565b6120fb565b61053d61074f366004613e4f565b612191565b610324610762366004613dfb565b6121b1565b610362610775366004613e4f565b612267565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614c23565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a2090610841908490879061496c565b60405180910390a250505050565b6108576139ea565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614c23565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614ef5565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906149ee565b60405180910390a1505050565b6000828152600160205260408082209051639151ef2360e01b815273__ANNEncoder____________________________91639151ef23916109d891908690600401615028565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613e67565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614ea6565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614a95565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d390614ac6565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614b23565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906149ee565b610c716139ea565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614ea6565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614a95565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614c23565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb90610841908490879061496c565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614e49565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614d11565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906149ee565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614c23565b610f8c610f723684900384018461445e565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc091906149e5565b60405180910390a2505050565b610fd5613a84565b6000828152600160205260409081902090516379d346b760e01b815273__ANNEncoder____________________________916379d346b79161101a91906004016149e5565b6108406040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e91906140c6565b611073613c19565b600083815260016020526040908190209051633542f3e360e11b815273__ANNEncoder____________________________91636a85e7c6916110ba91908690600401615028565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614443565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d390614db7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613c3c565b6111dc8372636f6e74726163745265666572656e63655f3160681b611893565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b22906112369085906004016149e5565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613e33565b6112a25760405162461bcd60e51b81526004016107d390614f49565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b6120fb565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b81526004016113229190614a70565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611372919061455b565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b09190614a4d565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613e67565b9050831561142157611413601b42611e4b565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e4b565b600282600581111561148457fe5b141561152e57611492613c19565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a90600401614a0d565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190614443565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613c19565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a90600401614a2a565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614c23565b61160b6115f13684900384018461445e565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc091906149e5565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b61169a613c63565b6000838152600160205260409081902090516323c352cb60e11b815273__ANNEncoder____________________________91634786a596916116e191908690600401615028565b60806040518083038186803b1580156116f957600080fd5b505af415801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614428565b600090815260016020819052604090912001546001600160a01b031690565b60008281526001602052604080822090516313d0ad6960e31b815273__ANNEncoder____________________________91639e856b48916109d891908690600401615028565b6000818152600160205260408120816117ae84613096565b600583015460009081526003840160205260409020546004840154919250901580156117d8575081155b156117ea575060009250610871915050565b6000806117f684611189565b9150915060008061180685611189565b9150915080600014806118225750821580159061182257508083105b8061184657508083148015611846575061183b8261163f565b6118448561163f565b105b1561185a5785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b61189b613c3c565b600083815260016020526040908190209051632fbc709f60e01b815273__ANNEncoder____________________________91632fbc709f916118e291908690600401615028565b60806040518083038186803b1580156118fa57600080fd5b505af415801561190e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906143de565b611949826000356001600160e01b03191633610ae7565b6119655760405162461bcd60e51b81526004016107d390614bc6565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906149ee565b6000828152600160208190526040909120015482906001600160a01b0316331480611a075750611a07816000356001600160e01b03191633610ae7565b611a235760405162461bcd60e51b81526004016107d390614c23565b600083815260016020526040908190209051638198ef6d60e01b815273__ANNEncoder____________________________91638198ef6d91611a6a91908690600401615036565b60006040518083038186803b158015611a8257600080fd5b505af4158015611a96573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b60008181526001602081905260408220015482906001600160a01b0316331480611b065750611b06816000356001600160e01b03191633610ae7565b611b225760405162461bcd60e51b81526004016107d390614c23565b600083815260016020526040812090611b3a85613096565b60058301546000908152600384016020526040902054600484015491925090158015611b64575081155b15611b765750600093506108e7915050565b600080611b8284611189565b91509150600080611b9285611189565b9150915084861415611c07578260028801600086601c811115611bb157fe5b601c811115611bbc57fe5b8152602081019190915260400160002055600487015460058801541415611bee5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611c1d57508215801590611c1d57508083105b80611c4157508083148015611c415750611c368261163f565b611c3f8561163f565b105b15611c84578260028801600086601c811115611c5957fe5b601c811115611c6457fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611c98575060048701546005880154145b15611cae5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61342f16565b600082815260016020526040808220905163ee6a446f60e01b815273__ANNEncoder____________________________9163ee6a446f916109d891908690600401615028565b6000828152600160208190526040909120015482906001600160a01b0316331480611d7d5750611d7d816000356001600160e01b03191633610ae7565b611d995760405162461bcd60e51b81526004016107d390614c23565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dec5750611dec816000356001600160e01b03191633610ae7565b611e085760405162461bcd60e51b81526004016107d390614c23565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e5c57fe5b60ff16901b179392505050565b3360009081526002602052604090205460ff16611e985760405162461bcd60e51b81526004016107d390614cbd565b611ef689611eab368a90038a018a61445e565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611eee9250505036899003890189614376565b8787876134db565b600089815260016020526040908190209051638198ef6d60e01b815273__ANNEncoder____________________________91638198ef6d91611f3d91908c90600401615036565b60006040518083038186803b158015611f5557600080fd5b505af4158015611f69573d6000803e3d6000fd5b50505050505050505050505050565b611f80613c84565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611fde612c70565b6000546001600160a01b0390811691161461200b5760405162461bcd60e51b81526004016107d390614db7565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6000828152600160205260408082209051637154b74160e11b815273__ANNEncoder____________________________9163e2a96e82916120ab91908690600401615028565b60206040518083038186803b1580156120c357600080fd5b505af41580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613e17565b6000828152600160205260408082209051630ac097cd60e21b815273__ANNEncoder____________________________91632b025f349161214191908690600401615028565b60206040518083038186803b15801561215957600080fd5b505af415801561216d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061455b565b60009081526001602052604090205461010090046001600160a01b031690565b6121b9612c70565b6000546001600160a01b039081169116146121e65760405162461bcd60e51b81526004016107d390614db7565b6001600160a01b03811661220c5760405162461bcd60e51b81526004016107d390614b80565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6122846139ea565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c6139ea565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b613660565b61299c826b465f7374617475734461746560a01b836020015160001b613660565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b613660565b6129e7826d465f6d617475726974794461746560901b836060015160001b613660565b612a0a826d465f65786572636973654461746560901b836080015160001b613660565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b613660565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b613660565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b613660565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b613660565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b613660565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b613660565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b613660565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b613660565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b613660565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b613660565b612bd38269465f7175616e7469747960b01b83610200015160001b613660565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b613660565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b613660565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b613660565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b613660565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61369616565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61369616565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff6136ab16565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff6136ab16565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff6136ab16565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff61372716565b60405162461bcd60e51b81526004016107d390614dec565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b613660565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b613660565b612e33826b6d617475726974794461746560a01b836060015160001b613660565b612e54826b65786572636973654461746560a01b836080015160001b613660565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b613660565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b613660565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b613660565b612ee382691999595058d8dc9d595960b21b83610120015160001b613660565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b613660565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b613660565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b613660565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b613660565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b613660565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b613660565b61300582677175616e7469747960c01b83610200015160001b613660565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b613660565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b613660565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b613660565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b613660565b60008181526001602052604081206130ac613a84565b6040516379d346b760e01b815273__ANNEncoder____________________________906379d346b7906130e39085906004016149e5565b6108406040518083038186803b1580156130fc57600080fd5b505af4158015613110573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313491906140c6565b82549091506000908190819081906131e09061010090046001600160a01b0316632249a3618760028a0185600981526020019081526020016000205460096040518463ffffffff1660e01b815260040161319093929190614fc0565b60206040518083038186803b1580156131a857600080fd5b505afa1580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190613e67565b9150915082600014806131f257508281105b8061321657508083148015613216575061320b8461163f565b6132148361163f565b105b15613222578092508193505b50508354600a6000818152600287016020526040808220549051632249a36160e01b815291938493613273936101009092046001600160a01b031692632249a36192613190928b9291600401614fc0565b91509150826000148061328f5750801580159061328f57508281105b806132be575080158015906132a357508083145b80156132be57506132b38461163f565b6132bc8361163f565b105b156132ca578092508193505b5050835460036000818152600287016020526040808220549051632249a36160e01b81529193849361331b936101009092046001600160a01b031692632249a36192613190928b9291600401614fc0565b9150915082600014806133375750801580159061333757508281105b806133665750801580159061334b57508083145b8015613366575061335b8461163f565b6133648361163f565b105b15613372578092508193505b5050835460046000818152600287016020526040808220549051632249a36160e01b8152919384936133c2936101009092046001600160a01b031692632249a36192613190928b92918101614fc0565b9150915082600014806133de575080158015906133de57508281105b8061340d575080158015906133f257508083145b801561340d57506134028461163f565b61340b8361163f565b105b15613419578092508193505b50506134258282611e4b565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b821415613480575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b8214156134d3575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000878152600160205260409020805460ff161561350b5760405162461bcd60e51b81526004016107d390614c72565b6001600160a01b03831660009081526002602052604090205460ff1615156001146135485760405162461bcd60e51b81526004016107d390614d6e565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556135e68188612da0565b6135f6818863ffffffff61294216565b613606818763ffffffff61374e16565b6001600160a01b0382161561361f5761361f88836137b6565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd896468860405161364e91906149e5565b60405180910390a15050505050505050565b6000828152600e8401602052604090205481141561367d57613691565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b60008080806136bf62015180875b0461382d565b600c9188016000198101838104949094019650945092509006600101915060006136e984846138c3565b9050808211156136f7578091505b6201518087066201518061370c868686613949565b020194508685101561371d57600080fd5b5050505092915050565b600080808061373962015180876136b9565b91870194509250905060006136e984846138c3565b60005b8151811015613691576000801b82828151811061376a57fe5b6020026020010151141561377d57613691565b81818151811061378957fe5b60209081029190910181015160008381526003860190925260409091205560010160048301819055613751565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161382191614a95565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161388457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806138d45750816003145b806138df5750816005145b806138ea5750816007145b806138f55750816008145b80613900575081600a145b8061390b575081600c145b156139185750601f610a2b565b816002146139285750601e610a2b565b613931836139c5565b61393c57601c61393f565b601d5b60ff169392505050565b60006107b284101561395a57600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161399657fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000600482061580156139da57506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516105e081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000801916815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bc6613c19565b8152602001613bd3613c19565b8152602001613be0613c63565b8152602001613bed613c63565b8152602001613bfa613c63565b8152602001613c07613c63565b8152602001613c14613c63565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081018252600080825260208201819052909182019081526020016000613c14565b60408051608081019091526000808252602082019081526020016000613c2f565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b81615549565b8051610a2b81615549565b8051610a2b8161556c565b8051610a2b81615579565b8035610a2b81615586565b8051610a2b816155a0565b8035610a2b816155ad565b8051610a2b816155ad565b8051610a2b81615586565b8051610a2b816155c7565b600061084082840312156108e7578081fd5b6000608082840312156108e7578081fd5b600060808284031215613d4d578081fd5b613d5760806154a7565b9050815181526020820151613d6b81615586565b60208201526040820151613d7e81615579565b60408201526060820151613d918161555e565b606082015292915050565b600060608284031215613dad578081fd5b613db760606154a7565b9050815181526020820151613dcb81615586565b60208201526040820151613dde8161555e565b604082015292915050565b600061028082840312156108e7578081fd5b600060208284031215613e0c578081fd5b8135610a2881615549565b600060208284031215613e28578081fd5b8151610a2881615549565b600060208284031215613e44578081fd5b8151610a288161555e565b600060208284031215613e60578081fd5b5035919050565b600060208284031215613e78578081fd5b5051919050565b60008060408385031215613e91578081fd5b823591506020830135613ea381615549565b809150509250929050565b60008060408385031215613ec0578182fd5b50508035926020909101359150565b600080600060608486031215613ee3578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613f0e578081fd5b8335925060208401356001600160e01b031981168114613f2c578182fd5b91506040840135613f3c81615549565b809150509250925092565b6000806108608385031215613f5a578182fd5b82359150613f6b8460208501613d19565b90509250929050565b6000806000806000806000806000610be08a8c031215613f92578687fd5b89359850613fa38b60208c01613d19565b9750613fb38b6108608c01613de9565b9650610ae08a013567ffffffffffffffff80821115613fd0578687fd5b818c018d601f820112613fe1578788fd5b8035925081831115613ff1578788fd5b8d60208085028301011115614004578788fd5b602001975090955061401c90508b610b008c01613d2b565b935061402c8b610b808c01613cab565b925061403c8b610ba08c01613cab565b915061404c8b610bc08c01613cab565b90509295985092959850929598565b6000806102a0838503121561406e578182fd5b82359150613f6b8460208501613de9565b600060208284031215614090578081fd5b8135610a28816155ba565b600080604083850312156140ad578182fd5b82356140b8816155ba565b946020939093013593505050565b600061084082840312156140d8578081fd5b6140e36105e06154a7565b6140ed8484613cf8565b81526140fc8460208501613ccc565b602082015261410e8460408501613ce2565b60408201526141208460608501613d03565b60608201526141328460808501613cc1565b60808201526141448460a08501613ccc565b60a08201526141568460c08501613d0e565b60c08201526141688460e08501613d0e565b60e082015261010061417c85828601613ccc565b9082015261012061418f85858301613cb6565b908201526101406141a285858301613cb6565b90820152610160838101519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a080840151908201526102c080840151908201526102e08084015190820152610300808401519082015261032080840151908201526103408084015190820152610360808401519082015261038080840151908201526103a080840151908201526103c080840151908201526103e08084015190820152610400808401519082015261042080840151908201526104408084015190820152610460808401519082015261048080840151908201526104a080840151908201526104c080840151908201526104e080840151908201526105006142f485828601613d9c565b9082015261056061430785858301613d9c565b6105208301526105c061431c86828701613d3c565b610540840152614330866106408701613d3c565b82840152614342866106c08701613d3c565b610580840152614356866107408701613d3c565b6105a084015261436a866107c08701613d3c565b90830152509392505050565b600060808284031215614387578081fd5b61439160806154a7565b823561439c81615549565b815260208301356143ac81615549565b602082015260408301356143bf81615549565b604082015260608301356143d281615549565b60608201529392505050565b6000608082840312156143ef578081fd5b6143f960806154a7565b8251815260208301516020820152604083015161441581615593565b604082015260608301516143d281615593565b600060808284031215614439578081fd5b610a288383613d3c565b600060608284031215614454578081fd5b610a288383613d9c565b6000610280808385031215614471578182fd5b61447a816154a7565b6144848585613cd7565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60006020828403121561456c578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061459357fe5b9052565b61459381615532565b6145938161553f565b600d811061459357fe5b6013811061459357fe5b6004811061459357fe5b6145d28282516145b3565b60208101516145e46020840182614597565b5060408101516145f760408401826145a9565b50606081015161460a60608401826145a0565b50608081015161461d6080840182614589565b5060a081015161463060a0840182614597565b5060c081015161464360c08401826145bd565b5060e081015161465660e08401826145bd565b506101008082015161466a82850182614597565b50506101208082015161467f8285018261457c565b5050610140808201516146948285018261457c565b5050610160818101519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a080820151908301526102c080820151908301526102e08082015190830152610300808201519083015261032080820151908301526103408082015190830152610360808201519083015261038080820151908301526103a080820151908301526103c080820151908301526103e08082015190830152610400808201519083015261042080820151908301526104408082015190830152610460808201519083015261048080820151908301526104a080820151908301526104c080820151908301526104e08082015190830152610500808201516147e882850182614934565b50506105208101516105606147ff81850183614934565b61054083015191506105c0614816818601846148c2565b81840151925061482a6106408601846148c2565b61058084015192506148406106c08601846148c2565b6105a084015192506148566107408601846148c2565b830151915061369190506107c08401826148c2565b80358252602081013561487d81615586565b6148868161553f565b6020830152604081013561489981615579565b6148a281615532565b604083015260608101356148b58161555e565b8015156060840152505050565b8051825260208101516148d48161553f565b602083015260408101516148e781615532565b60408301526060908101511515910152565b80358252602081013561490b81615586565b6149148161553f565b602083015260408101356149278161555e565b8015156040840152505050565b8051825260208101516149468161553f565b60208301526040908101511515910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156149be578351835292840192918401916001016149a2565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101614ab784615527565b82528260208301529392505050565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b6108408101610a2b82846145c7565b6108808101614fcf82866145c7565b83610840830152614fdf83615527565b610860830152949350505050565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b82815261086081016020838101906150599084016150548387613ced565b6145b3565b61506381856154e8565b6150706040850182614597565b505061507f60408401846154f5565b61508c60608401826145a9565b5061509a6060840184615502565b6150a760808401826145a0565b506150b560808401846154db565b6150c260a0840182614589565b506150d060a08401846154e8565b6150dd60c0840182614597565b506150eb60c084018461550f565b6150f860e08401826145bd565b5061510660e084018461550f565b610100615115818501836145bd565b615121818601866154e8565b91505061012061513381850183614597565b61513f818601866154ce565b9150506101406151518185018361457c565b61515d818601866154ce565b91505061016061516f8185018361457c565b61018091508085013582850152506101a081850135818501526101c091508085013582850152506101e08185013581850152610200915080850135828501525061022081850135818501526102409150808501358285015250610260818501358185015261028091508085013582850152506102a081850135818501526102c091508085013582850152506102e08185013581850152610300915080850135828501525061032081850135818501526103409150808501358285015250610360818501358185015261038091508085013582850152506103a081850135818501526103c091508085013582850152506103e08185013581850152610400915080850135828501525061042081850135818501526104409150808501358285015250610460818501358185015261048091508085013582850152506104a081850135818501526104c091508085013582850152506104e0818501358185015261050091508085013582850152506152eb61052084018286016148f9565b506152fe610580830161056085016148f9565b6153106105e083016105c0850161486b565b6153226106608301610640850161486b565b6153346106e083016106c0850161486b565b6153466107608301610740850161486b565b610b5d6107e083016107c0850161486b565b6000608082019050825182526020830151602083015261537b604084015161551c565b604083015261538d606084015161551c565b606083015292915050565b60808101610a2b82846148c2565b60608101610a2b8284614934565b6000610280820190506153c88284516145a0565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff811182821017156154c657600080fd5b604052919050565b60008235610a2881615549565b60008235610a288161556c565b60008235610a2881615579565b60008235610a28816155a0565b60008235610a2881615586565b60008235610a28816155c7565b806005811061087157fe5b80601d811061087157fe5b6002811061553c57fe5b50565b6006811061553c57fe5b6001600160a01b038116811461553c57600080fd5b801515811461553c57600080fd5b6009811061553c57600080fd5b6002811061553c57600080fd5b6006811061553c57600080fd5b6005811061553c57600080fd5b600d811061553c57600080fd5b6013811061553c57600080fd5b601d811061553c57600080fd5b6004811061553c57600080fdfea2646970667358221220f454e25dcd4f95257908f6302d655c3c5712e106456b382b5b79004f5dc1ad8e64736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061030c5760003560e01c8063a17b75b51161019d578063d51dc3dc116100e9578063e7dc3188116100a2578063ecef55771161007c578063ecef55771461072e578063ee43eda114610741578063f2fde38b14610754578063f52f84e1146107675761030c565b8063e7dc3188146106f5578063e8f7ca3e14610708578063eb0125591461071b5761030c565b8063d51dc3dc14610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e4d063d5146106c2578063e50e0ef7146106d55761030c565b8063ba4d2d2811610156578063c0d9429311610130578063c0d942931461061d578063c3b6e7c214610630578063ccfc347e14610643578063cf5aed12146106565761030c565b8063ba4d2d28146105c9578063bc6a7d76146105ea578063bd1f0a6c1461060a5761030c565b8063a17b75b51461054a578063b02ca0c01461055d578063b0b4888f14610570578063b3c45ebe14610590578063b461dd4f146105a3578063b8282041146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638da5cb5b146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613e7f565b61077a565b005b610339610334366004613e4f565b61084f565b60405161034691906153b4565b60405180910390f35b61036261035d366004613e4f565b610876565b60405161034691906149e5565b61032461037d366004613e7f565b6108ed565b610362610390366004613eae565b610992565b6103246103a3366004613efa565b610a31565b6103bb6103b6366004613efa565b610ae7565b60405161034691906149ca565b6103bb6103d6366004613e4f565b610b64565b6103626103e9366004613e4f565b610b79565b6103246103fc366004613e7f565b610b8e565b61033961040f366004613e4f565b610c69565b610324610422366004613efa565b610c88565b61043a610435366004613e4f565b610d2d565b6040516103469190614986565b610324610455366004613e7f565b610d47565b610324610468366004613e7f565b610e0e565b61036261047b366004613eae565b610ee9565b61032461048e36600461405b565b610f07565b6104a66104a1366004613e4f565b610fcd565b6040516103469190614fb1565b6104c66104c1366004613eae565b61106b565b60405161034691906153a6565b61032461110a565b6104ee6104e9366004613e4f565b611189565b604051610346929190614aaa565b61036261050a366004613e4f565b6111b2565b61032461051d36600461405b565b611586565b61036261053036600461407f565b61163f565b61053d61164d565b6040516103469190614958565b610362610558366004613e4f565b61165c565b61036261056b366004613eae565b611671565b61058361057e366004613eae565b611692565b6040516103469190615398565b61053d61059e366004613e4f565b611731565b6103626105b1366004613eae565b611750565b6103626105c4366004613e4f565b611796565b6105dc6105d7366004613eae565b611869565b6040516103469291906149d5565b6105fd6105f8366004613eae565b611893565b6040516103469190615358565b610324610618366004613e7f565b611932565b61032461062b366004613f47565b6119ca565b61036261063e366004613e4f565b611aca565b6103bb610651366004613dfb565b611cc7565b610669610664366004613eae565b611cdc565b6040516103469190615499565b610362610684366004613eae565b611cfa565b610324610697366004613eae565b611d40565b6103246106aa366004613ecf565b611daf565b6103626106bd36600461409b565b611e4b565b6103246106d0366004613f74565b611e69565b6106e86106e3366004613e4f565b611f78565b6040516103469190614fed565b610324610703366004613dfb565b611fd6565b6103bb610716366004613e7f565b61202f565b61053d610729366004613eae565b612065565b61066961073c366004613eae565b6120fb565b61053d61074f366004613e4f565b612191565b610324610762366004613dfb565b6121b1565b610362610775366004613e4f565b612267565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614c23565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a2090610841908490879061496c565b60405180910390a250505050565b6108576139ea565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614c23565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614ef5565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906149ee565b60405180910390a1505050565b6000828152600160205260408082209051639151ef2360e01b815273__ANNEncoder____________________________91639151ef23916109d891908690600401615028565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613e67565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614ea6565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614a95565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d390614ac6565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614b23565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906149ee565b610c716139ea565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614ea6565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614a95565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614c23565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb90610841908490879061496c565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614e49565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614d11565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906149ee565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614c23565b610f8c610f723684900384018461445e565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc091906149e5565b60405180910390a2505050565b610fd5613a84565b6000828152600160205260409081902090516379d346b760e01b815273__ANNEncoder____________________________916379d346b79161101a91906004016149e5565b6108406040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e91906140c6565b611073613c19565b600083815260016020526040908190209051633542f3e360e11b815273__ANNEncoder____________________________91636a85e7c6916110ba91908690600401615028565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614443565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d390614db7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613c3c565b6111dc8372636f6e74726163745265666572656e63655f3160681b611893565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b22906112369085906004016149e5565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613e33565b6112a25760405162461bcd60e51b81526004016107d390614f49565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b6120fb565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b81526004016113229190614a70565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611372919061455b565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b09190614a4d565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613e67565b9050831561142157611413601b42611e4b565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e4b565b600282600581111561148457fe5b141561152e57611492613c19565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a90600401614a0d565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190614443565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613c19565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a90600401614a2a565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614c23565b61160b6115f13684900384018461445e565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc091906149e5565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b61169a613c63565b6000838152600160205260409081902090516323c352cb60e11b815273__ANNEncoder____________________________91634786a596916116e191908690600401615028565b60806040518083038186803b1580156116f957600080fd5b505af415801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614428565b600090815260016020819052604090912001546001600160a01b031690565b60008281526001602052604080822090516313d0ad6960e31b815273__ANNEncoder____________________________91639e856b48916109d891908690600401615028565b6000818152600160205260408120816117ae84613096565b600583015460009081526003840160205260409020546004840154919250901580156117d8575081155b156117ea575060009250610871915050565b6000806117f684611189565b9150915060008061180685611189565b9150915080600014806118225750821580159061182257508083105b8061184657508083148015611846575061183b8261163f565b6118448561163f565b105b1561185a5785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b61189b613c3c565b600083815260016020526040908190209051632fbc709f60e01b815273__ANNEncoder____________________________91632fbc709f916118e291908690600401615028565b60806040518083038186803b1580156118fa57600080fd5b505af415801561190e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906143de565b611949826000356001600160e01b03191633610ae7565b6119655760405162461bcd60e51b81526004016107d390614bc6565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906149ee565b6000828152600160208190526040909120015482906001600160a01b0316331480611a075750611a07816000356001600160e01b03191633610ae7565b611a235760405162461bcd60e51b81526004016107d390614c23565b600083815260016020526040908190209051638198ef6d60e01b815273__ANNEncoder____________________________91638198ef6d91611a6a91908690600401615036565b60006040518083038186803b158015611a8257600080fd5b505af4158015611a96573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b60008181526001602081905260408220015482906001600160a01b0316331480611b065750611b06816000356001600160e01b03191633610ae7565b611b225760405162461bcd60e51b81526004016107d390614c23565b600083815260016020526040812090611b3a85613096565b60058301546000908152600384016020526040902054600484015491925090158015611b64575081155b15611b765750600093506108e7915050565b600080611b8284611189565b91509150600080611b9285611189565b9150915084861415611c07578260028801600086601c811115611bb157fe5b601c811115611bbc57fe5b8152602081019190915260400160002055600487015460058801541415611bee5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611c1d57508215801590611c1d57508083105b80611c4157508083148015611c415750611c368261163f565b611c3f8561163f565b105b15611c84578260028801600086601c811115611c5957fe5b601c811115611c6457fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611c98575060048701546005880154145b15611cae5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61342f16565b600082815260016020526040808220905163ee6a446f60e01b815273__ANNEncoder____________________________9163ee6a446f916109d891908690600401615028565b6000828152600160208190526040909120015482906001600160a01b0316331480611d7d5750611d7d816000356001600160e01b03191633610ae7565b611d995760405162461bcd60e51b81526004016107d390614c23565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dec5750611dec816000356001600160e01b03191633610ae7565b611e085760405162461bcd60e51b81526004016107d390614c23565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e5c57fe5b60ff16901b179392505050565b3360009081526002602052604090205460ff16611e985760405162461bcd60e51b81526004016107d390614cbd565b611ef689611eab368a90038a018a61445e565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611eee9250505036899003890189614376565b8787876134db565b600089815260016020526040908190209051638198ef6d60e01b815273__ANNEncoder____________________________91638198ef6d91611f3d91908c90600401615036565b60006040518083038186803b158015611f5557600080fd5b505af4158015611f69573d6000803e3d6000fd5b50505050505050505050505050565b611f80613c84565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611fde612c70565b6000546001600160a01b0390811691161461200b5760405162461bcd60e51b81526004016107d390614db7565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6000828152600160205260408082209051637154b74160e11b815273__ANNEncoder____________________________9163e2a96e82916120ab91908690600401615028565b60206040518083038186803b1580156120c357600080fd5b505af41580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613e17565b6000828152600160205260408082209051630ac097cd60e21b815273__ANNEncoder____________________________91632b025f349161214191908690600401615028565b60206040518083038186803b15801561215957600080fd5b505af415801561216d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061455b565b60009081526001602052604090205461010090046001600160a01b031690565b6121b9612c70565b6000546001600160a01b039081169116146121e65760405162461bcd60e51b81526004016107d390614db7565b6001600160a01b03811661220c5760405162461bcd60e51b81526004016107d390614b80565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6122846139ea565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c6139ea565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b613660565b61299c826b465f7374617475734461746560a01b836020015160001b613660565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b613660565b6129e7826d465f6d617475726974794461746560901b836060015160001b613660565b612a0a826d465f65786572636973654461746560901b836080015160001b613660565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b613660565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b613660565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b613660565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b613660565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b613660565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b613660565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b613660565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b613660565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b613660565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b613660565b612bd38269465f7175616e7469747960b01b83610200015160001b613660565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b613660565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b613660565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b613660565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b613660565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61369616565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61369616565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff6136ab16565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff6136ab16565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff6136ab16565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff61372716565b60405162461bcd60e51b81526004016107d390614dec565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b613660565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b613660565b612e33826b6d617475726974794461746560a01b836060015160001b613660565b612e54826b65786572636973654461746560a01b836080015160001b613660565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b613660565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b613660565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b613660565b612ee382691999595058d8dc9d595960b21b83610120015160001b613660565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b613660565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b613660565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b613660565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b613660565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b613660565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b613660565b61300582677175616e7469747960c01b83610200015160001b613660565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b613660565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b613660565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b613660565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b613660565b60008181526001602052604081206130ac613a84565b6040516379d346b760e01b815273__ANNEncoder____________________________906379d346b7906130e39085906004016149e5565b6108406040518083038186803b1580156130fc57600080fd5b505af4158015613110573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313491906140c6565b82549091506000908190819081906131e09061010090046001600160a01b0316632249a3618760028a0185600981526020019081526020016000205460096040518463ffffffff1660e01b815260040161319093929190614fc0565b60206040518083038186803b1580156131a857600080fd5b505afa1580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190613e67565b9150915082600014806131f257508281105b8061321657508083148015613216575061320b8461163f565b6132148361163f565b105b15613222578092508193505b50508354600a6000818152600287016020526040808220549051632249a36160e01b815291938493613273936101009092046001600160a01b031692632249a36192613190928b9291600401614fc0565b91509150826000148061328f5750801580159061328f57508281105b806132be575080158015906132a357508083145b80156132be57506132b38461163f565b6132bc8361163f565b105b156132ca578092508193505b5050835460036000818152600287016020526040808220549051632249a36160e01b81529193849361331b936101009092046001600160a01b031692632249a36192613190928b9291600401614fc0565b9150915082600014806133375750801580159061333757508281105b806133665750801580159061334b57508083145b8015613366575061335b8461163f565b6133648361163f565b105b15613372578092508193505b5050835460046000818152600287016020526040808220549051632249a36160e01b8152919384936133c2936101009092046001600160a01b031692632249a36192613190928b92918101614fc0565b9150915082600014806133de575080158015906133de57508281105b8061340d575080158015906133f257508083145b801561340d57506134028461163f565b61340b8361163f565b105b15613419578092508193505b50506134258282611e4b565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b821415613480575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b8214156134d3575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000878152600160205260409020805460ff161561350b5760405162461bcd60e51b81526004016107d390614c72565b6001600160a01b03831660009081526002602052604090205460ff1615156001146135485760405162461bcd60e51b81526004016107d390614d6e565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556135e68188612da0565b6135f6818863ffffffff61294216565b613606818763ffffffff61374e16565b6001600160a01b0382161561361f5761361f88836137b6565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd896468860405161364e91906149e5565b60405180910390a15050505050505050565b6000828152600e8401602052604090205481141561367d57613691565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b60008080806136bf62015180875b0461382d565b600c9188016000198101838104949094019650945092509006600101915060006136e984846138c3565b9050808211156136f7578091505b6201518087066201518061370c868686613949565b020194508685101561371d57600080fd5b5050505092915050565b600080808061373962015180876136b9565b91870194509250905060006136e984846138c3565b60005b8151811015613691576000801b82828151811061376a57fe5b6020026020010151141561377d57613691565b81818151811061378957fe5b60209081029190910181015160008381526003860190925260409091205560010160048301819055613751565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161382191614a95565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161388457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806138d45750816003145b806138df5750816005145b806138ea5750816007145b806138f55750816008145b80613900575081600a145b8061390b575081600c145b156139185750601f610a2b565b816002146139285750601e610a2b565b613931836139c5565b61393c57601c61393f565b601d5b60ff169392505050565b60006107b284101561395a57600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161399657fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000600482061580156139da57506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516105e081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000801916815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bc6613c19565b8152602001613bd3613c19565b8152602001613be0613c63565b8152602001613bed613c63565b8152602001613bfa613c63565b8152602001613c07613c63565b8152602001613c14613c63565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081018252600080825260208201819052909182019081526020016000613c14565b60408051608081019091526000808252602082019081526020016000613c2f565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b81615549565b8051610a2b81615549565b8051610a2b8161556c565b8051610a2b81615579565b8035610a2b81615586565b8051610a2b816155a0565b8035610a2b816155ad565b8051610a2b816155ad565b8051610a2b81615586565b8051610a2b816155c7565b600061084082840312156108e7578081fd5b6000608082840312156108e7578081fd5b600060808284031215613d4d578081fd5b613d5760806154a7565b9050815181526020820151613d6b81615586565b60208201526040820151613d7e81615579565b60408201526060820151613d918161555e565b606082015292915050565b600060608284031215613dad578081fd5b613db760606154a7565b9050815181526020820151613dcb81615586565b60208201526040820151613dde8161555e565b604082015292915050565b600061028082840312156108e7578081fd5b600060208284031215613e0c578081fd5b8135610a2881615549565b600060208284031215613e28578081fd5b8151610a2881615549565b600060208284031215613e44578081fd5b8151610a288161555e565b600060208284031215613e60578081fd5b5035919050565b600060208284031215613e78578081fd5b5051919050565b60008060408385031215613e91578081fd5b823591506020830135613ea381615549565b809150509250929050565b60008060408385031215613ec0578182fd5b50508035926020909101359150565b600080600060608486031215613ee3578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613f0e578081fd5b8335925060208401356001600160e01b031981168114613f2c578182fd5b91506040840135613f3c81615549565b809150509250925092565b6000806108608385031215613f5a578182fd5b82359150613f6b8460208501613d19565b90509250929050565b6000806000806000806000806000610be08a8c031215613f92578687fd5b89359850613fa38b60208c01613d19565b9750613fb38b6108608c01613de9565b9650610ae08a013567ffffffffffffffff80821115613fd0578687fd5b818c018d601f820112613fe1578788fd5b8035925081831115613ff1578788fd5b8d60208085028301011115614004578788fd5b602001975090955061401c90508b610b008c01613d2b565b935061402c8b610b808c01613cab565b925061403c8b610ba08c01613cab565b915061404c8b610bc08c01613cab565b90509295985092959850929598565b6000806102a0838503121561406e578182fd5b82359150613f6b8460208501613de9565b600060208284031215614090578081fd5b8135610a28816155ba565b600080604083850312156140ad578182fd5b82356140b8816155ba565b946020939093013593505050565b600061084082840312156140d8578081fd5b6140e36105e06154a7565b6140ed8484613cf8565b81526140fc8460208501613ccc565b602082015261410e8460408501613ce2565b60408201526141208460608501613d03565b60608201526141328460808501613cc1565b60808201526141448460a08501613ccc565b60a08201526141568460c08501613d0e565b60c08201526141688460e08501613d0e565b60e082015261010061417c85828601613ccc565b9082015261012061418f85858301613cb6565b908201526101406141a285858301613cb6565b90820152610160838101519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a080840151908201526102c080840151908201526102e08084015190820152610300808401519082015261032080840151908201526103408084015190820152610360808401519082015261038080840151908201526103a080840151908201526103c080840151908201526103e08084015190820152610400808401519082015261042080840151908201526104408084015190820152610460808401519082015261048080840151908201526104a080840151908201526104c080840151908201526104e080840151908201526105006142f485828601613d9c565b9082015261056061430785858301613d9c565b6105208301526105c061431c86828701613d3c565b610540840152614330866106408701613d3c565b82840152614342866106c08701613d3c565b610580840152614356866107408701613d3c565b6105a084015261436a866107c08701613d3c565b90830152509392505050565b600060808284031215614387578081fd5b61439160806154a7565b823561439c81615549565b815260208301356143ac81615549565b602082015260408301356143bf81615549565b604082015260608301356143d281615549565b60608201529392505050565b6000608082840312156143ef578081fd5b6143f960806154a7565b8251815260208301516020820152604083015161441581615593565b604082015260608301516143d281615593565b600060808284031215614439578081fd5b610a288383613d3c565b600060608284031215614454578081fd5b610a288383613d9c565b6000610280808385031215614471578182fd5b61447a816154a7565b6144848585613cd7565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60006020828403121561456c578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061459357fe5b9052565b61459381615532565b6145938161553f565b600d811061459357fe5b6013811061459357fe5b6004811061459357fe5b6145d28282516145b3565b60208101516145e46020840182614597565b5060408101516145f760408401826145a9565b50606081015161460a60608401826145a0565b50608081015161461d6080840182614589565b5060a081015161463060a0840182614597565b5060c081015161464360c08401826145bd565b5060e081015161465660e08401826145bd565b506101008082015161466a82850182614597565b50506101208082015161467f8285018261457c565b5050610140808201516146948285018261457c565b5050610160818101519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a080820151908301526102c080820151908301526102e08082015190830152610300808201519083015261032080820151908301526103408082015190830152610360808201519083015261038080820151908301526103a080820151908301526103c080820151908301526103e08082015190830152610400808201519083015261042080820151908301526104408082015190830152610460808201519083015261048080820151908301526104a080820151908301526104c080820151908301526104e08082015190830152610500808201516147e882850182614934565b50506105208101516105606147ff81850183614934565b61054083015191506105c0614816818601846148c2565b81840151925061482a6106408601846148c2565b61058084015192506148406106c08601846148c2565b6105a084015192506148566107408601846148c2565b830151915061369190506107c08401826148c2565b80358252602081013561487d81615586565b6148868161553f565b6020830152604081013561489981615579565b6148a281615532565b604083015260608101356148b58161555e565b8015156060840152505050565b8051825260208101516148d48161553f565b602083015260408101516148e781615532565b60408301526060908101511515910152565b80358252602081013561490b81615586565b6149148161553f565b602083015260408101356149278161555e565b8015156040840152505050565b8051825260208101516149468161553f565b60208301526040908101511515910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156149be578351835292840192918401916001016149a2565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101614ab784615527565b82528260208301529392505050565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b6108408101610a2b82846145c7565b6108808101614fcf82866145c7565b83610840830152614fdf83615527565b610860830152949350505050565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b82815261086081016020838101906150599084016150548387613ced565b6145b3565b61506381856154e8565b6150706040850182614597565b505061507f60408401846154f5565b61508c60608401826145a9565b5061509a6060840184615502565b6150a760808401826145a0565b506150b560808401846154db565b6150c260a0840182614589565b506150d060a08401846154e8565b6150dd60c0840182614597565b506150eb60c084018461550f565b6150f860e08401826145bd565b5061510660e084018461550f565b610100615115818501836145bd565b615121818601866154e8565b91505061012061513381850183614597565b61513f818601866154ce565b9150506101406151518185018361457c565b61515d818601866154ce565b91505061016061516f8185018361457c565b61018091508085013582850152506101a081850135818501526101c091508085013582850152506101e08185013581850152610200915080850135828501525061022081850135818501526102409150808501358285015250610260818501358185015261028091508085013582850152506102a081850135818501526102c091508085013582850152506102e08185013581850152610300915080850135828501525061032081850135818501526103409150808501358285015250610360818501358185015261038091508085013582850152506103a081850135818501526103c091508085013582850152506103e08185013581850152610400915080850135828501525061042081850135818501526104409150808501358285015250610460818501358185015261048091508085013582850152506104a081850135818501526104c091508085013582850152506104e0818501358185015261050091508085013582850152506152eb61052084018286016148f9565b506152fe610580830161056085016148f9565b6153106105e083016105c0850161486b565b6153226106608301610640850161486b565b6153346106e083016106c0850161486b565b6153466107608301610740850161486b565b610b5d6107e083016107c0850161486b565b6000608082019050825182526020830151602083015261537b604084015161551c565b604083015261538d606084015161551c565b606083015292915050565b60808101610a2b82846148c2565b60608101610a2b8284614934565b6000610280820190506153c88284516145a0565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff811182821017156154c657600080fd5b604052919050565b60008235610a2881615549565b60008235610a288161556c565b60008235610a2881615579565b60008235610a28816155a0565b60008235610a2881615586565b60008235610a28816155c7565b806005811061087157fe5b80601d811061087157fe5b6002811061553c57fe5b50565b6006811061553c57fe5b6001600160a01b038116811461553c57600080fd5b801515811461553c57600080fd5b6009811061553c57600080fd5b6002811061553c57600080fd5b6006811061553c57600080fd5b6005811061553c57600080fd5b600d811061553c57600080fd5b6013811061553c57600080fd5b601d811061553c57600080fd5b6004811061553c57600080fdfea2646970667358221220f454e25dcd4f95257908f6302d655c3c5712e106456b382b5b79004f5dc1ad8e64736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "388:7445:2:-:0;;;480:58;;;;;;;;;-1:-1:-1;865:17:116;885:12;-1:-1:-1;;;;;885:10:116;:12;:::i;:::-;907:6;:18;;-1:-1:-1;;;;;;907:18:116;-1:-1:-1;;;;;907:18:116;;;;;;;940:43;;907:18;;-1:-1:-1;907:18:116;940:43;;907:6;;940:43;831:159;388:7445:2;;768:104:115;855:10;768:104;:::o;388:7445:2:-;;;;;;;",
  "deployedSourceMap": "388:7445:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5134:271:8;;;;;;:::i;:::-;;:::i;:::-;;615:176:19;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2354:304:16;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3033:494:13:-;;;;;;:::i;:::-;;:::i;3026:271:2:-;;;;;;:::i;:::-;;:::i;1194:397:6:-;;;;;;:::i;:::-;;:::i;2741:280::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1681:158:8:-;;;;;;:::i;:::-;;:::i;2834:190:16:-;;;;;;:::i;:::-;;:::i;1924:805:13:-;;;;;;:::i;:::-;;:::i;931:194:19:-;;;;;;:::i;:::-;;:::i;1970:399:6:-;;;;;;:::i;:::-;;:::i;1767:186:16:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4660:280:8:-;;;;;;:::i;:::-;;:::i;844:745:13:-;;;;;;:::i;:::-;;:::i;1619:242:19:-;;;;;;:::i;:::-;;:::i;2566:264::-;;;;;;:::i;:::-;;:::i;1592:182:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3577:277::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1689:145:116:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3183:3322:16:-;;;;;;:::i;:::-;;:::i;2090:237:19:-;;;;;;:::i;:::-;;:::i;956:145:82:-;;;;;;:::i;:::-;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;1332:176:16:-;;;;;;:::i;:::-;;:::i;971:196::-;;;;;;:::i;:::-;;:::i;3860:276:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4264:157:8:-;;;;;;:::i;:::-;;:::i;3303:268:2:-;;;;;;:::i;:::-;;:::i;6636:1153:16:-;;;;;;:::i;:::-;;:::i;10335:286::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4142:311:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3851:539:13:-;;;;;;:::i;:::-;;:::i;1957:225:2:-;;;;;;:::i;:::-;;:::i;8059:2064:16:-;;;;;;:::i;:::-;;:::i;895:46:8:-;;;;;;:::i;:::-;;:::i;1131:237:19:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2743:277:2:-;;;;;;:::i;:::-;;:::i;2145:203:16:-;;;;;;:::i;:::-;;:::i;10833:248::-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;983:469:2:-;;;;;;:::i;:::-;;:::i;4599:179:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1411:101:8:-;;;;;;:::i;:::-;;:::i;3276:186:6:-;;;;;;:::i;:::-;;:::i;2460:277:2:-;;;;;;:::i;:::-;;:::i;2188:266::-;;;;;;:::i;:::-;;:::i;3904:159:8:-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;1959:180:16:-;;;;;;:::i;:::-;;:::i;5134:271:8:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;;;;;;;;;5263:17:8::1;5283:15:::0;;;:6:::1;:15;::::0;;;;;;;;:21:::1;::::0;;-1:-1:-1;;;;;5314:29:8;;::::1;-1:-1:-1::0;;;;;;5314:29:8;::::1;;::::0;;;5359:39;;5283:21;::::1;::::0;5290:7;;5359:39:::1;::::0;::::1;::::0;5283:21;;5338:5;;5359:39:::1;:::i;:::-;;;;;;;;811:1:6;5134:271:8::0;;;:::o;615:176:19:-;714:12;;:::i;:::-;749:15;;;;:6;:15;;;;;:35;;:33;:35::i;:::-;742:42;;615:176;;;;:::o;2354:304:16:-;2478:7;664:15:6;;;:6;:15;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2501:20:16::1;2524:15:::0;;;:6:::1;:15;::::0;;;;:37;;;;2571:50;;;2524:37;-1:-1:-1;811:1:6::1;2354:304:16::0;;;;:::o;3033:494:13:-;3174:39;3184:7;3193;;-1:-1:-1;;;;;;3193:7:13;3202:10;3174:9;:39::i;:::-;3153:138;;;;-1:-1:-1;;;3153:138:13;;;;;;;:::i;:::-;3302:26;3331:15;;;:6;:15;;;;;;;:25;;:40;;-1:-1:-1;;;;;3382:60:13;;;-1:-1:-1;;;;;;3382:60:13;;;;;;3458:62;;3331:40;;;3458:62;;;;3338:7;;3331:40;;3425:17;;3458:62;:::i;:::-;;;;;;;;3033:494;;;:::o;3026:271:2:-;3194:7;3224:15;;;:6;:15;;;;;;:66;;-1:-1:-1;;;3224:66:2;;:55;;;;:66;;:15;3280:9;;3224:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:73;;3026:271;;;;;:::o;1194:397:6:-;1342:39;1352:7;1361;;-1:-1:-1;;;;;;1361:7:6;1370:10;1342:9;:39::i;:::-;1321:133;;;;-1:-1:-1;;;1321:133:6;;;;;;;:::i;:::-;1465:15;;;;1516:4;1465:15;;;;;;;;-1:-1:-1;;;;;;1465:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;1465:48:6;;;;;;;;;;;:55;;-1:-1:-1;;1465:55:6;;;;;;;1536:48;;1472:7;;1536:48;;;;1488:15;;1536:48;:::i;:::-;;;;;;;;1194:397;;;:::o;2741:280::-;2867:4;2908:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;2908:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2908:48:6;;;;;;;;;;;;;:96;;-1:-1:-1;2960:15:6;;;;:6;:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;2960:44:6;;;;;;;;;;;;2908:96;2887:127;;2741:280;;;;;;:::o;1681:158:8:-;1784:4;1811:15;;;:6;:15;;;;;:21;;;;1681:158::o;2834:190:16:-;2945:7;2975:15;;;:6;:15;;;;;:42;;;;2834:190::o;1924:805:13:-;2083:35;2121:15;;;:6;:15;;;;;:49;;;-1:-1:-1;;;;;2121:49:13;2202:41;2181:150;;;;-1:-1:-1;;;2181:150:13;;;;;;;:::i;:::-;2362:10;-1:-1:-1;;;;;2362:41:13;;;;:84;;;2407:39;2417:7;2426;;-1:-1:-1;;;;;;2426:7:13;2435:10;2407:9;:39::i;:::-;2341:192;;;;-1:-1:-1;;;2341:192:13;;;;;;;:::i;:::-;2544:15;;;;:6;:15;;;;;;;:49;;:78;;-1:-1:-1;;;;;;2544:78:13;-1:-1:-1;;;;;2544:78:13;;;;;2638:84;;;;;2544:15;;2666:27;;2544:78;;2638:84;:::i;931:194:19:-;1039:12;;:::i;:::-;1074:15;;;;:6;:15;;;;;:44;;:42;:44::i;1970:399:6:-;2119:39;2129:7;2138;;-1:-1:-1;;;;;;2138:7:6;2147:10;2119:9;:39::i;:::-;2098:133;;;;-1:-1:-1;;;2098:133:6;;;;;;;:::i;:::-;2293:5;2242:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;2242:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2242:48:6;;;;;;;;;;;:56;;-1:-1:-1;;2242:56:6;;;2314:48;;2249:7;;2314:48;;;;2265:15;;2314:48;:::i;1767:186:16:-;1908:15;;;;:6;:15;;;;;1869:16;;1908:38;;:36;:38::i;4660:280:8:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;4791:18:8::1;4812:15:::0;;;:6:::1;:15;::::0;;;;;;:22;;-1:-1:-1;;;;;4844:31:8;;::::1;4812:22;4844:31:::0;;::::1;-1:-1:-1::0;;;;;;4844:31:8;::::1;;::::0;;;4891:42;;4812:22;;::::1;::::0;;;::::1;::::0;4819:7;;4891:42:::1;::::0;::::1;::::0;4812:22;;4869:6;;4891:42:::1;:::i;844:745:13:-:0;993:30;1026:15;;;:6;:15;;;;;:44;;;-1:-1:-1;;;;;1026:44:13;1102:36;1081:140;;;;-1:-1:-1;;;1081:140:13;;;;;;;:::i;:::-;1252:10;-1:-1:-1;;;;;1252:36:13;;;;:79;;;1292:39;1302:7;1311;;-1:-1:-1;;;;;;1311:7:13;1320:10;1292:9;:39::i;:::-;1231:182;;;;-1:-1:-1;;;1231:182:13;;;;;;;:::i;:::-;1424:15;;;;:6;:15;;;;;;;:44;;:68;;-1:-1:-1;;;;;;1424:68:13;-1:-1:-1;;;;;1424:68:13;;;;;1508:74;;;;;1424:15;;1536:22;;1424:68;;1508:74;:::i;1619:242:19:-;1756:7;1786:15;;;:6;:15;;;;;:68;;1844:9;1786:68;:57;:68;:::i;2566:264::-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2711:49:19::1;;;::::0;;::::1;::::0;::::1;2754:5:::0;2711:49:::1;:::i;:::-;:15;::::0;;;:6:::1;:15;::::0;;;;;:49:::1;:42;:49;:::i;:::-;2797:7;2775:48;2806:5;:16;;;2775:48;;;;;;:::i;:::-;;;;;;;;2566:264:::0;;;:::o;1592:182:2:-;1691:15;;:::i;:::-;1729;;;;:6;:15;;;;;;;:38;;-1:-1:-1;;;1729:38:2;;:36;;;;:38;;:15;:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3577:277::-;3747:9;;:::i;:::-;3779:15;;;;:6;:15;;;;;;;:68;;-1:-1:-1;;;3779:68:2;;:57;;;;:68;;:15;3837:9;;3779:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1689:145:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;1795:1:::1;1779:6:::0;;1758:40:::1;::::0;-1:-1:-1;;;;;1779:6:116;;::::1;::::0;1758:40:::1;::::0;1795:1;;1758:40:::1;1825:1;1808:19:::0;;-1:-1:-1;;;;;;1808:19:116::1;::::0;;1689:145::o;487:293:82:-;569:9;;;659:3;649:13;;;625:40;;;;;;;;603:62;-1:-1:-1;;698:32:82;;;;-1:-1:-1;487:293:82;;;:::o;3183:3322:16:-;3296:7;3319:44;;:::i;:::-;3366:74;3409:7;-1:-1:-1;;;3366:42:16;:74::i;:::-;3481:26;;3319:121;;-1:-1:-1;3481:40:16;;;;:98;;-1:-1:-1;3553:26:16;3525:19;:24;;;:54;;;;;;;;;3481:98;3477:2994;;;3623:26;;3716:27;;;;3834:65;;-1:-1:-1;;;3834:65:16;;-1:-1:-1;;;;;3834:46:16;;;;;:65;;3623:26;;3834:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3809:190;;;;-1:-1:-1;;;3809:190:16;;;;;;;:::i;:::-;4014:20;4037:54;4067:7;-1:-1:-1;;;4037:29:16;:54::i;:::-;4014:77;;4105:42;4170:64;4200:7;-1:-1:-1;;;4170:29:16;:64::i;:::-;4150:85;;;;;;;;;;4105:130;;4249:49;4336:18;-1:-1:-1;;;;;4321:64:16;;4386:17;4321:106;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4301:127;;;;;;;;;;4249:179;;4442:35;4495:18;-1:-1:-1;;;;;4480:64:16;;4545:17;4480:104;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4442:142;-1:-1:-1;4659:16:16;;4655:258;;4749:149;4782:13;4865:15;4749:11;:149::i;:::-;4742:156;;;;;;;;;;;4655:258;5075:22;5049;:48;;;;;;;;;;:123;;;;;5150:22;5117:55;;;;;;;;:29;:55;;;;;;;;;5049:123;5028:1433;;;5349:22;5316:29;:55;;;;;;;;;5312:1135;;;5402:124;5439:12;5477:27;5402:11;:124::i;5312:1135::-;5588:22;5555:29;:55;;;;;;;;;5551:896;;;5634:31;;:::i;:::-;5668:100;;-1:-1:-1;;;5668:100:16;;-1:-1:-1;;;;;5668:66:16;;;;;:100;;5735:17;;5668:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5634:134;;5797:171;5834:12;5872:74;5895:21;5918:27;5872:22;:74::i;5797:171::-;5790:178;;;;;;;;;;;;5551:896;6030:22;5997:29;:55;;;;;;;;;5993:454;;;6076:37;;:::i;:::-;6116:106;;-1:-1:-1;;;6116:106:16;;-1:-1:-1;;;;;6116:66:16;;;;;:106;;6183:17;;6116:106;;;:::i;5993:454::-;3477:2994;;;;;;;-1:-1:-1;6496:1:16;;3183:3322;-1:-1:-1;;3183:3322:16:o;2090:237:19:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2226:40:19::1;;;::::0;;::::1;::::0;::::1;2260:5:::0;2226:40:::1;:::i;:::-;:15;::::0;;;:6:::1;:15;::::0;;;;;:40:::1;:33;:40;:::i;:::-;2294:7;2281:39;2303:5;:16;;;2281:39;;;;;;:::i;956:145:82:-:0;1046:7;1084:9;1076:18;;;;;;;1066:77:116;1104:7;1130:6;-1:-1:-1;;;;;1130:6:116;1066:77;:::o;1332:176:16:-;1440:7;1470:15;;;:6;:15;;;;;:31;;;;1332:176::o;971:196::-;1092:7;1122:15;;;:6;:15;;;;;;;;:38;;;:31;;;;:38;;;;;;971:196::o;3860:276:2:-;4029:10;;:::i;:::-;4062:15;;;;:6;:15;;;;;;;:67;;-1:-1:-1;;;4062:67:2;;:56;;;;:67;;:15;4119:9;;4062:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4264:157:8:-;4363:7;4393:15;;;:6;:15;;;;;;;;:21;;-1:-1:-1;;;;;4393:21:8;;4264:157::o;3303:268:2:-;3470:6;3499:15;;;:6;:15;;;;;;:65;;-1:-1:-1;;;3499:65:2;;:54;;;;:65;;:15;3554:9;;3499:65;;;:::i;6636:1153:16:-;6748:7;6793:15;;;:6;:15;;;;;6748:7;6844:27;6800:7;6844:18;:27::i;:::-;6931:32;;;;6881:25;6909:55;;;:21;;;:55;;;;;;6979:21;;;;6818:53;;-1:-1:-1;6909:55:16;6979:26;:59;;;;-1:-1:-1;7009:29:16;;6979:59;6975:82;;;-1:-1:-1;7055:1:16;;-1:-1:-1;7040:17:16;;-1:-1:-1;;7040:17:16;6975:82;7069:34;7105:35;7144:28;7156:15;7144:11;:28::i;:::-;7068:104;;;;7183:36;7221:37;7262:30;7274:17;7262:11;:30::i;:::-;7182:110;;;;7321:29;7354:1;7321:34;:135;;;-1:-1:-1;7360:32:16;;;;;:95;;;7426:29;7396:27;:59;7360:95;7320:350;;;;7522:29;7491:27;:60;:165;;;;;7614:42;7629:26;7614:14;:42::i;:::-;7571:40;7586:24;7571:14;:40::i;:::-;:85;7491:165;7303:480;;;7702:15;7695:22;;;;;;;;;;;7303:480;7755:17;7748:24;;;;;;;;;;;10335:286;10456:4;10505:15;;;:6;:15;;;;;;;;:34;;;:26;;;;:34;;;;:44;;10563:41;;;10505:44;;;;;10335:286::o;4142:311:2:-;4323:24;;:::i;:::-;4370:15;;;;:6;:15;;;;;;;:76;;-1:-1:-1;;;4370:76:2;;:65;;;;:76;;:15;4436:9;;4370:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3851:539:13:-;4002:39;4012:7;4021;;-1:-1:-1;;;;;;4021:7:13;4030:10;4002:9;:39::i;:::-;3981:143;;;;-1:-1:-1;;;3981:143:13;;;;;;;:::i;:::-;4135:31;4169:15;;;:6;:15;;;;;;;:45;;;;-1:-1:-1;;;;;4225:70:13;;;-1:-1:-1;;;;;;4225:70:13;;;;;;4311:72;;4169:45;;;4311:72;;;;4176:7;;4169:45;;4273:22;;4311:72;:::i;1957:225:2:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2096:15:2::1;::::0;;;:6:::1;:15;::::0;;;;;;:43;;-1:-1:-1;;;2096:43:2;;:36:::1;::::0;::::1;::::0;:43:::1;::::0;:15;2133:5;;2096:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2154:21:2::1;::::0;2167:7;;-1:-1:-1;2154:21:2::1;::::0;-1:-1:-1;2154:21:2;;::::1;1957:225:::0;;;:::o;8059:2064:16:-;8189:7;664:15:6;;;:6;:15;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;8212:19:16::1;8234:15:::0;;;:6:::1;:15;::::0;;;;;8285:27:::1;8241:7:::0;8285:18:::1;:27::i;:::-;8372:32:::0;;;;8322:25:::1;8350:55:::0;;;:21;;;:55:::1;::::0;;;;;8420:21;;;;8259:53;;-1:-1:-1;8350:55:16;8420:26;:59;::::1;;;-1:-1:-1::0;8450:29:16;;8420:59:::1;8416:82;;;-1:-1:-1::0;8496:1:16::1;::::0;-1:-1:-1;8481:17:16::1;::::0;-1:-1:-1;;8481:17:16::1;8416:82;8510:34;8546:35:::0;8585:28:::1;8597:15;8585:11;:28::i;:::-;8509:104;;;;8624:36;8662:37:::0;8703:30:::1;8715:17;8703:11;:30::i;:::-;8623:110;;;;8853:17;8834:15;:36;8830:399;;;8959:27:::0;8886:14:::1;::::0;::::1;:44;8931:24:::0;8886:70:::1;::::0;::::1;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8886:70:16;:100;9040:21;;;;9004:32;;;;:57:::1;9000:80;;;-1:-1:-1::0;9078:1:16::1;::::0;-1:-1:-1;9063:17:16::1;::::0;-1:-1:-1;;;;;;9063:17:16::1;9000:80;-1:-1:-1::0;;;9094:32:16;;;;:37;;9130:1:::1;9094:37;::::0;;-1:-1:-1;9203:15:16;-1:-1:-1;9196:22:16::1;::::0;-1:-1:-1;9196:22:16::1;8830:399;9326:34:::0;;;:135:::1;;-1:-1:-1::0;9365:32:16;;;::::1;::::0;:95:::1;;;9431:29;9401:27;:59;9365:95;9325:350;;;;9527:29;9496:27;:60;:165;;;;;9619:42;9634:26;9619:14;:42::i;:::-;9576:40;9591:24;9576:14;:40::i;:::-;:85;9496:165;9308:809;;;9773:27:::0;9700:14:::1;::::0;::::1;:44;9745:24:::0;9700:70:::1;::::0;::::1;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9700:70:16;:100;-1:-1:-1;9821:15:16;;-1:-1:-1;9814:22:16::1;::::0;-1:-1:-1;;;;;9814:22:16::1;9308:809;9871:34:::0;;;:95:::1;;-1:-1:-1::0;9945:21:16;;;;9909:32;;;;:57:::1;9871:95;9867:151;;;-1:-1:-1::0;10001:1:16::1;::::0;-1:-1:-1;9986:17:16::1;::::0;-1:-1:-1;;;;;;9986:17:16::1;9867:151;-1:-1:-1::0;;;10031:32:16;;;;:37;;10067:1:::1;10031:37;::::0;;10089:17;-1:-1:-1;10082:24:16::1;::::0;-1:-1:-1;;10082:24:16::1;895:46:8::0;;;;;;;;;;;;;;;:::o;1131:237:19:-;1268:5;1296:15;;;:6;:15;;;;;:65;;1351:9;1296:65;:54;:65;:::i;2743:277:2:-;2914:7;2944:15;;;:6;:15;;;;;;:69;;-1:-1:-1;;;2944:69:2;;:58;;;;:69;;:15;3003:9;;2944:69;;;:::i;2145:203:16:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;-1:-1:-1;2289:15:16::1;::::0;;;:6:::1;:15;::::0;;;;;:37;;:52;2145:203::o;10833:248::-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;-1:-1:-1;11026:48:16::1;::::0;;;;::::1;::::0;;11050:4:::1;11026:48:::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10989:15:16;;;;;;;;;:34;;;:26:::1;::::0;;::::1;:34:::0;;;;;:85;;;;-1:-1:-1;;10989:85:16::1;::::0;::::1;;;::::0;;;;::::1;::::0;10833:248::o;234:247:82:-;343:7;451:12;425:3;409:9;403:16;;;;;;;;395:25;;387:41;;:77;;234:247;-1:-1:-1;;;234:247:82:o;983:469:2:-;1023:10:8;1008:26;;;;:14;:26;;;;;;;;987:125;;;;-1:-1:-1;;;987:125:8;;;;;;;:::i;:::-;1325:67:2::1;1334:7:::0;1325:67:::1;;::::0;;::::1;::::0;::::1;1343:5:::0;1325:67:::1;:::i;:::-;1350:8;;1325:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;1325:67:2::1;::::0;-1:-1:-1;;;1325:67:2::1;::::0;;::::1;::::0;::::1;1360:9:::0;1325:67:::1;:::i;:::-;1371:6;1379:5;1386;1325:8;:67::i;:::-;1402:15;::::0;;;:6:::1;:15;::::0;;;;;;:43;;-1:-1:-1;;;1402:43:2;;:36:::1;::::0;::::1;::::0;:43:::1;::::0;:15;1439:5;;1402:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;983:469:::0;;;;;;;;;:::o;4599:179:13:-;4702:21;;:::i;:::-;-1:-1:-1;4746:15:13;;;;:6;:15;;;;;;;;;4739:32;;;;;;;4746:25;;;4739:32;-1:-1:-1;;;;;4739:32:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:179::o;1411:101:8:-;1280:12:116;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;1477:21:8::1;;::::0;;;:14:::1;:21;::::0;;;;:28;;-1:-1:-1;;1477:28:8::1;1501:4;1477:28;::::0;;1411:101::o;3276:186:6:-;3382:4;3410:15;;;:6;:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3410:44:6;;;;;;;;;;;;;;;3276:186::o;2460:277:2:-;2631:7;2661:15;;;:6;:15;;;;;;:69;;-1:-1:-1;;;2661:69:2;;:58;;;;:69;;:15;2720:9;;2661:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2188:266::-;2356:5;2384:15;;;:6;:15;;;;;;:63;;-1:-1:-1;;;2384:63:2;;:52;;;;:63;;:15;2437:9;;2384:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3904:159:8:-;4004:7;4034:15;;;:6;:15;;;;;:22;;;;-1:-1:-1;;;;;4034:22:8;;3904:159::o;1983:240:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;2071:22:116;::::1;2063:73;;;;-1:-1:-1::0;;;2063:73:116::1;;;;;;;:::i;:::-;2172:6;::::0;;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:116;;::::1;::::0;2172:6;::::1;::::0;2151:38:::1;::::0;::::1;2199:6;:17:::0;;-1:-1:-1;;;;;;2199:17:116::1;-1:-1:-1::0;;;;;2199:17:116;;;::::1;::::0;;;::::1;::::0;;1983:240::o;1959:180:16:-;2065:7;2095:15;;;:6;:15;;;;;:37;;;;1959:180::o;4420:1363:18:-;4491:12;;:::i;:::-;4522:1254;;;;;;;;-1:-1:-1;;;;4575:40:18;;;:17;;;:40;;;;;;;4522:1254;;4619:3;4575:47;4541:84;;;;;;;;4522:1254;;;;;;;;;;-1:-1:-1;;;4647:31:18;;;;:17;;;4522:1254;4647:31;;;;;;;;4522:1254;;;;-1:-1:-1;;;4701:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4762:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4818:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4874:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4934:34:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5003:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5063:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5121:31:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5174:40:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5236:46:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5304:46:18;;;;;;;;;4522:1254;;;;5372:51;;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5445:35:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5503:37:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5562:29:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5613:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5673:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5728:37:18;;;;;;;;4522:1254;;;;;4515:1261;-1:-1:-1;4420:1363:18;;;:::o;5866:1400::-;5946:12;;:::i;:::-;5977:1282;;;;;;;;-1:-1:-1;;;;6030:42:18;;;:17;;;:42;;;;;;;5977:1282;;6076:3;6030:49;5996:86;;;;;;;;5977:1282;;;;;;;;;;-1:-1:-1;;;6104:33:18;;;;:17;;;5977:1282;6104:33;;;;;;;;5977:1282;;;;-1:-1:-1;;;6160:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6223:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6281:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6339:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6401:36:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6460:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6522:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6582:33:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6637:42:18;;;;;;;;;5977:1282;;;;6701:48;;;;;;;;;;5977:1282;;;;6771:48;;;;;;;;;;5977:1282;;;;6841:53;;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6916:37:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6976:39:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7037:31:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7090:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7152:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7209:39:18;;;;;;;;5977:1282;;;;;5970:1289;-1:-1:-1;5866:1400:18;;;:::o;448:324:15:-;522:16;550:25;592:5;:14;;:21;;;578:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;578:36:15;-1:-1:-1;550:64:15;-1:-1:-1;630:9:15;625:115;649:21;;;;645:25;;625:115;;;705:24;;;;:21;;;:24;;;;;;691:11;;:8;;727:1;;691:11;;;;;;;;;;;;;;;:38;672:3;;625:115;;;-1:-1:-1;757:8:15;448:324;-1:-1:-1;;448:324:15:o;7794:218:18:-;7935:7;7973:31;;;:17;;;;;:31;;;;;;;7794:218::o;2426:1921::-;2522:109;2541:5;-1:-1:-1;;;2627:3:18;2595:5;:25;;;2589:32;;;;;;;;2581:41;;2573:57;;2522:18;:109::i;:::-;2641:68;2660:5;-1:-1:-1;;;2691:5:18;:16;;;2683:25;;2641:18;:68::i;:::-;2719:82;2738:5;-1:-1:-1;;;2776:5:18;:23;;;2768:32;;2719:18;:82::i;:::-;2811:72;2830:5;-1:-1:-1;;;2863:5:18;:18;;;2855:27;;2811:18;:72::i;:::-;2893;2912:5;-1:-1:-1;;;2945:5:18;:18;;;2937:27;;2893:18;:72::i;:::-;2975:78;2994:5;-1:-1:-1;;;3030:5:18;:21;;;3022:30;;2975:18;:78::i;:::-;3063:82;3082:5;-1:-1:-1;;;3120:5:18;:23;;;3112:32;;3063:18;:82::i;:::-;3155:78;3174:5;-1:-1:-1;;;3210:5:18;:21;;;3202:30;;3155:18;:78::i;:::-;3243:68;3262:5;-1:-1:-1;;;3293:5:18;:16;;;3285:25;;3243:18;:68::i;:::-;3321:86;3340:5;-1:-1:-1;;;3380:5:18;:25;;;3372:34;;3321:18;:86::i;:::-;3417:98;3436:5;3417:98;3482:5;:31;;;3474:40;;3417:18;:98::i;:::-;3525;3544:5;3525:98;3590:5;:31;;;3582:40;;3525:18;:98::i;:::-;3633:108;3652:5;3633:108;3703:5;:36;;;3695:45;;3633:18;:108::i;:::-;3751:76;3770:5;-1:-1:-1;;;3805:5:18;:20;;;3797:29;;3751:18;:76::i;:::-;3838:80;3857:5;-1:-1:-1;;;3894:5:18;:22;;;3886:31;;3838:18;:80::i;:::-;3928:64;3947:5;-1:-1:-1;;;3976:5:18;:14;;;3968:23;;3928:18;:64::i;:::-;4002:82;4021:5;-1:-1:-1;;;4059:5:18;:23;;;4051:32;;4002:18;:82::i;:::-;4094:72;4113:5;-1:-1:-1;;;4146:5:18;:18;;;4138:27;;4094:18;:72::i;:::-;4176:80;4195:5;-1:-1:-1;;;4232:5:18;:22;;;4224:31;;4176:18;:80::i;:::-;4266:74;4285:5;-1:-1:-1;;;4319:5:18;:19;;;4311:28;;4266:18;:74::i;:::-;2426:1921;;:::o;768:104:115:-;855:10;768:104;:::o;443:879:83:-;559:7;;;617:6;:8;;;:15;;;;;;;;;613:673;;;681:8;;663:27;;:9;;:27;:17;:27;:::i;:::-;648:42;;613:673;;;723:3;711:6;:8;;;:15;;;;;;;;;707:579;;;775:8;;757:31;;:9;;786:1;775:12;757:31;:17;:31;:::i;707:579::-;821:3;809:6;:8;;;:15;;;;;;;;;805:481;;;875:8;;855:29;;:9;;:29;:19;:29;:::i;805:481::-;917:3;905:6;:8;;;:15;;;;;;;;;901:385;;;971:8;;951:33;;:9;;982:1;971:12;951:33;:19;:33;:::i;901:385::-;1017:3;1005:6;:8;;;:15;;;;;;;;;1001:285;;;1071:8;;1051:33;;:9;;1082:1;1071:12;1051:33;:19;:33;:::i;1001:285::-;1117:3;1105:6;:8;;;:15;;;;;;;;;1101:185;;;1170:8;;1151:28;;:9;;:28;:18;:28;:::i;1101:185::-;1210:65;;-1:-1:-1;;;1210:65:83;;;;;;;:::i;481:1872:18:-;568:107;587:5;-1:-1:-1;;;671:3:18;639:5;:25;;;633:32;;;;;;;568:107;685:66;704:5;-1:-1:-1;;;733:5:18;:16;;;725:25;;685:18;:66::i;:::-;761:80;780:5;-1:-1:-1;;;816:5:18;:23;;;808:32;;761:18;:80::i;:::-;851:70;870:5;-1:-1:-1;;;901:5:18;:18;;;893:27;;851:18;:70::i;:::-;931;950:5;-1:-1:-1;;;981:5:18;:18;;;973:27;;931:18;:70::i;:::-;1011:76;1030:5;-1:-1:-1;;;1064:5:18;:21;;;1056:30;;1011:18;:76::i;:::-;1097:80;1116:5;-1:-1:-1;;;1152:5:18;:23;;;1144:32;;1097:18;:80::i;:::-;1187:76;1206:5;-1:-1:-1;;;1240:5:18;:21;;;1232:30;;1187:18;:76::i;:::-;1273:66;1292:5;-1:-1:-1;;;1321:5:18;:16;;;1313:25;;1273:18;:66::i;:::-;1349:84;1368:5;-1:-1:-1;;;1406:5:18;:25;;;1398:34;;1349:18;:84::i;:::-;1443:96;1462:5;-1:-1:-1;;;1506:5:18;:31;;;1498:40;;1443:18;:96::i;:::-;1549;1568:5;-1:-1:-1;;;1612:5:18;:31;;;1604:40;;1549:18;:96::i;:::-;1655:106;1674:5;1655:106;1723:5;:36;;;1715:45;;1655:18;:106::i;:::-;1771:74;1790:5;-1:-1:-1;;;1823:5:18;:20;;;1815:29;;1771:18;:74::i;:::-;1856:78;1875:5;-1:-1:-1;;;1910:5:18;:22;;;1902:31;;1856:18;:78::i;:::-;1944:62;1963:5;-1:-1:-1;;;1990:5:18;:14;;;1982:23;;1944:18;:62::i;:::-;2016:80;2035:5;-1:-1:-1;;;2071:5:18;:23;;;2063:32;;2016:18;:80::i;:::-;2106:70;2125:5;-1:-1:-1;;;2156:5:18;:18;;;2148:27;;2106:18;:70::i;:::-;2186:78;2205:5;-1:-1:-1;;;2240:5:18;:22;;;2232:31;;2186:18;:78::i;:::-;2274:72;2293:5;-1:-1:-1;;;2325:5:18;:19;;;2317:28;;2274:18;:72::i;4460:3371:2:-;4584:7;4629:15;;;:6;:15;;;;;4654:21;;:::i;:::-;4678:28;;-1:-1:-1;;;4678:28:2;;:26;;;;:28;;:5;;:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4894:12;;4654:52;;-1:-1:-1;4717:23:2;;;;;;;;4871:203;;4894:12;;;-1:-1:-1;;;;;4894:12:2;4883:47;4654:52;4971:14;;;4717:23;5016:12;4971:58;;;;;;;;;;;;5047:12;4883:190;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4871:203::-;4819:255;;;;5111:22;5137:1;5111:27;5110:94;;;;5181:22;5160:18;:43;5110:94;:221;;;;5251:18;5225:22;:44;:105;;;;;5301:29;5316:13;5301:14;:29::i;:::-;5273:25;5288:9;5273:14;:25::i;:::-;:57;5225:105;5089:376;;;5389:18;5364:43;;5441:9;5425:25;;5089:376;-1:-1:-1;;5598:12:2;;5720:14;5524:19;5675:60;;;:14;;;:60;;;;;;;5587:194;;-1:-1:-1;;;5587:194:2;;5524:19;;;;5575:207;;5598:12;;;;-1:-1:-1;;;;;5598:12:2;;5587:47;;:194;;5652:5;;5675:60;5587:194;;;:::i;5575:207::-;5523:259;;;;5819:22;5845:1;5819:27;5818:121;;;-1:-1:-1;5868:23:2;;;;;:70;;;5916:22;5895:18;:43;5868:70;5818:275;;;-1:-1:-1;5960:23:2;;;;;:71;;;6013:18;5987:22;:44;5960:71;:132;;;;;6063:29;6078:13;6063:14;:29::i;:::-;6035:25;6050:9;6035:14;:25::i;:::-;:57;5960:132;5797:430;;;6151:18;6126:43;;6203:9;6187:25;;5797:430;-1:-1:-1;;6358:12:2;;6480;6284:19;6435:58;;;:14;;;:58;;;;;;;6347:190;;-1:-1:-1;;;6347:190:2;;6284:19;;;;6335:203;;6358:12;;;;-1:-1:-1;;;;;6358:12:2;;6347:47;;:190;;6412:5;;6435:58;6347:190;;;:::i;6335:203::-;6283:255;;;;6575:22;6601:1;6575:27;6574:121;;;-1:-1:-1;6624:23:2;;;;;:70;;;6672:22;6651:18;:43;6624:70;6574:275;;;-1:-1:-1;6716:23:2;;;;;:71;;;6769:18;6743:22;:44;6716:71;:132;;;;;6819:29;6834:13;6819:14;:29::i;:::-;6791:25;6806:9;6791:14;:25::i;:::-;:57;6716:132;6553:430;;;6907:18;6882:43;;6959:9;6943:25;;6553:430;-1:-1:-1;;7114:12:2;;7236;7040:19;7191:58;;;:14;;;:58;;;;;;;7103:190;;-1:-1:-1;;;7103:190:2;;7040:19;;;;7091:203;;7114:12;;;;-1:-1:-1;;;;;7114:12:2;;7103:47;;:190;;7168:5;;7191:58;7103:190;;;:::i;7091:203::-;7039:255;;;;7331:22;7357:1;7331:27;7330:121;;;-1:-1:-1;7380:23:2;;;;;:70;;;7428:22;7407:18;:43;7380:70;7330:275;;;-1:-1:-1;7472:23:2;;;;;:71;;;7525:18;7499:22;:44;7472:71;:132;;;;;7575:29;7590:13;7575:14;:29::i;:::-;7547:25;7562:9;7547:14;:25::i;:::-;:57;7472:132;7309:430;;;7663:18;7638:43;;7715:9;7699:25;;7309:430;4460:3371;;7774:50;7786:13;7801:22;7774:11;:50::i;:::-;7767:57;4460:3371;-1:-1:-1;;;;;;4460:3371:2:o;7273:515:18:-;7411:5;-1:-1:-1;;;7436:12:18;:46;7432:350;;;-1:-1:-1;;;;7519:40:18;;;;:17;;;:40;;;;;;7563:3;7519:47;7498:70;;7432:350;-1:-1:-1;;;7589:12:18;:48;7585:197;;;-1:-1:-1;;;;7674:42:18;;;;:17;;;:42;;;;;;7720:3;7674:49;7653:72;;7585:197;-1:-1:-1;7769:1:18;7756:15;;2593:1097:8;2847:19;2869:15;;;:6;:15;;;;;2988:11;;;;:20;2967:110;;;;-1:-1:-1;;;2967:110:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;3176:21:8;;;;;;:14;:21;;;;;;;;:29;;:21;:29;3155:117;;;;-1:-1:-1;;;3155:117:8;;;;;;;:::i;:::-;3283:18;;3311:27;;:15;;;:27;;-1:-1:-1;;;;;;3311:27:8;;;-1:-1:-1;;;;;3311:27:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3283:18:8;;;-1:-1:-1;3283:18:8;;;-1:-1:-1;;;;;;3348:21:8;3283:18;3348:21;;;;;;;3379:11;;:19;;;;;;;;;;;3409:30;3283:18;3433:5;3409:23;:30::i;:::-;3449:39;:5;3482;3449:39;:32;:39;:::i;:::-;3498:36;:5;3525:8;3498:36;:26;:36;:::i;:::-;-1:-1:-1;;;;;3592:19:8;;;3588:55;;3613:30;3628:7;3637:5;3613:14;:30::i;:::-;3659:24;3675:7;3659:24;;;;;;:::i;:::-;;;;;;;;2593:1097;;;;;;;;:::o;166:252:18:-;314:31;;;;:17;;;:31;;;;;;:40;;310:53;;;356:7;;310:53;372:31;;;;:17;;;:31;;;;;:39;;;166:252;;;;:::o;9033:198:106:-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;8467:561;8539:17;;;;8604:40;1020:12;8616:9;:27;;8604:11;:40::i;:::-;8702:2;8654:16;;;-1:-1:-1;;8689:9:106;;8688:16;;;8680:24;;;;;-1:-1:-1;8654:16:106;-1:-1:-1;8568:76:106;-1:-1:-1;8702:2:106;8722:16;8741:1;8722:20;8714:28;;8752:16;8771:28;8787:4;8793:5;8771:15;:28::i;:::-;8752:47;;8819:11;8813:3;:17;8809:65;;;8852:11;8846:17;;8809:65;1020:12;8950:9;:27;1020:12;8898:31;8912:4;8918:5;8925:3;8898:13;:31::i;:::-;:49;:79;8883:94;;9011:9;8995:12;:25;;8987:34;;;;;;8467:561;;;;;;;;:::o;7977:485::-;8047:17;;;;8112:40;1020:12;8124:9;:27;;8112:40;8162:14;;;;-1:-1:-1;8076:76:106;-1:-1:-1;8076:76:106;-1:-1:-1;8186:16:106;8205:28;8162:14;8076:76;8205:15;:28::i;137:305:15:-;239:9;234:202;258:8;:15;254:1;:19;234:202;;;321:1;313:10;;298:8;307:1;298:11;;;;;;;;;;;;;;:25;294:36;;;325:5;;294:36;371:8;380:1;371:11;;;;;;;;;;;;;;;;;;;344:24;;;;:21;;;:24;;;;;;;:38;:21;420:5;396:21;;;:29;;;234:202;;3721:194:6;3798:15;;;;3845:4;3798:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3798:44:6;;;;;;;;;;:51;;-1:-1:-1;;3798:51:6;;;;;;;3864:44;;3798;;3805:7;;3864:44;;;;;:::i;:::-;;;;;;;;3721:194;;:::o;3309:605:106:-;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;6480:383::-;6551:16;6583:5;6592:1;6583:10;:24;;;;6597:5;6606:1;6597:10;6583:24;:38;;;;6611:5;6620:1;6611:10;6583:38;:52;;;;6625:5;6634:1;6625:10;6583:52;:66;;;;6639:5;6648:1;6639:10;6583:66;:81;;;;6653:5;6662:2;6653:11;6583:81;:96;;;;6668:5;6677:2;6668:11;6583:96;6579:278;;;-1:-1:-1;6709:2:106;6579:278;;;6732:5;6741:1;6732:10;6728:129;;-1:-1:-1;6772:2:106;6728:129;;;6819:17;6831:4;6819:11;:17::i;:::-;:27;;6844:2;6819:27;;;6839:2;6819:27;6805:41;;;6480:383;-1:-1:-1;;;6480:383:106:o;2045:511::-;2124:10;2162:4;2154;:12;;2146:21;;;;;;2193:4;2225:5;2256:3;2177:9;1157:7;2490:1;2440;2483:3;2454:4;2477:2;-1:-1:-1;;2462:11:106;;2461:18;2446:33;;;2445:41;2440:47;:51;2425:2;;-1:-1:-1;;2399:11:106;;2398:18;2419:2;2398:23;2394:1;2385:6;:10;:36;2378:3;:44;:49;;;;;;2364:1;2319:4;2358:2;-1:-1:-1;;2343:11:106;;2342:18;2327:33;;2335:4;2327:33;2319:42;:46;2301:5;2284:4;:22;:81;:143;:207;:234;2271:247;;2542:6;2529:20;;2045:511;;;;;;;;;:::o;5820:157::-;5875:13;5920:1;5913:4;:8;:13;5912:36;;;;-1:-1:-1;5939:3:106;5932:4;:10;:15;;5912:36;5911:59;;;-1:-1:-1;;5961:3:106;5954:10;;:15;;5820:157::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;:::i;142:134::-;220:13;;238:33;220:13;238:33;:::i;1531:188::-;1636:13;;1654:60;1636:13;1654:60;:::i;1891:162::-;1983:13;;2001:47;1983:13;2001:47;:::i;2060:180::-;2152:20;;2177:58;2152:20;2177:58;:::i;2810:170::-;2906:13;;2924:51;2906:13;2924:51;:::i;2987:166::-;3072:20;;3097:51;3072:20;3097:51;:::i;3160:170::-;3256:13;;3274:51;3256:13;3274:51;:::i;3522:182::-;3624:13;;3642:57;3624:13;3642:57;:::i;5071:168::-;5166:13;;5184:50;5166:13;5184:50;:::i;6204:162::-;;6317:4;6308:6;6303:3;6299:16;6295:27;6292:2;;;-1:-1;;6325:12;14937:166;;15055:3;15046:6;15041:3;15037:16;15033:26;15030:2;;;-1:-1;;15062:12;16901:810;;17023:4;17011:9;17006:3;17002:19;16998:30;16995:2;;;-1:-1;;17031:12;16995:2;17059:20;17023:4;17059:20;:::i;:::-;17050:29;;22180:6;22174:13;17140:16;17133:86;17277:2;17353:9;17349:22;3624:13;3642:57;3693:5;3642:57;:::i;:::-;17277:2;17292:16;;17285:93;17436:2;17508:22;;1983:13;2001:47;1983:13;2001:47;:::i;:::-;17436:2;17451:16;;17444:93;17599:2;17661:22;;867:13;885:30;867:13;885:30;:::i;:::-;17599:2;17614:16;;17607:83;17618:5;16989:722;-1:-1;;16989:722::o;17734:650::-;;17855:4;17843:9;17838:3;17834:19;17830:30;17827:2;;;-1:-1;;17863:12;17827:2;17891:20;17855:4;17891:20;:::i;:::-;17882:29;;22180:6;22174:13;17972:16;17965:86;18109:2;18185:9;18181:22;3624:13;3642:57;3693:5;3642:57;:::i;:::-;18109:2;18124:16;;18117:93;18272:2;18334:22;;867:13;885:30;867:13;885:30;:::i;:::-;18272:2;18287:16;;18280:83;18291:5;17821:563;-1:-1;;17821:563::o;18412:158::-;;18522:3;18513:6;18508:3;18504:16;18500:26;18497:2;;;-1:-1;;18529:12;22374:241;;22478:2;22466:9;22457:7;22453:23;22449:32;22446:2;;;-1:-1;;22484:12;22446:2;85:6;72:20;97:33;124:5;97:33;:::i;22622:263::-;;22737:2;22725:9;22716:7;22712:23;22708:32;22705:2;;;-1:-1;;22743:12;22705:2;226:6;220:13;238:33;265:5;238:33;:::i;22892:257::-;;23004:2;22992:9;22983:7;22979:23;22975:32;22972:2;;;-1:-1;;23010:12;22972:2;873:6;867:13;885:30;909:5;885:30;:::i;23156:241::-;;23260:2;23248:9;23239:7;23235:23;23231:32;23228:2;;;-1:-1;;23266:12;23228:2;-1:-1;994:20;;23222:175;-1:-1;23222:175::o;23404:263::-;;23519:2;23507:9;23498:7;23494:23;23490:32;23487:2;;;-1:-1;;23525:12;23487:2;-1:-1;1142:13;;23481:186;-1:-1;23481:186::o;23674:366::-;;;23795:2;23783:9;23774:7;23770:23;23766:32;23763:2;;;-1:-1;;23801:12;23763:2;1007:6;994:20;23853:63;;23953:2;23996:9;23992:22;72:20;97:33;124:5;97:33;:::i;:::-;23961:63;;;;23757:283;;;;;:::o;24047:366::-;;;24168:2;24156:9;24147:7;24143:23;24139:32;24136:2;;;-1:-1;;24174:12;24136:2;-1:-1;;994:20;;;24326:2;24365:22;;;994:20;;-1:-1;24130:283::o;24420:489::-;;;;24557:2;24545:9;24536:7;24532:23;24528:32;24525:2;;;-1:-1;;24563:12;24525:2;-1:-1;;994:20;;;24715:2;24754:22;;994:20;;-1:-1;24823:2;24861:22;;;5972:20;;24519:390;-1:-1;24519:390::o;24916:489::-;;;;25053:2;25041:9;25032:7;25028:23;25024:32;25021:2;;;-1:-1;;25059:12;25021:2;994:20;;;-1:-1;25211:2;25249:22;;1271:20;-1:-1;;;;;;94245:78;;101420:34;;101410:2;;-1:-1;;101458:12;101410:2;25219:62;-1:-1;25318:2;25357:22;;72:20;97:33;72:20;97:33;:::i;:::-;25326:63;;;;25015:390;;;;;:::o;25412:426::-;;;25562:4;25550:9;25541:7;25537:23;25533:34;25530:2;;;-1:-1;;25570:12;25530:2;1007:6;994:20;25622:63;;25740:82;25814:7;25722:2;25794:9;25790:22;25740:82;:::i;:::-;25730:92;;25524:314;;;;;:::o;25845:1464::-;;;;;;;;;;26192:4;26180:9;26171:7;26167:23;26163:34;26160:2;;;-1:-1;;26200:12;26160:2;1007:6;994:20;26252:63;;26370:82;26444:7;26352:2;26424:9;26420:22;26370:82;:::i;:::-;26360:92;;26509:79;26580:7;26489:4;26560:9;26556:22;26509:79;:::i;:::-;26499:89;;26653:4;26642:9;26638:20;26625:34;26679:18;;26671:6;26668:30;26665:2;;;-1:-1;;26701:12;26665:2;26802:6;26791:9;26787:22;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;482:6;469:20;459:30;;26679:18;501:6;498:30;495:2;;;-1:-1;;531:12;495:2;626:3;26352:2;;610:6;606:17;567:6;592:32;;589:41;586:2;;;-1:-1;;633:12;586:2;26352;563:17;;-1:-1;26721:98;;-1:-1;26876:87;;-1:-1;26955:7;26856:4;26931:22;;26876:87;:::i;:::-;26866:97;;27020:53;27065:7;27000:4;27045:9;27041:22;27020:53;:::i;:::-;27010:63;;27130:53;27175:7;27110:4;27155:9;27151:22;27130:53;:::i;:::-;27120:63;;27240:53;27285:7;27220:4;27265:9;27261:22;27240:53;:::i;:::-;27230:63;;26154:1155;;;;;;;;;;;:::o;27316:419::-;;;27463:3;27451:9;27442:7;27438:23;27434:33;27431:2;;;-1:-1;;27470:12;27431:2;1007:6;994:20;27522:63;;27640:79;27711:7;27622:2;27691:9;27687:22;27640:79;:::i;28115:271::-;;28234:2;28222:9;28213:7;28209:23;28205:32;28202:2;;;-1:-1;;28240:12;28202:2;4188:6;4175:20;4200:48;4242:5;4200:48;:::i;28393:396::-;;;28529:2;28517:9;28508:7;28504:23;28500:32;28497:2;;;-1:-1;;28535:12;28497:2;4188:6;4175:20;4200:48;4242:5;4200:48;:::i;:::-;28587:78;28702:2;28741:22;;;;22026:20;;-1:-1;;;28491:298::o;29064:319::-;;29206:4;29194:9;29185:7;29181:23;29177:34;29174:2;;;-1:-1;;29214:12;29174:2;6560:22;6575:6;6560:22;:::i;:::-;6672:78;6746:3;6722:22;6672:78;:::i;:::-;6654:16;6647:104;6849:74;6919:3;6816:2;6899:9;6895:22;6849:74;:::i;:::-;6816:2;6835:5;6831:16;6824:100;7026:78;7100:3;6993:2;7080:9;7076:22;7026:78;:::i;:::-;6993:2;7012:5;7008:16;7001:104;7213:84;7293:3;7180:2;7273:9;7269:22;7213:84;:::i;:::-;7180:2;7199:5;7195:16;7188:110;7410:87;7493:3;7376;7473:9;7469:22;7410:87;:::i;:::-;7376:3;7396:5;7392:16;7385:113;7609:86;7691:3;7575;7671:9;7667:22;7609:86;:::i;:::-;7575:3;7595:5;7591:16;7584:112;7800:79;7875:3;7766;7855:9;7851:22;7800:79;:::i;:::-;7766:3;7786:5;7782:16;7775:105;7982:77;8055:3;7948;8035:9;8031:22;7982:77;:::i;:::-;7948:3;7968:5;7964:16;7957:103;8125:3;8161:74;8231:3;8125;8211:9;8207:22;8161:74;:::i;:::-;8141:18;;;8134:102;8301:3;8337:60;8393:3;8369:22;;;8337:60;:::i;:::-;8317:18;;;8310:88;8473:3;8509:60;8565:3;8541:22;;;8509:60;:::i;:::-;8489:18;;;8482:88;8652:3;8720:22;;;1142:13;8668:18;;;8661:88;8822:3;8890:22;;;22174:13;8838:18;;;8831:88;8986:3;9054:22;;;22174:13;9002:18;;;8995:88;9159:3;9227:22;;;22174:13;9175:18;;;9168:88;9325:3;9393:22;;;22174:13;9341:18;;;9334:88;9491:3;9559:22;;;22174:13;9507:18;;;9500:88;9666:3;9734:22;;;22174:13;9682:18;;;9675:88;9852:3;9920:22;;;22174:13;9868:18;;;9861:88;10032:3;10100:22;;;22174:13;10048:18;;;10041:88;10215:3;10283:22;;;22174:13;10231:18;;;10224:88;10389:3;10457:22;;;22174:13;10405:18;;;10398:88;10579:3;10647:22;;;22174:13;10595:18;;;10588:88;10750:3;10817:22;;;6118:13;10766:18;;;10759:87;10922:3;10989:22;;;6118:13;10938:18;;;10931:87;11090:3;11157:22;;;6118:13;11106:18;;;11099:87;11257:3;11324:22;;;6118:13;11273:18;;;11266:87;11420:3;11487:22;;;6118:13;11436:18;;;11429:87;11586:3;11653:22;;;6118:13;11602:18;;;11595:87;11746:3;11813:22;;;6118:13;11762:18;;;11755:87;11909:3;11976:22;;;6118:13;11925:18;;;11918:87;12073:3;12140:22;;;6118:13;12089:18;;;12082:87;12241:4;12309:22;;;6118:13;12258:18;;;12251:87;12415:4;12483:22;;;6118:13;12432:18;;;12425:87;12588:4;12656:22;;;6118:13;12605:18;;;12598:87;12772:4;12840:22;;;6118:13;12789:18;;;12782:87;12933:4;13001:22;;;6118:13;12950:18;;;12943:87;13096:4;13164:22;;;6118:13;13113:18;;;13106:87;13259:4;13327:22;;;6118:13;13276:18;;;13269:87;13424:4;13492:22;;;6118:13;13441:18;;;13434:87;13589:4;13626:81;13703:3;13679:22;;;13626:81;:::i;:::-;13606:18;;;13599:109;13782:4;13819:81;13896:3;13872:22;;;13819:81;:::i;:::-;13810:6;13803:5;13799:18;13792:109;13980:4;14017:82;14095:3;13980:4;14075:9;14071:22;14017:82;:::i;:::-;14008:6;14001:5;13997:18;13990:110;14210:82;14288:3;14173:4;14268:9;14264:22;14210:82;:::i;:::-;13782:4;14194:5;14190:18;14183:110;14406:82;14484:3;14369:4;14464:9;14460:22;14406:82;:::i;:::-;14397:6;14390:5;14386:18;14379:110;14593:82;14671:3;14556:4;14651:9;14647:22;14593:82;:::i;:::-;14584:6;14577:5;14573:18;14566:110;14796:82;14874:3;14759:4;14854:9;14850:22;14796:82;:::i;:::-;14776:18;;;14769:110;-1:-1;14780:5;29168:215;-1:-1;;;29168:215::o;29390:306::-;;29526:3;29514:9;29505:7;29501:23;29497:33;29494:2;;;-1:-1;;29533:12;29494:2;15295:20;29526:3;15295:20;:::i;:::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;15382:75;;15532:2;15586:22;;72:20;97:33;72:20;97:33;:::i;:::-;15532:2;15547:16;;15540:75;15691:2;15745:22;;72:20;97:33;72:20;97:33;:::i;:::-;15691:2;15706:16;;15699:75;15854:2;15908:22;;72:20;97:33;72:20;97:33;:::i;:::-;15854:2;15869:16;;15862:75;15873:5;29488:208;-1:-1;;;29488:208::o;29703:336::-;;29854:3;29842:9;29833:7;29829:23;29825:33;29822:2;;;-1:-1;;29861:12;29822:2;16168:20;29854:3;16168:20;:::i;:::-;16304:22;1142:13;16254:16;16247:86;16397:2;16466:9;16462:22;1142:13;16397:2;16416:5;16412:16;16405:86;16553:2;16649:9;16645:22;2352:13;2370:60;2424:5;2370:60;:::i;:::-;16553:2;16568:16;;16561:113;16735:2;16827:22;;2352:13;2370:60;2352:13;2370:60;:::i;30046:308::-;;30183:3;30171:9;30162:7;30158:23;30154:33;30151:2;;;-1:-1;;30190:12;30151:2;30252:86;30330:7;30306:22;30252:86;:::i;30361:305::-;;30497:2;30485:9;30476:7;30472:23;30468:32;30465:2;;;-1:-1;;30503:12;30465:2;30565:85;30642:7;30618:22;30565:85;:::i;30673:290::-;;30801:3;;30789:9;30780:7;30776:23;30772:33;30769:2;;;-1:-1;;30808:12;30769:2;18747:22;30801:3;18747:22;:::i;:::-;18866:74;18936:3;18912:22;18866:74;:::i;:::-;18841:100;;19008:2;19062:22;;;22026:20;19023:16;;;19016:75;19165:2;19219:22;;;22026:20;19180:16;;;19173:75;19317:2;19371:22;;;22026:20;19332:16;;;19325:75;19469:3;19524:22;;;22026:20;19485:16;;;19478:75;19625:3;19680:22;;;22026:20;19641:16;;;19634:75;19779:3;19834:22;;;22026:20;19795:16;;;19788:75;19937:3;19991:22;;;5972:20;19953:16;;;19946:74;20092:3;20148:22;;;5972:20;20108:18;;;20101:76;20244:3;20300:22;;;5972:20;20260:18;;;20253:76;20405:3;20461:22;;;5972:20;20421:18;;;20414:76;20572:3;20628:22;;;5972:20;20588:18;;;20581:76;20739:3;20795:22;;;5972:20;20755:18;;;20748:76;20911:3;20967:22;;;5972:20;20927:18;;;20920:76;21067:3;21123:22;;;5972:20;21083:18;;;21076:76;21225:3;21281:22;;;5972:20;21241:18;;;21234:76;21375:3;21431:22;;;5972:20;21391:18;;;21384:76;21534:3;21590:22;;;5972:20;21550:18;;;21543:76;21688:3;21744:22;;;5972:20;21704:18;;;21697:76;21846:3;21902:22;;;5972:20;21862:18;;;21855:76;;;;-1:-1;18848:16;;30763:200;-1:-1;;30763:200::o;31240:259::-;;31353:2;31341:9;31332:7;31328:23;31324:32;31321:2;;;-1:-1;;31359:12;31321:2;22319:6;22313:13;96956:4;103616:5;96945:16;103593:5;103590:33;103580:2;;-1:-1;;103627:12;31688:103;-1:-1;;;;;96740:54;31749:37;;31743:48::o;33679:166::-;99334:1;99327:5;99324:12;99314:2;;99340:9;99314:2;33765:75;;33759:86::o;34033:140::-;94584:47;94625:5;94584:47;:::i;34335:162::-;94736:58;94788:5;94736:58;:::i;34850:148::-;99935:2;99928:5;99925:13;99915:2;;99942:9;35168:148;100052:2;100045:5;100042:13;100032:2;;100059:9;36913:146;100745:1;100738:5;100735:12;100725:2;;100751:9;55503:8573;55755:79;55819:14;55732:16;55726:23;55755:79;:::i;:::-;55917:4;55910:5;55906:16;55900:23;55929:75;55917:4;55993:3;55989:14;55975:12;55929:75;:::i;:::-;;56091:4;56084:5;56080:16;56074:23;56103:79;56091:4;56171:3;56167:14;56153:12;56103:79;:::i;:::-;;56275:4;56268:5;56264:16;56258:23;56287:85;56275:4;56361:3;56357:14;56343:12;56287:85;:::i;:::-;;56468:4;56461:5;56457:16;56451:23;56480:88;56468:4;56557:3;56553:14;56539:12;56480:88;:::i;:::-;;56663:4;56656:5;56652:16;56646:23;56675:87;56663:4;56751:3;56747:14;56733:12;56675:87;:::i;:::-;;56850:4;56843:5;56839:16;56833:23;56862:80;56850:4;56931:3;56927:14;56913:12;56862:80;:::i;:::-;;57028:4;57021:5;57017:16;57011:23;57040:78;57028:4;57107:3;57103:14;57089:12;57040:78;:::i;:::-;;57201:6;;57194:5;57190:18;57184:25;57215:77;57201:6;57279:3;57275:16;57261:12;57215:77;:::i;:::-;;;57375:6;;57368:5;57364:18;57358:25;57389:65;57375:6;57441:3;57437:16;57423:12;57389:65;:::i;:::-;;;57547:6;;57540:5;57536:18;57530:25;57561:65;57547:6;57613:3;57609:16;57595:12;57561:65;:::i;:::-;-1:-1;;57726:6;57715:18;;;57709:25;57788:16;;;33147:37;57896:6;57885:18;;;57879:25;57958:16;;;33147:37;58060:6;58049:18;;;58043:25;58122:16;;;33147:37;58233:6;58222:18;;;58216:25;58295:16;;;33147:37;58399:6;58388:18;;;58382:25;58461:16;;;33147:37;58565:6;58554:18;;;58548:25;58627:16;;;33147:37;58740:6;58729:18;;;58723:25;58802:16;;;33147:37;58926:6;58915:18;;;58909:25;58988:16;;;33147:37;59106:6;59095:18;;;59089:25;59168:16;;;33147:37;59289:6;59278:18;;;59272:25;59351:16;;;33147:37;59463:6;59452:18;;;59446:25;59525:16;;;33147:37;59653:6;59642:18;;;59636:25;59715:16;;;33147:37;59824:6;59813:18;;;59807:25;59884:16;;;33147:37;59995:6;59984:18;;;59978:25;60055:16;;;33147:37;60162:6;60151:18;;;60145:25;60222:16;;;33147:37;60328:6;60317:18;;;60311:25;60388:16;;;33147:37;60490:6;60479:18;;;60473:25;60550:16;;;33147:37;60655:6;60644:18;;;60638:25;60715:16;;;33147:37;60814:6;60803:18;;;60797:25;60874:16;;;33147:37;60976:6;60965:18;;;60959:25;61036:16;;;33147:37;61139:6;61128:18;;;61122:25;61199:16;;;33147:37;61306:6;61295:18;;;61289:25;61366:16;;;33147:37;61478:6;61467:18;;;61461:25;61538:16;;;33147:37;61649:6;61638:18;;;61632:25;61709:16;;;33147:37;61831:6;61820:18;;;61814:25;61891:16;;;33147:37;61990:6;61979:18;;;61973:25;62050:16;;;33147:37;62151:6;62140:18;;;62134:25;62211:16;;;33147:37;62312:6;62301:18;;;62295:25;62372:16;;;33147:37;62475:6;62464:18;;;62458:25;62535:16;;;33147:37;62638:6;62627:18;;;62621:25;62652:107;62742:16;;;62621:25;62652:107;:::i;:::-;;;62851:6;62844:5;62840:18;62834:25;62964:6;62865:107;62964:6;62959:3;62955:16;62941:12;62865:107;:::i;:::-;63069:6;63062:5;63058:18;63052:25;63032:45;;63184:6;63083:109;63184:6;63179:3;63175:16;63161:12;63083:109;:::i;:::-;62964:6;63276:5;63272:18;63266:25;63246:45;;63297:109;63398:6;63393:3;63389:16;63375:12;63297:109;:::i;:::-;63500:6;63493:5;63489:18;63483:25;63463:45;;63514:109;63615:6;63610:3;63606:16;63592:12;63514:109;:::i;:::-;63708:6;63701:5;63697:18;63691:25;63671:45;;63722:109;63823:6;63818:3;63814:16;63800:12;63722:109;:::i;:::-;63921:18;;63915:25;;-1:-1;63946:109;;-1:-1;64047:6;64038:16;;63915:25;63946:109;:::i;66091:925::-;22039:6;22026:20;33154:3;33147:37;93897:2;66324:16;93888:12;2152:20;2177:58;2229:5;2177:58;:::i;:::-;94736;94788:5;94736:58;:::i;:::-;93897:2;66601:14;;36705:55;92933:12;;;1807:20;1832:47;1807:20;1832:47;:::i;:::-;94584;94625:5;94584:47;:::i;:::-;92933:12;66799:14;;37293:55;93237:12;;;725:20;750:30;725:20;750:30;:::i;:::-;32847:5;94079:13;94072:21;93237:12;66984:3;66980:14;32820:34;;66201:815;;:::o;67054:764::-;67250:16;67244:23;33154:3;33147:37;67412:4;67405:5;67401:16;67395:23;94736:58;94788:5;94736:58;:::i;:::-;67412:4;67477:14;;36705:55;67568:4;67557:16;;67551:23;94584:47;67551:23;94584:47;:::i;:::-;67568:4;67633:14;;37293:55;67728:4;67717:16;;;67711:23;94079:13;94072:21;67782:14;;32820:34;67154:664::o;68666:725::-;22039:6;22026:20;33154:3;33147:37;93897:2;68897:16;93888:12;2152:20;2177:58;2229:5;2177:58;:::i;:::-;94736;94788:5;94736:58;:::i;:::-;93897:2;69174:14;;36705:55;92933:12;;;725:20;750:30;725:20;750:30;:::i;:::-;32847:5;94079:13;94072:21;92933:12;69359:3;69355:14;32820:34;;68774:617;;:::o;69427:606::-;69621:16;69615:23;33154:3;33147:37;69783:4;69776:5;69772:16;69766:23;94736:58;94788:5;94736:58;:::i;:::-;69783:4;69848:14;;36705:55;69943:4;69932:16;;;69926:23;94079:13;94072:21;69997:14;;32820:34;69525:508::o;74731:222::-;-1:-1;;;;;96740:54;;;;31749:37;;74858:2;74843:18;;74829:124::o;74960:333::-;-1:-1;;;;;96740:54;;;31749:37;;96740:54;;75279:2;75264:18;;31749:37;75115:2;75100:18;;75086:207::o;75300:370::-;75477:2;75491:47;;;90747:12;;75462:18;;;91022:19;;;75300:370;;75477:2;90601:14;;;;91062;;;;75300:370;32475:260;32500:6;32497:1;32494:13;32475:260;;;32561:13;;33147:37;;90877:14;;;;31660;;;;32522:1;32515:9;32475:260;;;-1:-1;75544:116;;75448:222;-1:-1;;;;;;75448:222::o;75677:210::-;94079:13;;94072:21;32820:34;;75798:2;75783:18;;75769:118::o;75894:317::-;94079:13;;94072:21;32820:34;;76197:2;76182:18;;33147:37;76041:2;76026:18;;76012:199::o;76218:222::-;33147:37;;;76345:2;76330:18;;76316:124::o;76447:444::-;33147:37;;;-1:-1;;;;;96740:54;;;76794:2;76779:18;;31749:37;96740:54;76877:2;76862:18;;31749:37;76630:2;76615:18;;76601:290::o;76898:459::-;33147:37;;;-1:-1;;;77343:2;77328:18;;38707:26;77116:2;77101:18;;77087:270::o;77364:459::-;33147:37;;;-1:-1;;;77809:2;77794:18;;40860:32;77582:2;77567:18;;77553:270::o;77830:459::-;33147:37;;;-1:-1;;;78275:2;78260:18;;42571:32;78048:2;78033:18;;78019:270::o;78296:459::-;33147:37;;;-1:-1;;;78741:2;78726:18;;42754:34;78514:2;78499:18;;78485:270::o;78762:218::-;-1:-1;;;;;;94245:78;;;;33631:36;;78887:2;78872:18;;78858:122::o;78987:359::-;79155:2;79140:18;;98494:39;36318:5;98494:39;:::i;:::-;36269:3;36262:63;33177:5;79332:2;79321:9;79317:18;33147:37;79126:220;;;;;:::o;79578:416::-;79778:2;79792:47;;;38387:2;79763:18;;;91022:19;38423:34;91062:14;;;38403:55;38492:32;38478:12;;;38471:54;38544:12;;;79749:245::o;80001:416::-;80201:2;80215:47;;;38972:2;80186:18;;;91022:19;39008:34;91062:14;;;38988:55;39077:31;39063:12;;;39056:53;39128:12;;;80172:245::o;80424:416::-;80624:2;80638:47;;;39379:2;80609:18;;;91022:19;39415:34;91062:14;;;39395:55;-1:-1;;;39470:12;;;39463:30;39512:12;;;80595:245::o;80847:416::-;81047:2;81061:47;;;39763:2;81032:18;;;91022:19;39799:34;91062:14;;;39779:55;39868:27;39854:12;;;39847:49;39915:12;;;81018:245::o;81270:416::-;81470:2;81484:47;;;40166:2;81455:18;;;91022:19;40202:34;91062:14;;;40182:55;-1:-1;;;40257:12;;;40250:39;40308:12;;;81441:245::o;81693:416::-;81893:2;81907:47;;;40559:2;81878:18;;;91022:19;40595:34;91062:14;;;40575:55;-1:-1;;;40650:12;;;40643:35;40697:12;;;81864:245::o;82116:416::-;82316:2;82330:47;;;41131:2;82301:18;;;91022:19;41167:34;91062:14;;;41147:55;-1:-1;;;41222:12;;;41215:44;41278:12;;;82287:245::o;82539:416::-;82739:2;82753:47;;;41529:2;82724:18;;;91022:19;41565:34;91062:14;;;41545:55;41634:26;41620:12;;;41613:48;41680:12;;;82710:245::o;82962:416::-;83162:2;83176:47;;;41931:2;83147:18;;;91022:19;41967:34;91062:14;;;41947:55;-1:-1;;;42022:12;;;42015:33;42067:12;;;83133:245::o;83385:416::-;83585:2;83599:47;;;83570:18;;;91022:19;42354:34;91062:14;;;42334:55;42408:12;;;83556:245::o;83808:416::-;84008:2;84022:47;;;43027:2;83993:18;;;91022:19;43063:34;91062:14;;;43043:55;43132:25;43118:12;;;43111:47;43177:12;;;83979:245::o;84231:416::-;84431:2;84445:47;;;43428:2;84416:18;;;91022:19;43464:34;91062:14;;;43444:55;43533:27;43519:12;;;43512:49;43580:12;;;84402:245::o;84654:416::-;84854:2;84868:47;;;43831:2;84839:18;;;91022:19;43867:34;91062:14;;;43847:55;-1:-1;;;43922:12;;;43915:39;43973:12;;;84825:245::o;85077:416::-;85277:2;85291:47;;;44224:2;85262:18;;;91022:19;44260:34;91062:14;;;44240:55;-1:-1;;;44315:12;;;44308:44;44371:12;;;85248:245::o;85500:416::-;85700:2;85714:47;;;44622:2;85685:18;;;91022:19;44658:34;91062:14;;;44638:55;44727:34;44713:12;;;44706:56;-1:-1;;;44782:12;;;44775:26;44820:12;;;85671:245::o;85923:332::-;86104:4;86089:20;;86120:125;86093:9;86218:6;86120:125;:::i;86262:584::-;86512:4;86497:20;;86528:125;86501:9;86626:6;86528:125;:::i;:::-;33177:5;86732:4;86721:9;86717:20;33147:37;98494:39;36318:5;98494:39;:::i;:::-;86830:4;86819:9;86815:20;36262:63;86483:363;;;;;;:::o;86853:351::-;64369:23;;-1:-1;;;;;96740:54;;;31749:37;;64554:4;64543:16;;;64537:23;96740:54;;64614:14;;;31749:37;64723:4;64712:16;;;64706:23;96740:54;;64783:14;;;31749:37;64896:4;64885:16;;;64879:23;96740:54;64956:14;;;31749:37;;;;87044:3;87029:19;;87015:189::o;87504:405::-;33147:37;;;87895:2;87880:18;;33147:37;87691:2;87676:18;;87662:247::o;87916:519::-;33147:37;;;88159:4;88144:20;;88421:2;92279:12;;;;45194:87;;88406:18;;92235:57;92279:12;45171:16;92235:57;:::i;:::-;45194:87;:::i;:::-;45347:64;45394:16;45387:5;45347:64;:::i;:::-;45417:83;45485:14;88410:9;45485:14;45471:12;45417:83;:::i;:::-;;;45570:68;45485:14;45625:5;45621:16;45614:5;45570:68;:::i;:::-;45644:87;45716:14;88410:9;45716:14;45702:12;45644:87;:::i;:::-;;45807:74;45716:14;45868:5;45864:16;45857:5;45807:74;:::i;:::-;45887:93;45965:14;88410:9;45965:14;45951:12;45887:93;:::i;:::-;;46059:77;45965:14;46123:5;46119:16;46112:5;46059:77;:::i;:::-;46142:96;46223:14;88410:9;46223:14;46209:12;46142:96;:::i;:::-;;46316:76;46223:14;46379:5;46375:16;46368:5;46316:76;:::i;:::-;46398:95;46478:14;88410:9;46478:14;46464:12;46398:95;:::i;:::-;;46564:69;46478:14;46620:5;46616:16;46609:5;46564:69;:::i;:::-;46639:88;46712:14;88410:9;46712:14;46698:12;46639:88;:::i;:::-;;46796:67;46712:14;46850:5;46846:16;46839:5;46796:67;:::i;:::-;46940:14;46869:86;46940:14;88410:9;46940:14;46926:12;46869:86;:::i;:::-;47021:66;46940:14;47072:5;47068:18;47061:5;47021:66;:::i;:::-;47001:86;;;47161:16;47093:85;47161:16;88410:9;47161:16;47147:12;47093:85;:::i;:::-;47244:52;47161:16;47281:5;47277:18;47270:5;47244:52;:::i;:::-;47224:72;;;47358:16;47302:73;47358:16;88410:9;47358:16;47344:12;47302:73;:::i;:::-;47451:52;47358:16;47488:5;47484:18;47477:5;47451:52;:::i;:::-;47431:72;;;47565:16;47509:73;47565:16;88410:9;47565:16;47551:12;47509:73;:::i;:::-;47779:16;;;47565;47702:5;47698:18;994:20;47779:16;88410:9;47779:16;33147:37;;47984:16;47779;47907:5;47903:18;22026:20;47984:16;88410:9;47984:16;33147:37;48183:16;;;47984;48106:5;48102:18;22026:20;48183:16;88410:9;48183:16;33147:37;;48391:16;48183;48314:5;48310:18;22026:20;48391:16;88410:9;48391:16;33147:37;48592:16;;;48391;48515:5;48511:18;22026:20;48592:16;88410:9;48592:16;33147:37;;48793:16;48592;48716:5;48712:18;22026:20;48793:16;88410:9;48793:16;33147:37;49003:16;;;48793;48926:5;48922:18;22026:20;49003:16;88410:9;49003:16;33147:37;;49224:16;49003;49147:5;49143:18;22026:20;49224:16;88410:9;49224:16;33147:37;49439:16;;;49224;49362:5;49358:18;22026:20;49439:16;88410:9;49439:16;33147:37;;49657:16;49439;49580:5;49576:18;22026:20;49657:16;88410:9;49657:16;33147:37;49866:16;;;49657;49789:5;49785:18;22026:20;49866:16;88410:9;49866:16;33147:37;;50091:16;49866;50014:5;50010:18;22026:20;50091:16;88410:9;50091:16;33147:37;50294:16;;;50091;50219:5;50215:18;5972:20;50294:16;88410:9;50294:16;33147:37;;50499:16;50294;50424:5;50420:18;5972:20;50499:16;88410:9;50499:16;33147:37;50700:16;;;50499;50625:5;50621:18;5972:20;50700:16;88410:9;50700:16;33147:37;;50900:16;50700;50825:5;50821:18;5972:20;50900:16;88410:9;50900:16;33147:37;51096:16;;;50900;51021:5;51017:18;5972:20;51096:16;88410:9;51096:16;33147:37;;51295:16;51096;51220:5;51216:18;5972:20;51295:16;88410:9;51295:16;33147:37;51488:16;;;51295;51413:5;51409:18;5972:20;51488:16;88410:9;51488:16;33147:37;;51684:16;51488;51609:5;51605:18;5972:20;51684:16;88410:9;51684:16;33147:37;51881:16;;;51684;51806:5;51802:18;5972:20;51881:16;88410:9;51881:16;33147:37;;52082:16;51881;52007:5;52003:18;5972:20;52082:16;88410:9;52082:16;33147:37;52288:16;;;52082;52213:5;52209:18;5972:20;52288:16;88410:9;52288:16;33147:37;;52493:16;52288;52418:5;52414:18;5972:20;52493:16;88410:9;52493:16;33147:37;52709:16;;;52493;52634:5;52630:18;5972:20;52709:16;88410:9;52709:16;33147:37;;52902:16;52709;52827:5;52823:18;5972:20;52902:16;88410:9;52902:16;33147:37;53097:16;;;52902;53022:5;53018:18;5972:20;53097:16;88410:9;53097:16;33147:37;;53292:16;53097;53217:5;53213:18;5972:20;53292:16;88410:9;53292:16;33147:37;53489:16;;;53292;53414:5;53410:18;5972:20;53489:16;88410:9;53489:16;33147:37;;53656:117;53756:16;88410:9;53756:16;53489;53635:5;53631:18;53656:117;:::i;:::-;;53929;54029:16;88410:9;54029:16;53915:6;53908:5;53904:18;53929:117;:::i;:::-;54208:119;54310:16;88410:9;54310:16;54194:6;54187:5;54183:18;54208:119;:::i;:::-;54483;54585:16;88410:9;54585:16;54469:6;54462:5;54458:18;54483:119;:::i;:::-;54761;54863:16;88410:9;54863:16;54747:6;54740:5;54736:18;54761:119;:::i;:::-;55030;55132:16;88410:9;55132:16;55016:6;55009:5;55005:18;55030:119;:::i;:::-;55315;55417:16;88410:9;55417:16;55301:6;55294:5;55290:18;55315:119;:::i;88442:367::-;;88641:3;88630:9;88626:19;88618:27;;65430:16;65424:23;33154:3;33147:37;65598:4;65591:5;65587:16;65581:23;65598:4;65662:3;65658:14;33147:37;97715:51;65753:4;65746:5;65742:16;65736:23;97715:51;:::i;:::-;65753:4;65842:3;65838:14;34763:75;97548:51;65932:4;65925:5;65921:16;65915:23;97548:51;:::i;:::-;65932:4;66021:3;66017:14;34590:75;88612:197;;;;:::o;88816:311::-;88987:3;88972:19;;89002:115;88976:9;89090:6;89002:115;:::i;89134:306::-;89303:2;89288:18;;89317:113;89292:9;89403:6;89317:113;:::i;89447:319::-;;89622:3;89611:9;89607:19;89599:27;;70980:86;71051:14;70957:16;70951:23;70980:86;:::i;:::-;71151:4;71140:16;;;71134:23;71211:14;;;33147:37;71318:4;71307:16;;;71301:23;71378:14;;;33147:37;71480:4;71469:16;;;71463:23;71540:14;;;33147:37;71642:4;71631:16;;;71625:23;71702:14;;;33147:37;71807:4;71796:16;;;71790:23;71867:14;;;33147:37;71970:4;71959:16;;;71953:23;72030:14;;;33147:37;72137:4;72126:16;;;72120:23;72195:14;;;33147:37;72300:6;72289:18;;;72283:25;72360:16;;;33147:37;72462:6;72451:18;;;72445:25;72522:16;;;33147:37;72633:6;72622:18;;;72616:25;72693:16;;;33147:37;72810:6;72799:18;;;72793:25;72870:16;;;33147:37;72987:6;72976:18;;;72970:25;73047:16;;;33147:37;73169:6;73158:18;;;73152:25;73229:16;;;33147:37;73335:6;73324:18;;;73318:25;73395:16;;;33147:37;73503:6;73492:18;;;73486:25;73563:16;;;33147:37;73663:6;73652:18;;;73646:25;73723:16;;;33147:37;73832:6;73821:18;;;73815:25;73892:16;;;33147:37;73996:6;73985:18;;;73979:25;74056:16;;;33147:37;74164:6;74153:18;;;74147:25;74224:16;;;;33147:37;;;;89593:173;:::o;90002:214::-;96956:4;96945:16;;;;74684:35;;90125:2;90110:18;;90096:120::o;90223:256::-;90285:2;90279:9;90311:17;;;90386:18;90371:34;;90407:22;;;90368:62;90365:2;;;90443:1;;90433:12;90365:2;90285;90452:22;90263:216;;-1:-1;90263:216::o;91263:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;91641:173::-;;1447:6;1434:20;1459:60;1513:5;1459:60;:::i;91823:147::-;;1820:6;1807:20;1832:47;1873:5;1832:47;:::i;91979:155::-;;2735:6;2722:20;2747:51;2792:5;2747:51;:::i;92307:167::-;;2165:6;2152:20;2177:58;2229:5;2177:58;:::i;92961:153::-;;4997:6;4984:20;5009:50;5053:5;5009:50;:::i;94806:160::-;94884:16;99694:1;99684:12;;99674:2;;99700:9;95764:136;95830:16;100412:2;100402:13;;100392:2;;100419:9;99363:105;99446:1;99439:5;99436:12;99426:2;;99452:9;99426:2;99420:48;:::o;99475:116::-;99569:1;99562:5;99559:12;99549:2;;99575:9;100996:117;-1:-1;;;;;96740:54;;101055:35;;101045:2;;101104:1;;101094:12;101120:111;101201:5;94079:13;94072:21;101179:5;101176:32;101166:2;;101222:1;;101212:12;101484:121;101580:1;101573:5;101570:12;101560:2;;101596:1;;101586:12;101612:108;101695:1;101688:5;101685:12;101675:2;;101711:1;;101701:12;101727:119;101821:1;101814:5;101811:12;101801:2;;101837:1;;101827:12;101853:121;101949:1;101942:5;101939:12;101929:2;;101965:1;;101955:12;102109:113;102196:2;102189:5;102186:13;102176:2;;102213:1;;102203:12;102229:113;102316:2;102309:5;102306:13;102296:2;;102333:1;;102323:12;102601:110;102685:2;102678:5;102675:13;102665:2;;102702:1;;102692:12;102941:111;103027:1;103020:5;103017:12;103007:2;;103043:1;;103033:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol\";\n\nimport \"../Base/SharedTypes.sol\";\nimport \"../Base/AssetRegistry/BaseRegistry.sol\";\nimport \"./ANNEncoder.sol\";\nimport \"./IANNRegistry.sol\";\n\n\n/**\n * @title ANNRegistry\n * @notice Registry for ACTUS Protocol assets\n */\ncontract ANNRegistry is BaseRegistry, IANNRegistry {\n\n    using ANNEncoder for Asset;\n\n\n    constructor()\n        public\n        BaseRegistry()\n    {}\n\n    /**\n     * @notice\n     * @param assetId id of the asset\n     * @param terms asset specific terms (ANNTerms)\n     * @param state initial state of the asset\n     * @param schedule schedule of the asset\n     * @param ownership ownership of the asset\n     * @param engine ACTUS Engine of the asset\n     * @param actor account which is allowed to update the asset state\n     * @param admin account which as admin rights (optional)\n     */\n    function registerAsset(\n        bytes32 assetId,\n        ANNTerms calldata terms,\n        State calldata state,\n        bytes32[] calldata schedule,\n        AssetOwnership calldata ownership,\n        address engine,\n        address actor,\n        address admin\n    )\n        external\n        override\n        onlyApprovedActors\n    {\n        setAsset(assetId, state, schedule, ownership, engine, actor, admin);\n        assets[assetId].encodeAndSetANNTerms(terms);\n    }\n\n    /**\n     * @notice Returns the terms of an asset.\n     * @param assetId id of the asset\n     * @return terms of the asset\n     */\n    function getTerms(bytes32 assetId)\n        external\n        view\n        override\n        returns (ANNTerms memory)\n    {\n        return assets[assetId].decodeAndGetANNTerms();\n    }\n\n    /**\n     * @notice Set the terms of the asset\n     * @dev Can only be set by authorized account.\n     * @param assetId id of the asset\n     * @param terms new terms\n     */\n    function setTerms(bytes32 assetId, ANNTerms calldata terms)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].encodeAndSetANNTerms(terms);\n        emit UpdatedTerms(assetId);\n    }\n\n    function getEnumValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (uint8)\n    {\n        return assets[assetId].decodeAndGetEnumValueForANNAttribute(attribute);\n    }\n\n    function getAddressValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (address)\n    {\n        return assets[assetId].decodeAndGetAddressValueForForANNAttribute(attribute);\n    }\n\n    function getBytes32ValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (bytes32)\n    {\n        return assets[assetId].decodeAndGetBytes32ValueForForANNAttribute(attribute);\n    }\n\n    function getUIntValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (uint256)\n    {\n        return assets[assetId].decodeAndGetUIntValueForForANNAttribute(attribute);\n    }\n\n    function getIntValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (int256)\n    {\n        return assets[assetId].decodeAndGetIntValueForForANNAttribute(attribute);\n    }\n\n    function getPeriodValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (IP memory)\n    {\n        return assets[assetId].decodeAndGetPeriodValueForForANNAttribute(attribute);\n    }\n\n    function getCycleValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (IPS memory)\n    {\n        return assets[assetId].decodeAndGetCycleValueForForANNAttribute(attribute);\n    }\n\n    function getContractReferenceValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (ContractReference memory)\n    {\n        return assets[assetId].decodeAndGetContractReferenceValueForANNAttribute(attribute);\n    } \n\n    function getNextCyclicEvent(bytes32 assetId)\n        internal\n        view\n        override(TermsRegistry)\n        returns (bytes32)\n    {\n        Asset storage asset = assets[assetId];\n        ANNTerms memory terms = asset.decodeAndGetANNTerms();\n\n        EventType nextEventType;\n        uint256 nextScheduleTimeOffset;\n\n        // IP\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(IANNEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.IP],\n                EventType.IP\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset < nextScheduleTimeOffset)\n                || (nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // IPCI\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(IANNEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.IPCI],\n                EventType.IPCI\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // FP\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(IANNEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.FP],\n                EventType.FP\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // PR\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(IANNEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.PR],\n                EventType.PR\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        return encodeEvent(nextEventType, nextScheduleTimeOffset);\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNRegistry.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNRegistry.sol",
    "exportedSymbols": {
      "ANNRegistry": [
        2928
      ]
    },
    "id": 2929,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2388,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:2"
      },
      {
        "id": 2389,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:2"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "id": 2390,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 28269,
        "src": "101:68:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 2391,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 7865,
        "src": "171:33:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol",
        "file": "../Base/AssetRegistry/BaseRegistry.sol",
        "id": 2392,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 4422,
        "src": "205:48:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNEncoder.sol",
        "file": "./ANNEncoder.sol",
        "id": 2393,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 2387,
        "src": "254:26:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/IANNRegistry.sol",
        "file": "./IANNRegistry.sol",
        "id": 2394,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 2971,
        "src": "281:28:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2396,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "412:12:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 2397,
            "nodeType": "InheritanceSpecifier",
            "src": "412:12:2"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2398,
              "name": "IANNRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2970,
              "src": "426:12:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IANNRegistry_$2970",
                "typeString": "contract IANNRegistry"
              }
            },
            "id": 2399,
            "nodeType": "InheritanceSpecifier",
            "src": "426:12:2"
          }
        ],
        "contractDependencies": [
          2970,
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 2395,
          "nodeType": "StructuredDocumentation",
          "src": "312:75:2",
          "text": " @title ANNRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 2928,
        "linearizedBaseContracts": [
          2928,
          2970,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "ANNRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2402,
            "libraryName": {
              "contractScope": null,
              "id": 2400,
              "name": "ANNEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2386,
              "src": "452:10:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ANNEncoder_$2386",
                "typeString": "library ANNEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "446:27:2",
            "typeName": {
              "contractScope": null,
              "id": 2401,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "467:5:2",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 2407,
              "nodeType": "Block",
              "src": "536:2:2",
              "statements": []
            },
            "documentation": null,
            "id": 2408,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 2405,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2404,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "517:12:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "517:14:2"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2403,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "491:2:2"
            },
            "returnParameters": {
              "id": 2406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "536:0:2"
            },
            "scope": 2928,
            "src": "480:58:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2955
            ],
            "body": {
              "id": 2449,
              "nodeType": "Block",
              "src": "1315:137:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2433,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2411,
                        "src": "1334:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2434,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2415,
                        "src": "1343:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2435,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2418,
                        "src": "1350:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2436,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2420,
                        "src": "1360:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2437,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2422,
                        "src": "1371:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2438,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2424,
                        "src": "1379:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2439,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2426,
                        "src": "1386:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2432,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1325:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address)"
                      }
                    },
                    "id": 2440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1325:67:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2441,
                  "nodeType": "ExpressionStatement",
                  "src": "1325:67:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2446,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2413,
                        "src": "1439:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2442,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1402:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2444,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2443,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2411,
                          "src": "1409:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1402:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetANNTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1048,
                      "src": "1402:36:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_ANNTerms_$22768_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct ANNTerms memory)"
                      }
                    },
                    "id": 2447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1402:43:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2448,
                  "nodeType": "ExpressionStatement",
                  "src": "1402:43:2"
                }
              ]
            },
            "documentation": {
              "id": 2409,
              "nodeType": "StructuredDocumentation",
              "src": "544:434:2",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (ANNTerms)\n @param state initial state of the asset\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine ACTUS Engine of the asset\n @param actor account which is allowed to update the asset state\n @param admin account which as admin rights (optional)"
            },
            "functionSelector": "e4d063d5",
            "id": 2450,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2430,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2429,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1292:18:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1292:18:2"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2428,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1275:8:2"
            },
            "parameters": {
              "id": 2427,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2411,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1015:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2410,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1015:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2413,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1040:23:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2412,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1040:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2415,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1073:20:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2414,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1073:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2418,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1103:27:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2416,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1103:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2417,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1103:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2420,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1140:33:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2419,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1140:14:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2422,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1183:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1183:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2424,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1207:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2423,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1207:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2426,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1230:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2425,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1230:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1005:244:2"
            },
            "returnParameters": {
              "id": 2431,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1315:0:2"
            },
            "scope": 2928,
            "src": "983:469:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2962
            ],
            "body": {
              "id": 2465,
              "nodeType": "Block",
              "src": "1712:62:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2459,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1729:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2461,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2460,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2453,
                          "src": "1736:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1729:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2462,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetANNTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1833,
                      "src": "1729:36:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_ANNTerms_$22768_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct ANNTerms memory)"
                      }
                    },
                    "id": 2463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1729:38:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                      "typeString": "struct ANNTerms memory"
                    }
                  },
                  "functionReturnParameters": 2458,
                  "id": 2464,
                  "nodeType": "Return",
                  "src": "1722:45:2"
                }
              ]
            },
            "documentation": {
              "id": 2451,
              "nodeType": "StructuredDocumentation",
              "src": "1458:129:2",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 2466,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2455,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1665:8:2"
            },
            "parameters": {
              "id": 2454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2453,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2466,
                  "src": "1610:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2452,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1610:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1609:17:2"
            },
            "returnParameters": {
              "id": 2458,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2457,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2466,
                  "src": "1691:15:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2456,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1691:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1690:17:2"
            },
            "scope": 2928,
            "src": "1592:182:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2969
            ],
            "body": {
              "id": 2489,
              "nodeType": "Block",
              "src": "2086:96:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2482,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2471,
                        "src": "2133:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2478,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2096:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2480,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2479,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2469,
                          "src": "2103:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2096:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2481,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetANNTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1048,
                      "src": "2096:36:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_ANNTerms_$22768_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct ANNTerms memory)"
                      }
                    },
                    "id": 2483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2096:43:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2484,
                  "nodeType": "ExpressionStatement",
                  "src": "2096:43:2"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2486,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2469,
                        "src": "2167:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2485,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2154:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2154:21:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2488,
                  "nodeType": "EmitStatement",
                  "src": "2149:26:2"
                }
              ]
            },
            "documentation": {
              "id": 2467,
              "nodeType": "StructuredDocumentation",
              "src": "1780:172:2",
              "text": " @notice Set the terms of the asset\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param terms new terms"
            },
            "functionSelector": "c0d94293",
            "id": 2490,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2475,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2469,
                    "src": "2073:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2476,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2474,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2059:12:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2059:22:2"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2473,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2042:8:2"
            },
            "parameters": {
              "id": 2472,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2469,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2490,
                  "src": "1975:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2468,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2471,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2490,
                  "src": "1992:23:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2470,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1992:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1974:42:2"
            },
            "returnParameters": {
              "id": 2477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2086:0:2"
            },
            "scope": 2928,
            "src": "1957:225:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 2509,
              "nodeType": "Block",
              "src": "2367:87:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2506,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2494,
                        "src": "2437:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2502,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2384:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2504,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2503,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2492,
                          "src": "2391:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2384:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2505,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2035,
                      "src": "2384:52:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 2507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2384:63:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 2501,
                  "id": 2508,
                  "nodeType": "Return",
                  "src": "2377:70:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 2510,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2498,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2496,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2308:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2497,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2324:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2299:39:2"
            },
            "parameters": {
              "id": 2495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2492,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2510,
                  "src": "2227:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2491,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2227:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2494,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2510,
                  "src": "2244:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2493,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2244:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2226:36:2"
            },
            "returnParameters": {
              "id": 2501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2500,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2510,
                  "src": "2356:5:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2499,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2356:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2355:7:2"
            },
            "scope": 2928,
            "src": "2188:266:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 2529,
              "nodeType": "Block",
              "src": "2644:93:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2526,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2514,
                        "src": "2720:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2522,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2661:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2524,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2523,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2512,
                          "src": "2668:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2661:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2525,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2099,
                      "src": "2661:58:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_address_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (address)"
                      }
                    },
                    "id": 2527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2661:69:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2521,
                  "id": 2528,
                  "nodeType": "Return",
                  "src": "2654:76:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 2530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2518,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2516,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2583:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2517,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2599:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2574:39:2"
            },
            "parameters": {
              "id": 2515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2512,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2530,
                  "src": "2502:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2511,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2502:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2514,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2530,
                  "src": "2519:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2513,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2519:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2501:36:2"
            },
            "returnParameters": {
              "id": 2521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2520,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2530,
                  "src": "2631:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2519,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2631:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2630:9:2"
            },
            "scope": 2928,
            "src": "2460:277:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 2549,
              "nodeType": "Block",
              "src": "2927:93:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2546,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2534,
                        "src": "3003:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2542,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2944:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2544,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2543,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2532,
                          "src": "2951:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2944:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2545,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2114,
                      "src": "2944:58:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 2547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2944:69:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2541,
                  "id": 2548,
                  "nodeType": "Return",
                  "src": "2937:76:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 2550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2538,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2536,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2866:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2537,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2882:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2857:39:2"
            },
            "parameters": {
              "id": 2535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2532,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2550,
                  "src": "2785:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2531,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2785:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2534,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2550,
                  "src": "2802:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2533,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2802:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2784:36:2"
            },
            "returnParameters": {
              "id": 2541,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2540,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2550,
                  "src": "2914:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2539,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2914:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2913:9:2"
            },
            "scope": 2928,
            "src": "2743:277:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 2569,
              "nodeType": "Block",
              "src": "3207:90:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2554,
                        "src": "3280:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2562,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3224:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2564,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2563,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2552,
                          "src": "3231:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3224:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2565,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2132,
                      "src": "3224:55:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 2567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3224:66:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2561,
                  "id": 2568,
                  "nodeType": "Return",
                  "src": "3217:73:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 2570,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2558,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2556,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3146:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2557,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3162:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3137:39:2"
            },
            "parameters": {
              "id": 2555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2552,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2570,
                  "src": "3065:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2551,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3065:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2554,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2570,
                  "src": "3082:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2553,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3082:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3064:36:2"
            },
            "returnParameters": {
              "id": 2561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2560,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2570,
                  "src": "3194:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2559,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3194:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3193:9:2"
            },
            "scope": 2928,
            "src": "3026:271:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 2589,
              "nodeType": "Block",
              "src": "3482:89:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2586,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "3554:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2582,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3499:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2584,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2583,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2572,
                          "src": "3506:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3499:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2585,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2150,
                      "src": "3499:54:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 2587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3499:65:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 2581,
                  "id": 2588,
                  "nodeType": "Return",
                  "src": "3492:72:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 2590,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2578,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2576,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3422:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2577,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3438:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3413:39:2"
            },
            "parameters": {
              "id": 2575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2572,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2590,
                  "src": "3341:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2571,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3341:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2574,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2590,
                  "src": "3358:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2573,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3358:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3340:36:2"
            },
            "returnParameters": {
              "id": 2581,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2580,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2590,
                  "src": "3470:6:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2579,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3470:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3469:8:2"
            },
            "scope": 2928,
            "src": "3303:268:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 2609,
              "nodeType": "Block",
              "src": "3762:92:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2606,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2594,
                        "src": "3837:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2602,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3779:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2604,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2603,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2592,
                          "src": "3786:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3779:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2605,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2236,
                      "src": "3779:57:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IP memory)"
                      }
                    },
                    "id": 2607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3779:68:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 2601,
                  "id": 2608,
                  "nodeType": "Return",
                  "src": "3772:75:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 2610,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2598,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2596,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3699:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2597,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3715:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3690:39:2"
            },
            "parameters": {
              "id": 2595,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2592,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2610,
                  "src": "3618:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2591,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3618:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2594,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2610,
                  "src": "3635:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2593,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3635:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3617:36:2"
            },
            "returnParameters": {
              "id": 2601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2600,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2610,
                  "src": "3747:9:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2599,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3747:2:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3746:11:2"
            },
            "scope": 2928,
            "src": "3577:277:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 2629,
              "nodeType": "Block",
              "src": "4045:91:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2626,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2614,
                        "src": "4119:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2622,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4062:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2624,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2623,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2612,
                          "src": "4069:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4062:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2625,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2358,
                      "src": "4062:56:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IPS_$22486_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IPS memory)"
                      }
                    },
                    "id": 2627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4062:67:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 2621,
                  "id": 2628,
                  "nodeType": "Return",
                  "src": "4055:74:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 2630,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2618,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2616,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3981:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2617,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3997:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3972:39:2"
            },
            "parameters": {
              "id": 2615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2612,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2630,
                  "src": "3900:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2611,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3900:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2614,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2630,
                  "src": "3917:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2613,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3917:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3899:36:2"
            },
            "returnParameters": {
              "id": 2621,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2620,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2630,
                  "src": "4029:10:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2619,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "4029:3:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4028:12:2"
            },
            "scope": 2928,
            "src": "3860:276:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 2649,
              "nodeType": "Block",
              "src": "4353:100:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2646,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2634,
                        "src": "4436:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2642,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4370:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2644,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2643,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2632,
                          "src": "4377:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4370:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2645,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2385,
                      "src": "4370:65:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) pure returns (struct ContractReference memory)"
                      }
                    },
                    "id": 2647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4370:76:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 2641,
                  "id": 2648,
                  "nodeType": "Return",
                  "src": "4363:83:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 2650,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2638,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2636,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4275:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2637,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4291:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4266:39:2"
            },
            "parameters": {
              "id": 2635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2632,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2650,
                  "src": "4194:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2631,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4194:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2634,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2650,
                  "src": "4211:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2633,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4211:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4193:36:2"
            },
            "returnParameters": {
              "id": 2641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2640,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2650,
                  "src": "4323:24:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2639,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4323:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4322:26:2"
            },
            "scope": 2928,
            "src": "4142:311:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 2926,
              "nodeType": "Block",
              "src": "4597:3234:2",
              "statements": [
                {
                  "assignments": [
                    2660
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2660,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2926,
                      "src": "4607:19:2",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2659,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "4607:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2664,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2661,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "4629:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 2663,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2662,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2652,
                      "src": "4636:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4629:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4607:37:2"
                },
                {
                  "assignments": [
                    2666
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2666,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2926,
                      "src": "4654:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                        "typeString": "struct ANNTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2665,
                        "name": "ANNTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22768,
                        "src": "4654:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                          "typeString": "struct ANNTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2670,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2667,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2660,
                        "src": "4678:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset storage pointer"
                        }
                      },
                      "id": 2668,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetANNTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1833,
                      "src": "4678:26:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_ANNTerms_$22768_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct ANNTerms memory)"
                      }
                    },
                    "id": 2669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4678:28:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                      "typeString": "struct ANNTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4654:52:2"
                },
                {
                  "assignments": [
                    2672
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2672,
                      "mutability": "mutable",
                      "name": "nextEventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2926,
                      "src": "4717:23:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2671,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "4717:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2673,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4717:23:2"
                },
                {
                  "assignments": [
                    2675
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2675,
                      "mutability": "mutable",
                      "name": "nextScheduleTimeOffset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2926,
                      "src": "4750:30:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2674,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4750:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2676,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4750:30:2"
                },
                {
                  "id": 2731,
                  "nodeType": "Block",
                  "src": "4805:678:2",
                  "statements": [
                    {
                      "assignments": [
                        2678,
                        2680
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2678,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2731,
                          "src": "4820:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2677,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "4820:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2680,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2731,
                          "src": "4841:26:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2679,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4841:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2698,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2687,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "4948:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2688,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "4971:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2689,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "4971:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 2690,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "4971:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 2693,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2691,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5016:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 2692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "IP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5016:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4971:58:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2694,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5047:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 2695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5047:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2683,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "4894:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2684,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "4894:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2682,
                                  "name": "IANNEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28268,
                                  "src": "4883:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                                    "typeString": "type(contract IANNEngine)"
                                  }
                                },
                                "id": 2685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4883:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IANNEngine_$28268",
                                  "typeString": "contract IANNEngine"
                                }
                              },
                              "id": 2686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28236,
                              "src": "4883:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct ANNTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 2696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4883:190:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2681,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "4871:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 2697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4871:203:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4819:255:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2720,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2699,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "5111:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5137:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5111:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2702,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5110:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2703,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2680,
                                  "src": "5160:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2704,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "5181:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5160:43:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2706,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5159:45:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5110:94:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2708,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "5225:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2709,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2680,
                                  "src": "5251:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5225:44:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2712,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2678,
                                      "src": "5288:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2711,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5273:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5273:25:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2715,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2672,
                                      "src": "5316:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2714,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5301:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5301:29:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5273:57:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5225:105:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2719,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5224:107:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5110:221:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2730,
                      "nodeType": "IfStatement",
                      "src": "5089:376:2",
                      "trueBody": {
                        "id": 2729,
                        "nodeType": "Block",
                        "src": "5346:119:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2721,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2675,
                                "src": "5364:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2722,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2680,
                                "src": "5389:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5364:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2724,
                            "nodeType": "ExpressionStatement",
                            "src": "5364:43:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2725,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "5425:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2726,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2678,
                                "src": "5441:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5425:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 2728,
                            "nodeType": "ExpressionStatement",
                            "src": "5425:25:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 2794,
                  "nodeType": "Block",
                  "src": "5509:736:2",
                  "statements": [
                    {
                      "assignments": [
                        2733,
                        2735
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2733,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2794,
                          "src": "5524:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2732,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "5524:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2735,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2794,
                          "src": "5545:26:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2734,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5545:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2753,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2742,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "5652:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2743,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "5675:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2744,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "5675:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 2745,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "5675:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 2748,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2746,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5720:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 2747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "IPCI",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5720:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5675:60:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2749,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5753:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 2750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IPCI",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5753:14:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2738,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "5598:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2739,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "5598:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2737,
                                  "name": "IANNEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28268,
                                  "src": "5587:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                                    "typeString": "type(contract IANNEngine)"
                                  }
                                },
                                "id": 2740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5587:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IANNEngine_$28268",
                                  "typeString": "contract IANNEngine"
                                }
                              },
                              "id": 2741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28236,
                              "src": "5587:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct ANNTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 2751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5587:194:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2736,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "5575:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 2752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5575:207:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5523:259:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2754,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "5819:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2755,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5845:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5819:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2757,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5818:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2764,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2758,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2735,
                                    "src": "5868:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5890:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5868:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2763,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2761,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2735,
                                    "src": "5895:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2762,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "5916:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5895:43:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5868:70:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2765,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5867:72:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5818:121:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2769,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2767,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2735,
                                    "src": "5960:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5982:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5960:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2772,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2770,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "5987:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2771,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2735,
                                    "src": "6013:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5987:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5960:71:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2775,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2733,
                                      "src": "6050:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2774,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6035:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6035:25:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2778,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2672,
                                      "src": "6078:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2777,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6063:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6063:29:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6035:57:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5960:132:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2782,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5959:134:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5818:275:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2793,
                      "nodeType": "IfStatement",
                      "src": "5797:430:2",
                      "trueBody": {
                        "id": 2792,
                        "nodeType": "Block",
                        "src": "6108:119:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2784,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2675,
                                "src": "6126:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2785,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2735,
                                "src": "6151:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6126:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2787,
                            "nodeType": "ExpressionStatement",
                            "src": "6126:43:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2788,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "6187:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2789,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2733,
                                "src": "6203:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6187:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 2791,
                            "nodeType": "ExpressionStatement",
                            "src": "6187:25:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 2857,
                  "nodeType": "Block",
                  "src": "6269:732:2",
                  "statements": [
                    {
                      "assignments": [
                        2796,
                        2798
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2796,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2857,
                          "src": "6284:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2795,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "6284:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2798,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2857,
                          "src": "6305:26:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2797,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6305:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2816,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2805,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "6412:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2806,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "6435:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2807,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "6435:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 2808,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "6435:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 2811,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2809,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "6480:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 2810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "FP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6480:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6435:58:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2812,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "6511:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 2813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "FP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6511:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2801,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "6358:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2802,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "6358:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2800,
                                  "name": "IANNEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28268,
                                  "src": "6347:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                                    "typeString": "type(contract IANNEngine)"
                                  }
                                },
                                "id": 2803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6347:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IANNEngine_$28268",
                                  "typeString": "contract IANNEngine"
                                }
                              },
                              "id": 2804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28236,
                              "src": "6347:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct ANNTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 2814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6347:190:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2799,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "6335:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 2815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6335:203:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6283:255:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2817,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "6575:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2818,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6601:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6575:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2820,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6574:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2821,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2798,
                                    "src": "6624:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2822,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6646:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6624:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2824,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2798,
                                    "src": "6651:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2825,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "6672:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6651:43:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6624:70:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2828,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6623:72:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6574:121:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2832,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2830,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2798,
                                    "src": "6716:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2831,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6738:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6716:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2835,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2833,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "6743:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2834,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2798,
                                    "src": "6769:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6743:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6716:71:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2838,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2796,
                                      "src": "6806:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2837,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6791:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6791:25:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2841,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2672,
                                      "src": "6834:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2840,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6819:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6819:29:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6791:57:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6716:132:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2845,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6715:134:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6574:275:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2856,
                      "nodeType": "IfStatement",
                      "src": "6553:430:2",
                      "trueBody": {
                        "id": 2855,
                        "nodeType": "Block",
                        "src": "6864:119:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2847,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2675,
                                "src": "6882:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2848,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2798,
                                "src": "6907:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6882:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2850,
                            "nodeType": "ExpressionStatement",
                            "src": "6882:43:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2851,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "6943:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2852,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2796,
                                "src": "6959:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6943:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 2854,
                            "nodeType": "ExpressionStatement",
                            "src": "6943:25:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 2920,
                  "nodeType": "Block",
                  "src": "7025:732:2",
                  "statements": [
                    {
                      "assignments": [
                        2859,
                        2861
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2859,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2920,
                          "src": "7040:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2858,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "7040:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2861,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2920,
                          "src": "7061:26:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2860,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7061:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2879,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2868,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "7168:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2869,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "7191:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2870,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "7191:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 2871,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "7191:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 2874,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2872,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "7236:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 2873,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "PR",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7236:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7191:58:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2875,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "7267:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 2876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "PR",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7267:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2864,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "7114:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2865,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "7114:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2863,
                                  "name": "IANNEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28268,
                                  "src": "7103:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                                    "typeString": "type(contract IANNEngine)"
                                  }
                                },
                                "id": 2866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7103:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IANNEngine_$28268",
                                  "typeString": "contract IANNEngine"
                                }
                              },
                              "id": 2867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28236,
                              "src": "7103:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct ANNTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 2877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7103:190:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2862,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "7091:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 2878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7091:203:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7039:255:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2880,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "7331:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2881,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7357:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7331:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2883,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7330:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2884,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "7380:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7402:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7380:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2887,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "7407:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2888,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "7428:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7407:43:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7380:70:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2891,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7379:72:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7330:121:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2893,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "7472:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7494:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7472:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2898,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2896,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "7499:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2897,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "7525:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7499:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7472:71:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2901,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2859,
                                      "src": "7562:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2900,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7547:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7547:25:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2904,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2672,
                                      "src": "7590:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2903,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7575:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2905,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7575:29:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7547:57:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7472:132:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2908,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7471:134:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7330:275:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2919,
                      "nodeType": "IfStatement",
                      "src": "7309:430:2",
                      "trueBody": {
                        "id": 2918,
                        "nodeType": "Block",
                        "src": "7620:119:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2910,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2675,
                                "src": "7638:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2911,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2861,
                                "src": "7663:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7638:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2913,
                            "nodeType": "ExpressionStatement",
                            "src": "7638:43:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2914,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "7699:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2915,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2859,
                                "src": "7715:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "7699:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 2917,
                            "nodeType": "ExpressionStatement",
                            "src": "7699:25:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2922,
                        "name": "nextEventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2672,
                        "src": "7786:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2923,
                        "name": "nextScheduleTimeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2675,
                        "src": "7801:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2921,
                      "name": "encodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24702,
                      "src": "7774:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                      }
                    },
                    "id": 2924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7774:50:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2658,
                  "id": 2925,
                  "nodeType": "Return",
                  "src": "7767:57:2"
                }
              ]
            },
            "documentation": null,
            "id": 2927,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2655,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2654,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4552:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4543:23:2"
            },
            "parameters": {
              "id": 2653,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2652,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2927,
                  "src": "4488:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2651,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4488:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4487:17:2"
            },
            "returnParameters": {
              "id": 2658,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2657,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2927,
                  "src": "4584:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2656,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4584:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4583:9:2"
            },
            "scope": 2928,
            "src": "4460:3371:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 2929,
        "src": "388:7445:2"
      }
    ],
    "src": "41:7793:2"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNRegistry.sol",
    "exportedSymbols": {
      "ANNRegistry": [
        2928
      ]
    },
    "id": 2929,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2388,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:2"
      },
      {
        "id": 2389,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:2"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "id": 2390,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 28269,
        "src": "101:68:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 2391,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 7865,
        "src": "171:33:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol",
        "file": "../Base/AssetRegistry/BaseRegistry.sol",
        "id": 2392,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 4422,
        "src": "205:48:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNEncoder.sol",
        "file": "./ANNEncoder.sol",
        "id": 2393,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 2387,
        "src": "254:26:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/IANNRegistry.sol",
        "file": "./IANNRegistry.sol",
        "id": 2394,
        "nodeType": "ImportDirective",
        "scope": 2929,
        "sourceUnit": 2971,
        "src": "281:28:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2396,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "412:12:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 2397,
            "nodeType": "InheritanceSpecifier",
            "src": "412:12:2"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2398,
              "name": "IANNRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2970,
              "src": "426:12:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IANNRegistry_$2970",
                "typeString": "contract IANNRegistry"
              }
            },
            "id": 2399,
            "nodeType": "InheritanceSpecifier",
            "src": "426:12:2"
          }
        ],
        "contractDependencies": [
          2970,
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 2395,
          "nodeType": "StructuredDocumentation",
          "src": "312:75:2",
          "text": " @title ANNRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 2928,
        "linearizedBaseContracts": [
          2928,
          2970,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "ANNRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2402,
            "libraryName": {
              "contractScope": null,
              "id": 2400,
              "name": "ANNEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2386,
              "src": "452:10:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ANNEncoder_$2386",
                "typeString": "library ANNEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "446:27:2",
            "typeName": {
              "contractScope": null,
              "id": 2401,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "467:5:2",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 2407,
              "nodeType": "Block",
              "src": "536:2:2",
              "statements": []
            },
            "documentation": null,
            "id": 2408,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 2405,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2404,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "517:12:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "517:14:2"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2403,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "491:2:2"
            },
            "returnParameters": {
              "id": 2406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "536:0:2"
            },
            "scope": 2928,
            "src": "480:58:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2955
            ],
            "body": {
              "id": 2449,
              "nodeType": "Block",
              "src": "1315:137:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2433,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2411,
                        "src": "1334:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2434,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2415,
                        "src": "1343:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2435,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2418,
                        "src": "1350:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2436,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2420,
                        "src": "1360:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2437,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2422,
                        "src": "1371:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2438,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2424,
                        "src": "1379:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2439,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2426,
                        "src": "1386:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2432,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1325:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address)"
                      }
                    },
                    "id": 2440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1325:67:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2441,
                  "nodeType": "ExpressionStatement",
                  "src": "1325:67:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2446,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2413,
                        "src": "1439:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2442,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1402:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2444,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2443,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2411,
                          "src": "1409:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1402:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetANNTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1048,
                      "src": "1402:36:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_ANNTerms_$22768_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct ANNTerms memory)"
                      }
                    },
                    "id": 2447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1402:43:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2448,
                  "nodeType": "ExpressionStatement",
                  "src": "1402:43:2"
                }
              ]
            },
            "documentation": {
              "id": 2409,
              "nodeType": "StructuredDocumentation",
              "src": "544:434:2",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (ANNTerms)\n @param state initial state of the asset\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine ACTUS Engine of the asset\n @param actor account which is allowed to update the asset state\n @param admin account which as admin rights (optional)"
            },
            "functionSelector": "e4d063d5",
            "id": 2450,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2430,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2429,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1292:18:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1292:18:2"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2428,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1275:8:2"
            },
            "parameters": {
              "id": 2427,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2411,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1015:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2410,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1015:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2413,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1040:23:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2412,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1040:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2415,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1073:20:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2414,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1073:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2418,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1103:27:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2416,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1103:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2417,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1103:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2420,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1140:33:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2419,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1140:14:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2422,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1183:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1183:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2424,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1207:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2423,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1207:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2426,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2450,
                  "src": "1230:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2425,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1230:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1005:244:2"
            },
            "returnParameters": {
              "id": 2431,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1315:0:2"
            },
            "scope": 2928,
            "src": "983:469:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2962
            ],
            "body": {
              "id": 2465,
              "nodeType": "Block",
              "src": "1712:62:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2459,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1729:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2461,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2460,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2453,
                          "src": "1736:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1729:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2462,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetANNTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1833,
                      "src": "1729:36:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_ANNTerms_$22768_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct ANNTerms memory)"
                      }
                    },
                    "id": 2463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1729:38:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                      "typeString": "struct ANNTerms memory"
                    }
                  },
                  "functionReturnParameters": 2458,
                  "id": 2464,
                  "nodeType": "Return",
                  "src": "1722:45:2"
                }
              ]
            },
            "documentation": {
              "id": 2451,
              "nodeType": "StructuredDocumentation",
              "src": "1458:129:2",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 2466,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2455,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1665:8:2"
            },
            "parameters": {
              "id": 2454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2453,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2466,
                  "src": "1610:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2452,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1610:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1609:17:2"
            },
            "returnParameters": {
              "id": 2458,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2457,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2466,
                  "src": "1691:15:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2456,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1691:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1690:17:2"
            },
            "scope": 2928,
            "src": "1592:182:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2969
            ],
            "body": {
              "id": 2489,
              "nodeType": "Block",
              "src": "2086:96:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2482,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2471,
                        "src": "2133:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2478,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2096:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2480,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2479,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2469,
                          "src": "2103:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2096:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2481,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetANNTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1048,
                      "src": "2096:36:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_ANNTerms_$22768_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct ANNTerms memory)"
                      }
                    },
                    "id": 2483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2096:43:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2484,
                  "nodeType": "ExpressionStatement",
                  "src": "2096:43:2"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2486,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2469,
                        "src": "2167:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2485,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2154:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2154:21:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2488,
                  "nodeType": "EmitStatement",
                  "src": "2149:26:2"
                }
              ]
            },
            "documentation": {
              "id": 2467,
              "nodeType": "StructuredDocumentation",
              "src": "1780:172:2",
              "text": " @notice Set the terms of the asset\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param terms new terms"
            },
            "functionSelector": "c0d94293",
            "id": 2490,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2475,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2469,
                    "src": "2073:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2476,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2474,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2059:12:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2059:22:2"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2473,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2042:8:2"
            },
            "parameters": {
              "id": 2472,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2469,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2490,
                  "src": "1975:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2468,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2471,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2490,
                  "src": "1992:23:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2470,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1992:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1974:42:2"
            },
            "returnParameters": {
              "id": 2477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2086:0:2"
            },
            "scope": 2928,
            "src": "1957:225:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 2509,
              "nodeType": "Block",
              "src": "2367:87:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2506,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2494,
                        "src": "2437:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2502,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2384:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2504,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2503,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2492,
                          "src": "2391:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2384:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2505,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2035,
                      "src": "2384:52:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 2507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2384:63:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 2501,
                  "id": 2508,
                  "nodeType": "Return",
                  "src": "2377:70:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 2510,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2498,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2496,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2308:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2497,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2324:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2299:39:2"
            },
            "parameters": {
              "id": 2495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2492,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2510,
                  "src": "2227:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2491,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2227:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2494,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2510,
                  "src": "2244:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2493,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2244:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2226:36:2"
            },
            "returnParameters": {
              "id": 2501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2500,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2510,
                  "src": "2356:5:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2499,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2356:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2355:7:2"
            },
            "scope": 2928,
            "src": "2188:266:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 2529,
              "nodeType": "Block",
              "src": "2644:93:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2526,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2514,
                        "src": "2720:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2522,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2661:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2524,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2523,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2512,
                          "src": "2668:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2661:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2525,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2099,
                      "src": "2661:58:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_address_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (address)"
                      }
                    },
                    "id": 2527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2661:69:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2521,
                  "id": 2528,
                  "nodeType": "Return",
                  "src": "2654:76:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 2530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2518,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2516,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2583:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2517,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2599:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2574:39:2"
            },
            "parameters": {
              "id": 2515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2512,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2530,
                  "src": "2502:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2511,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2502:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2514,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2530,
                  "src": "2519:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2513,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2519:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2501:36:2"
            },
            "returnParameters": {
              "id": 2521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2520,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2530,
                  "src": "2631:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2519,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2631:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2630:9:2"
            },
            "scope": 2928,
            "src": "2460:277:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 2549,
              "nodeType": "Block",
              "src": "2927:93:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2546,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2534,
                        "src": "3003:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2542,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2944:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2544,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2543,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2532,
                          "src": "2951:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2944:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2545,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2114,
                      "src": "2944:58:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 2547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2944:69:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2541,
                  "id": 2548,
                  "nodeType": "Return",
                  "src": "2937:76:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 2550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2538,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2536,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2866:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2537,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2882:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2857:39:2"
            },
            "parameters": {
              "id": 2535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2532,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2550,
                  "src": "2785:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2531,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2785:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2534,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2550,
                  "src": "2802:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2533,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2802:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2784:36:2"
            },
            "returnParameters": {
              "id": 2541,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2540,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2550,
                  "src": "2914:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2539,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2914:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2913:9:2"
            },
            "scope": 2928,
            "src": "2743:277:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 2569,
              "nodeType": "Block",
              "src": "3207:90:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2554,
                        "src": "3280:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2562,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3224:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2564,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2563,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2552,
                          "src": "3231:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3224:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2565,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2132,
                      "src": "3224:55:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 2567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3224:66:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2561,
                  "id": 2568,
                  "nodeType": "Return",
                  "src": "3217:73:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 2570,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2558,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2556,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3146:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2557,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3162:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3137:39:2"
            },
            "parameters": {
              "id": 2555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2552,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2570,
                  "src": "3065:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2551,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3065:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2554,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2570,
                  "src": "3082:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2553,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3082:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3064:36:2"
            },
            "returnParameters": {
              "id": 2561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2560,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2570,
                  "src": "3194:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2559,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3194:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3193:9:2"
            },
            "scope": 2928,
            "src": "3026:271:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 2589,
              "nodeType": "Block",
              "src": "3482:89:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2586,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "3554:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2582,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3499:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2584,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2583,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2572,
                          "src": "3506:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3499:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2585,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2150,
                      "src": "3499:54:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 2587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3499:65:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 2581,
                  "id": 2588,
                  "nodeType": "Return",
                  "src": "3492:72:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 2590,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2578,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2576,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3422:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2577,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3438:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3413:39:2"
            },
            "parameters": {
              "id": 2575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2572,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2590,
                  "src": "3341:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2571,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3341:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2574,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2590,
                  "src": "3358:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2573,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3358:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3340:36:2"
            },
            "returnParameters": {
              "id": 2581,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2580,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2590,
                  "src": "3470:6:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2579,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3470:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3469:8:2"
            },
            "scope": 2928,
            "src": "3303:268:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 2609,
              "nodeType": "Block",
              "src": "3762:92:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2606,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2594,
                        "src": "3837:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2602,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3779:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2604,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2603,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2592,
                          "src": "3786:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3779:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2605,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2236,
                      "src": "3779:57:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IP memory)"
                      }
                    },
                    "id": 2607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3779:68:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 2601,
                  "id": 2608,
                  "nodeType": "Return",
                  "src": "3772:75:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 2610,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2598,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2596,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3699:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2597,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3715:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3690:39:2"
            },
            "parameters": {
              "id": 2595,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2592,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2610,
                  "src": "3618:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2591,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3618:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2594,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2610,
                  "src": "3635:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2593,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3635:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3617:36:2"
            },
            "returnParameters": {
              "id": 2601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2600,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2610,
                  "src": "3747:9:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2599,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3747:2:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3746:11:2"
            },
            "scope": 2928,
            "src": "3577:277:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 2629,
              "nodeType": "Block",
              "src": "4045:91:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2626,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2614,
                        "src": "4119:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2622,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4062:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2624,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2623,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2612,
                          "src": "4069:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4062:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2625,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2358,
                      "src": "4062:56:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IPS_$22486_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IPS memory)"
                      }
                    },
                    "id": 2627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4062:67:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 2621,
                  "id": 2628,
                  "nodeType": "Return",
                  "src": "4055:74:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 2630,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2618,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2616,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3981:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2617,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3997:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3972:39:2"
            },
            "parameters": {
              "id": 2615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2612,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2630,
                  "src": "3900:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2611,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3900:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2614,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2630,
                  "src": "3917:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2613,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3917:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3899:36:2"
            },
            "returnParameters": {
              "id": 2621,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2620,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2630,
                  "src": "4029:10:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2619,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "4029:3:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4028:12:2"
            },
            "scope": 2928,
            "src": "3860:276:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 2649,
              "nodeType": "Block",
              "src": "4353:100:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2646,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2634,
                        "src": "4436:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2642,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4370:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 2644,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2643,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2632,
                          "src": "4377:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4370:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 2645,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForANNAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2385,
                      "src": "4370:65:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) pure returns (struct ContractReference memory)"
                      }
                    },
                    "id": 2647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4370:76:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 2641,
                  "id": 2648,
                  "nodeType": "Return",
                  "src": "4363:83:2"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 2650,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2638,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2636,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4275:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 2637,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4291:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4266:39:2"
            },
            "parameters": {
              "id": 2635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2632,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2650,
                  "src": "4194:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2631,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4194:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2634,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2650,
                  "src": "4211:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2633,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4211:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4193:36:2"
            },
            "returnParameters": {
              "id": 2641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2640,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2650,
                  "src": "4323:24:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2639,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4323:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4322:26:2"
            },
            "scope": 2928,
            "src": "4142:311:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 2926,
              "nodeType": "Block",
              "src": "4597:3234:2",
              "statements": [
                {
                  "assignments": [
                    2660
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2660,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2926,
                      "src": "4607:19:2",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2659,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "4607:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2664,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2661,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "4629:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 2663,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2662,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2652,
                      "src": "4636:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4629:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4607:37:2"
                },
                {
                  "assignments": [
                    2666
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2666,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2926,
                      "src": "4654:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                        "typeString": "struct ANNTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2665,
                        "name": "ANNTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22768,
                        "src": "4654:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                          "typeString": "struct ANNTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2670,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2667,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2660,
                        "src": "4678:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset storage pointer"
                        }
                      },
                      "id": 2668,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetANNTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1833,
                      "src": "4678:26:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_ANNTerms_$22768_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct ANNTerms memory)"
                      }
                    },
                    "id": 2669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4678:28:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                      "typeString": "struct ANNTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4654:52:2"
                },
                {
                  "assignments": [
                    2672
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2672,
                      "mutability": "mutable",
                      "name": "nextEventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2926,
                      "src": "4717:23:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2671,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "4717:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2673,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4717:23:2"
                },
                {
                  "assignments": [
                    2675
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2675,
                      "mutability": "mutable",
                      "name": "nextScheduleTimeOffset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2926,
                      "src": "4750:30:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2674,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4750:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2676,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4750:30:2"
                },
                {
                  "id": 2731,
                  "nodeType": "Block",
                  "src": "4805:678:2",
                  "statements": [
                    {
                      "assignments": [
                        2678,
                        2680
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2678,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2731,
                          "src": "4820:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2677,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "4820:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2680,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2731,
                          "src": "4841:26:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2679,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4841:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2698,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2687,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "4948:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2688,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "4971:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2689,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "4971:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 2690,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "4971:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 2693,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2691,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5016:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 2692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "IP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5016:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4971:58:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2694,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5047:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 2695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5047:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2683,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "4894:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2684,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "4894:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2682,
                                  "name": "IANNEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28268,
                                  "src": "4883:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                                    "typeString": "type(contract IANNEngine)"
                                  }
                                },
                                "id": 2685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4883:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IANNEngine_$28268",
                                  "typeString": "contract IANNEngine"
                                }
                              },
                              "id": 2686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28236,
                              "src": "4883:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct ANNTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 2696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4883:190:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2681,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "4871:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 2697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4871:203:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4819:255:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2720,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2699,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "5111:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5137:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5111:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2702,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5110:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2703,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2680,
                                  "src": "5160:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2704,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "5181:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5160:43:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2706,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5159:45:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5110:94:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2708,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "5225:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2709,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2680,
                                  "src": "5251:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5225:44:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2712,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2678,
                                      "src": "5288:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2711,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5273:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5273:25:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2715,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2672,
                                      "src": "5316:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2714,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5301:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5301:29:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5273:57:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5225:105:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2719,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5224:107:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5110:221:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2730,
                      "nodeType": "IfStatement",
                      "src": "5089:376:2",
                      "trueBody": {
                        "id": 2729,
                        "nodeType": "Block",
                        "src": "5346:119:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2721,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2675,
                                "src": "5364:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2722,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2680,
                                "src": "5389:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5364:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2724,
                            "nodeType": "ExpressionStatement",
                            "src": "5364:43:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2725,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "5425:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2726,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2678,
                                "src": "5441:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5425:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 2728,
                            "nodeType": "ExpressionStatement",
                            "src": "5425:25:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 2794,
                  "nodeType": "Block",
                  "src": "5509:736:2",
                  "statements": [
                    {
                      "assignments": [
                        2733,
                        2735
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2733,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2794,
                          "src": "5524:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2732,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "5524:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2735,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2794,
                          "src": "5545:26:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2734,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5545:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2753,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2742,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "5652:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2743,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "5675:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2744,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "5675:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 2745,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "5675:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 2748,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2746,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5720:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 2747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "IPCI",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5720:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5675:60:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2749,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5753:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 2750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IPCI",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5753:14:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2738,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "5598:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2739,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "5598:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2737,
                                  "name": "IANNEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28268,
                                  "src": "5587:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                                    "typeString": "type(contract IANNEngine)"
                                  }
                                },
                                "id": 2740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5587:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IANNEngine_$28268",
                                  "typeString": "contract IANNEngine"
                                }
                              },
                              "id": 2741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28236,
                              "src": "5587:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct ANNTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 2751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5587:194:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2736,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "5575:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 2752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5575:207:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5523:259:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2754,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "5819:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2755,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5845:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5819:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2757,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5818:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2764,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2758,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2735,
                                    "src": "5868:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5890:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5868:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2763,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2761,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2735,
                                    "src": "5895:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2762,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "5916:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5895:43:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5868:70:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2765,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5867:72:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5818:121:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2769,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2767,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2735,
                                    "src": "5960:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5982:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5960:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2772,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2770,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "5987:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2771,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2735,
                                    "src": "6013:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5987:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5960:71:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2775,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2733,
                                      "src": "6050:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2774,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6035:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6035:25:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2778,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2672,
                                      "src": "6078:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2777,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6063:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6063:29:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6035:57:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5960:132:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2782,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5959:134:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5818:275:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2793,
                      "nodeType": "IfStatement",
                      "src": "5797:430:2",
                      "trueBody": {
                        "id": 2792,
                        "nodeType": "Block",
                        "src": "6108:119:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2784,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2675,
                                "src": "6126:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2785,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2735,
                                "src": "6151:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6126:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2787,
                            "nodeType": "ExpressionStatement",
                            "src": "6126:43:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2788,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "6187:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2789,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2733,
                                "src": "6203:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6187:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 2791,
                            "nodeType": "ExpressionStatement",
                            "src": "6187:25:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 2857,
                  "nodeType": "Block",
                  "src": "6269:732:2",
                  "statements": [
                    {
                      "assignments": [
                        2796,
                        2798
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2796,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2857,
                          "src": "6284:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2795,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "6284:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2798,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2857,
                          "src": "6305:26:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2797,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6305:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2816,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2805,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "6412:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2806,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "6435:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2807,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "6435:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 2808,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "6435:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 2811,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2809,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "6480:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 2810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "FP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6480:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6435:58:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2812,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "6511:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 2813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "FP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6511:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2801,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "6358:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2802,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "6358:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2800,
                                  "name": "IANNEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28268,
                                  "src": "6347:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                                    "typeString": "type(contract IANNEngine)"
                                  }
                                },
                                "id": 2803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6347:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IANNEngine_$28268",
                                  "typeString": "contract IANNEngine"
                                }
                              },
                              "id": 2804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28236,
                              "src": "6347:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct ANNTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 2814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6347:190:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2799,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "6335:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 2815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6335:203:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6283:255:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2817,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "6575:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2818,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6601:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6575:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2820,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6574:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2821,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2798,
                                    "src": "6624:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2822,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6646:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6624:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2824,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2798,
                                    "src": "6651:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2825,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "6672:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6651:43:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6624:70:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2828,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6623:72:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6574:121:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2832,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2830,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2798,
                                    "src": "6716:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2831,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6738:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6716:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2835,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2833,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "6743:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2834,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2798,
                                    "src": "6769:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6743:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6716:71:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2838,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2796,
                                      "src": "6806:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2837,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6791:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6791:25:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2841,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2672,
                                      "src": "6834:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2840,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6819:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6819:29:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6791:57:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6716:132:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2845,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6715:134:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6574:275:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2856,
                      "nodeType": "IfStatement",
                      "src": "6553:430:2",
                      "trueBody": {
                        "id": 2855,
                        "nodeType": "Block",
                        "src": "6864:119:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2847,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2675,
                                "src": "6882:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2848,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2798,
                                "src": "6907:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6882:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2850,
                            "nodeType": "ExpressionStatement",
                            "src": "6882:43:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2851,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "6943:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2852,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2796,
                                "src": "6959:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6943:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 2854,
                            "nodeType": "ExpressionStatement",
                            "src": "6943:25:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 2920,
                  "nodeType": "Block",
                  "src": "7025:732:2",
                  "statements": [
                    {
                      "assignments": [
                        2859,
                        2861
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2859,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2920,
                          "src": "7040:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2858,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "7040:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2861,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2920,
                          "src": "7061:26:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2860,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7061:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2879,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2868,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "7168:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2869,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "7191:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2870,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "7191:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 2871,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "7191:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 2874,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2872,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "7236:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 2873,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "PR",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7236:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7191:58:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2875,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "7267:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 2876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "PR",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7267:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2864,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2660,
                                      "src": "7114:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 2865,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "7114:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2863,
                                  "name": "IANNEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28268,
                                  "src": "7103:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                                    "typeString": "type(contract IANNEngine)"
                                  }
                                },
                                "id": 2866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7103:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IANNEngine_$28268",
                                  "typeString": "contract IANNEngine"
                                }
                              },
                              "id": 2867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28236,
                              "src": "7103:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct ANNTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 2877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7103:190:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2862,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "7091:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 2878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7091:203:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7039:255:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2880,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2675,
                                  "src": "7331:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2881,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7357:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7331:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2883,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7330:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2884,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "7380:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7402:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7380:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2887,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "7407:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2888,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "7428:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7407:43:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7380:70:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 2891,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7379:72:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7330:121:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2893,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "7472:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7494:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7472:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2898,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2896,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2675,
                                    "src": "7499:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2897,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2861,
                                    "src": "7525:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7499:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7472:71:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2901,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2859,
                                      "src": "7562:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2900,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7547:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7547:25:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2904,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2672,
                                      "src": "7590:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 2903,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7575:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2905,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7575:29:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7547:57:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7472:132:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2908,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7471:134:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7330:275:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2919,
                      "nodeType": "IfStatement",
                      "src": "7309:430:2",
                      "trueBody": {
                        "id": 2918,
                        "nodeType": "Block",
                        "src": "7620:119:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2910,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2675,
                                "src": "7638:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2911,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2861,
                                "src": "7663:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7638:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2913,
                            "nodeType": "ExpressionStatement",
                            "src": "7638:43:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2914,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "7699:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2915,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2859,
                                "src": "7715:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "7699:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 2917,
                            "nodeType": "ExpressionStatement",
                            "src": "7699:25:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2922,
                        "name": "nextEventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2672,
                        "src": "7786:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2923,
                        "name": "nextScheduleTimeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2675,
                        "src": "7801:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2921,
                      "name": "encodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24702,
                      "src": "7774:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                      }
                    },
                    "id": 2924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7774:50:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2658,
                  "id": 2925,
                  "nodeType": "Return",
                  "src": "7767:57:2"
                }
              ]
            },
            "documentation": null,
            "id": 2927,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2655,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 2654,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4552:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4543:23:2"
            },
            "parameters": {
              "id": 2653,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2652,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2927,
                  "src": "4488:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2651,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4488:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4487:17:2"
            },
            "returnParameters": {
              "id": 2658,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2657,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2927,
                  "src": "4584:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2656,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4584:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4583:9:2"
            },
            "scope": 2928,
            "src": "4460:3371:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 2929,
        "src": "388:7445:2"
      }
    ],
    "src": "41:7793:2"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        }
      },
      "links": {
        "ANNEncoder": "0xbE7601adDc98810B213603eCdb58f50b7fAFF3A9"
      },
      "address": "0xc81C814aCBc8837ca587F8F8FdAa0775782fC13A",
      "transactionHash": "0xacf89e292e6d189c2cecac8b212b709c2459fdcc94b70845d73f2674c6b26715"
    },
    "5": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        }
      },
      "links": {
        "ANNEncoder": "0x593a9037A51A4A030dcfdE69256E5ba143aF8463"
      },
      "address": "0x02Dde1ab611ebb23d7aFAc622A28ACCE5587Eff9",
      "transactionHash": "0xfae14fb40c6bfc3f3bd7e26390334f0b0ee9721ea17f4a0ef2f89863cbbcda1e"
    },
    "1994": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "ANNEncoder": "0xE1fcFd1F2a7C04391a66a8031522b4f071C1BEAE"
      },
      "address": "0xE82F1D585DBC1D3B2068487206d39CdAe3590e4A",
      "transactionHash": "0xd5c137aa251d0fe98584b25630d7a12f70e1cc6d9211e8415db4618b83411088"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.633Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "approveActor(address)": {
        "details": "Can only be called by the owner of the contract.",
        "params": {
          "actor": "address of the actor"
        }
      },
      "getActor(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "address of the asset actor"
        }
      },
      "getEngine(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "address of the engine of the asset"
        }
      },
      "getEventAtIndex(bytes32,uint256)": {
        "params": {
          "assetId": "id of the asset",
          "index": "index of the event to return"
        },
        "returns": {
          "_0": "Event"
        }
      },
      "getFinalizedState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getNextScheduleIndex(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Index"
        }
      },
      "getNextScheduledEvent(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "event"
        }
      },
      "getOwnership(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "addresses of all owners of the asset"
        }
      },
      "getSchedule(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "the schedule"
        }
      },
      "getScheduleLength(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Length of the schedule"
        }
      },
      "getState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getTerms(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "terms of the asset"
        }
      },
      "grantAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to grant access to",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "hasAccess(bytes32,bytes4,address)": {
        "params": {
          "account": "address of the account for which to check access",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        },
        "returns": {
          "_0": "true if allowed access"
        }
      },
      "hasRootAccess(bytes32,address)": {
        "params": {
          "account": "address of the account for which to check root acccess",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if has root access"
        }
      },
      "isEventSettled(bytes32,bytes32)": {
        "params": {
          "_event": "event (encoded)",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if event was settled"
        }
      },
      "isRegistered(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if asset exist"
        }
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "_event": "event (encoded) to be marked as settled",
          "assetId": "id of the asset"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "popNextScheduledEvent(bytes32)": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)": {
        "params": {
          "actor": "account which is allowed to update the asset state",
          "admin": "account which as admin rights (optional)",
          "engine": "ACTUS Engine of the asset",
          "ownership": "ownership of the asset",
          "schedule": "schedule of the asset",
          "state": "initial state of the asset",
          "terms": "asset specific terms (ANNTerms)"
        }
      },
      "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."
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to revoke access for",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "setActor(bytes32,address)": {
        "params": {
          "actor": "address of the Actor contract",
          "assetId": "id of the asset"
        }
      },
      "setCounterpartyBeneficiary(bytes32,address)": {
        "details": "Can only be updated by the current counterparty beneficiary or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCounterpartyBeneficiary": "address of the new beneficiary"
        }
      },
      "setCounterpartyObligor(bytes32,address)": {
        "details": "Can only be updated by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCounterpartyObligor": "address of the new counterparty obligor"
        }
      },
      "setCreatorBeneficiary(bytes32,address)": {
        "details": "Can only be updated by the current creator beneficiary or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCreatorBeneficiary": "address of the new beneficiary"
        }
      },
      "setCreatorObligor(bytes32,address)": {
        "details": "Can only be updated by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCreatorObligor": "address of the new creator obligor"
        }
      },
      "setEngine(bytes32,address)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "assetId": "id of the asset",
          "engine": "new engine address"
        }
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))": {
        "details": "Can only be set by authorized account.",
        "params": {
          "assetId": "id of the asset",
          "terms": "new terms"
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "ANNRegistry",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "approveActor(address)": {
        "notice": "Approves the address of an actor contract e.g. for registering assets."
      },
      "getActor(bytes32)": {
        "notice": "Returns the address of the actor which is allowed to update the state of the asset."
      },
      "getEngine(bytes32)": {
        "notice": "Returns the address of a the ACTUS engine corresponding to the ContractType of an asset."
      },
      "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"
      },
      "getEventAtIndex(bytes32,uint256)": {
        "notice": "Returns an event for a given position (index) in a schedule of a given asset."
      },
      "getFinalizedState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getNextScheduleIndex(bytes32)": {
        "notice": "Returns the index of the next event to be processed for a schedule of an asset."
      },
      "getNextScheduledEvent(bytes32)": {
        "notice": "Returns the next event to process."
      },
      "getNextUnderlyingEvent(bytes32)": {
        "notice": "If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event."
      },
      "getOwnership(bytes32)": {
        "notice": "Retrieves the registered addresses of owners (creator, counterparty) of an asset."
      },
      "getSchedule(bytes32)": {
        "notice": "Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)"
      },
      "getScheduleLength(bytes32)": {
        "notice": "Returns the length of a schedule of a given asset."
      },
      "getState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getTerms(bytes32)": {
        "notice": "Returns the terms of an asset."
      },
      "grantAccess(bytes32,bytes4,address)": {
        "notice": "Grant access to an account to call a specific method on a specific asset."
      },
      "hasAccess(bytes32,bytes4,address)": {
        "notice": "Check whether an account is allowed to call a specific method on a specific asset."
      },
      "hasRootAccess(bytes32,address)": {
        "notice": "Check whether an account has root access for a specific asset."
      },
      "isEventSettled(bytes32,bytes32)": {
        "notice": "Returns true if an event of an assets schedule was settled"
      },
      "isRegistered(bytes32)": {
        "notice": "Returns if there is an asset registerd for a given assetId"
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "notice": "Mark an event as settled"
      },
      "popNextScheduledEvent(bytes32)": {
        "notice": "Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)"
      },
      "registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)": {
        "notice": "@param assetId id of the asset"
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "notice": "Revoke access for an account to call a specific method on a specific asset."
      },
      "setActor(bytes32,address)": {
        "notice": "Set the address of the Actor contract which should be going forward."
      },
      "setCounterpartyBeneficiary(bytes32,address)": {
        "notice": "Updates the address of the default beneficiary of cashflows going to the counterparty."
      },
      "setCounterpartyObligor(bytes32,address)": {
        "notice": "Update the address of the counterparty which has to fulfill obligations for the counterparty of the asset."
      },
      "setCreatorBeneficiary(bytes32,address)": {
        "notice": "Update the address of the default beneficiary of cashflows going to the creator."
      },
      "setCreatorObligor(bytes32,address)": {
        "notice": "Update the address of the obligor which has to fulfill obligations for the creator of the asset."
      },
      "setEngine(bytes32,address)": {
        "notice": "Set the engine address which should be used for the asset going forward."
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next finalized state of an asset."
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next state of an asset."
      },
      "setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))": {
        "notice": "Set the terms of the asset"
      }
    },
    "notice": "Registry for ACTUS Protocol assets",
    "version": 1
  }
}