{
  "contractName": "EtherDividendCheckpoint",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "takeFee",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DISTRIBUTE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "dividends",
      "outputs": [
        {
          "name": "checkpointId",
          "type": "uint256"
        },
        {
          "name": "created",
          "type": "uint256"
        },
        {
          "name": "maturity",
          "type": "uint256"
        },
        {
          "name": "expiry",
          "type": "uint256"
        },
        {
          "name": "amount",
          "type": "uint256"
        },
        {
          "name": "claimedAmount",
          "type": "uint256"
        },
        {
          "name": "totalSupply",
          "type": "uint256"
        },
        {
          "name": "reclaimed",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "securityToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "FEE_ADMIN",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_securityToken",
          "type": "address"
        },
        {
          "name": "_polyAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_depositor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_checkpointId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_created",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_maturity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_expiry",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_totalSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_dividendIndex",
          "type": "uint256"
        }
      ],
      "name": "EtherDividendDeposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_payee",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_dividendIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "EtherDividendClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_claimer",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_dividendIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_claimedAmount",
          "type": "uint256"
        }
      ],
      "name": "EtherDividendReclaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_payee",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_dividendIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "EtherDividendClaimFailed",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitFunction",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_maturity",
          "type": "uint256"
        },
        {
          "name": "_expiry",
          "type": "uint256"
        }
      ],
      "name": "createDividend",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_maturity",
          "type": "uint256"
        },
        {
          "name": "_expiry",
          "type": "uint256"
        },
        {
          "name": "_checkpointId",
          "type": "uint256"
        }
      ],
      "name": "createDividendWithCheckpoint",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_dividendIndex",
          "type": "uint256"
        },
        {
          "name": "_payees",
          "type": "address[]"
        }
      ],
      "name": "pushDividendPaymentToAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_dividendIndex",
          "type": "uint256"
        },
        {
          "name": "_start",
          "type": "uint256"
        },
        {
          "name": "_iterations",
          "type": "uint256"
        }
      ],
      "name": "pushDividendPayment",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_dividendIndex",
          "type": "uint256"
        }
      ],
      "name": "pullDividendPayment",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_dividendIndex",
          "type": "uint256"
        }
      ],
      "name": "reclaimDividend",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_dividendIndex",
          "type": "uint256"
        },
        {
          "name": "_payee",
          "type": "address"
        }
      ],
      "name": "calculateDividend",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_checkpointId",
          "type": "uint256"
        }
      ],
      "name": "getDividendIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPermissions",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516040806122bb83398101604052805160209091015160018054600160a060020a03938416600160a060020a031991821617909155600080548216331790556002805493909216921691909117905561224a806100716000396000f3006080604052600436106100d75763ffffffff60e060020a6000350416631613ec9d81146100dc57806330008b48146101265780634d58e413146101405780635bea0e1c1461019a5780635daff64e146101d05780635f7619a4146102385780635fc6a28e146102645780636faa22a51461027557806380fef5af146102a6578063814b3fe0146102bb578063aa8b76ea14610316578063b84dfbd21461032e578063b9b3ded214610343578063c3a07df614610351578063c45a015514610366578063d70afa961461037b578063e1726faa14610390575b600080fd5b3480156100e857600080fd5b506100f16103ae565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561013257600080fd5b5061013e6004356103b3565b005b34801561014c57600080fd5b5060408051602060046024803582810135848102808701860190975280865261013e9684359636966044959194909101929182918501908490808284375094975061064f9650505050505050565b3480156101a657600080fd5b506101be600435600160a060020a0360243516610aa3565b60408051918252519081900360200190f35b3480156101dc57600080fd5b506101e8600435610bcb565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022457818101518382015260200161020c565b505050509050019250505060405180910390f35b34801561024457600080fd5b50610250600435610cb0565b604080519115158252519081900360200190f35b61013e600435602435604435610fef565b34801561028157600080fd5b5061028a611377565b60408051600160a060020a039092168252519081900360200190f35b3480156102b257600080fd5b506101be611386565b3480156102c757600080fd5b506102d3600435611398565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c0840152151560e083015251908190036101000190f35b34801561032257600080fd5b5061013e6004356113ef565b34801561033a57600080fd5b5061028a6116c5565b61013e6004356024356116d4565b34801561035d57600080fd5b506101e8611a5b565b34801561037257600080fd5b5061028a611aad565b34801561038757600080fd5b506101be611abc565b34801561039c57600080fd5b5061013e600435602435604435611ae0565b600090565b600354600090829081106103ff576040805160e560020a62461bcd02815260206004820152601860248201526000805160206121ff833981519152604482015290519081900360640190fd5b600380548290811061040d57fe5b906000526020600020906009020160020154421015151561049e576040805160e560020a62461bcd02815260206004820152602260248201527f4469766964656e64206d6174757269747920697320696e20746865206675747560448201527f7265000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054829081106104ac57fe5b90600052602060002090600902016003015442101515610516576040805160e560020a62461bcd02815260206004820152601e60248201527f4469766964656e642065787069727920697320696e2074686520706173740000604482015290519081900360640190fd5b600380548290811061052457fe5b600091825260209091206007600990920201015460ff16156105b6576040805160e560020a62461bcd02815260206004820152602560248201527f4469766964656e6420686173206265656e207265636c61696d6564206279206960448201527f7373756572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054849081106105c457fe5b600091825260208083203384526008600990930201918201905260409091205490925060ff161561063f576040805160e560020a62461bcd02815260206004820152601a60248201527f4469766964656e6420616c7265616479207265636c61696d6564000000000000604482015290519081900360640190fd5b61064a338385612034565b505050565b6000806000805160206121df833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b505050506040513d60208110156106e157600080fd5b505160005433600160a060020a0392831681149450911614905081806107045750805b806107aa5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561077d57600080fd5b505af1158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b50515b1515610800576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60035487908110610849576040805160e560020a62461bcd02815260206004820152601860248201526000805160206121ff833981519152604482015290519081900360640190fd5b600380548290811061085757fe5b90600052602060002090600902016002015442101515156108e8576040805160e560020a62461bcd02815260206004820152602260248201527f4469766964656e64206d6174757269747920697320696e20746865206675747560448201527f7265000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054829081106108f657fe5b90600052602060002090600902016003015442101515610960576040805160e560020a62461bcd02815260206004820152601e60248201527f4469766964656e642065787069727920697320696e2074686520706173740000604482015290519081900360640190fd5b600380548290811061096e57fe5b600091825260209091206007600990920201015460ff1615610a00576040805160e560020a62461bcd02815260206004820152602560248201527f4469766964656e6420686173206265656e207265636c61696d6564206279206960448201527f7373756572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003805489908110610a0e57fe5b90600052602060002090600902019550600094505b8651851015610a99578560080160008887815181101515610a4057fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff161515610a8e57610a8e8786815181101515610a7d57fe5b90602001906020020151878a612034565b600190940193610a23565b5050505050505050565b6000806000600385815481101515610ab757fe5b60009182526020808320600160a060020a03881684526008600990930201918201905260409091205490925060ff1615610af45760009250610bc3565b6001548254604080517f4ee2cd7e000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482019390935290519190921691634ee2cd7e9160448083019260209291908290030181600087803b158015610b6657600080fd5b505af1158015610b7a573d6000803e3d6000fd5b505050506040513d6020811015610b9057600080fd5b505160068301546004840154919250610bc091610bb490849063ffffffff61216316565b9063ffffffff61219216565b92505b505092915050565b606060008082815b600354831015610c175785600384815481101515610bed57fe5b9060005260206000209060090201600001541415610c0c576001909301925b600190920191610bd3565b83604051908082528060200260200182016040528015610c41578160200160208202803883390190505b50915060009350600090505b600354811015610ca75785600382815481101515610c6757fe5b9060005260206000209060090201600001541415610c9f57808285815181101515610c8e57fe5b602090810290910101526001909301925b600101610c4d565b50949350505050565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d2957600080fd5b505af1158015610d3d573d6000803e3d6000fd5b505050506040513d6020811015610d5357600080fd5b505160005433600160a060020a039283168114945091161490508180610d765750805b80610e1c5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b505050506040513d6020811015610e1957600080fd5b50515b1515610e72576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b158015610ee157600080fd5b505af1158015610ef5573d6000803e3d6000fd5b505050506040513d6020811015610f0b57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b158015610f6257600080fd5b505af1158015610f76573d6000803e3d6000fd5b505050506040513d6020811015610f8c57600080fd5b50511515610fe4576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b505050506040513d602081101561106f57600080fd5b5051600160a060020a031633146110d0576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b8484116110dc57600080fd5b4284116110e857600080fd5b600034116110f557600080fd5b600160009054906101000a9004600160a060020a0316600160a060020a0316635488cc806040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561114857600080fd5b505af115801561115c573d6000803e3d6000fd5b505050506040513d602081101561117257600080fd5b505183111561118057600080fd5b600354600154604080517f981b24d0000000000000000000000000000000000000000000000000000000008152600481018790529051929450600160a060020a039091169163981b24d0916024808201926020929091908290030181600087803b1580156111ed57600080fd5b505af1158015611201573d6000803e3d6000fd5b505050506040513d602081101561121757600080fd5b81019080805190602001909291905050509050600361010060405190810160405280858152602001428152602001878152602001868152602001348152602001600081526020018381526020016000151581525090806001815401808255809150509060018203906000526020600020906009020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff02191690831515021790555050505033600160a060020a03167fb433e92ef797d780cbb7fb72acd0cb46810598f52b65aaea374d930fa6a4441b844288883487896040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a25050505050565b600254600160a060020a031681565b6000805160206121df83398151915281565b60038054829081106113a657fe5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007909701549597509395929491939092909160ff1688565b600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b505050506040513d602081101561146f57600080fd5b5051600160a060020a031633146114d0576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6003548310611517576040805160e560020a62461bcd02815260206004820152601860248201526000805160206121ff833981519152604482015290519081900360640190fd5b600380548490811061152557fe5b9060005260206000209060090201600301544210151515611590576040805160e560020a62461bcd02815260206004820181905260248201527f4469766964656e642065787069727920697320696e2074686520667574757265604482015290519081900360640190fd5b600380548490811061159e57fe5b600091825260209091206007600990920201015460ff161561160a576040805160e560020a62461bcd02815260206004820152601860248201527f4469766964656e6420616c726561647920636c61696d65640000000000000000604482015290519081900360640190fd5b600380548490811061161857fe5b600091825260209091206007600990920201908101805460ff1916600117905560058101546004820154919350611655919063ffffffff6121a716565b604051909150339082156108fc029083906000818181858888f19350505050158015611685573d6000803e3d6000fd5b506040805184815260208101839052815133927fcd202b969101d293ad6e4c4053b46f2bf4698ca22abcb130dc24fa3baca0dee1928290030190a2505050565b600154600160a060020a031681565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561172c57600080fd5b505af1158015611740573d6000803e3d6000fd5b505050506040513d602081101561175657600080fd5b5051600160a060020a031633146117b7576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b8484116117c357600080fd5b4284116117cf57600080fd5b600034116117dc57600080fd5b600354600154604080517fff0b9c900000000000000000000000000000000000000000000000000000000081529051929550600160a060020a039091169163ff0b9c90916004808201926020929091908290030181600087803b15801561184257600080fd5b505af1158015611856573d6000803e3d6000fd5b505050506040513d602081101561186c57600080fd5b5051600154604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051929450600160a060020a03909116916318160ddd916004808201926020929091908290030181600087803b1580156118d157600080fd5b505af11580156118e5573d6000803e3d6000fd5b505050506040513d60208110156118fb57600080fd5b81019080805190602001909291905050509050600361010060405190810160405280848152602001428152602001878152602001868152602001348152602001600081526020018381526020016000151581525090806001815401808255809150509060018203906000526020600020906009020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff02191690831515021790555050505033600160a060020a03167fb433e92ef797d780cbb7fb72acd0cb46810598f52b65aaea374d930fa6a4441b8342888834878a6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a25050505050565b604080516001808252818301909252606091829190602080830190803883390190505090506000805160206121df833981519152816000815181101515611a9e57fe5b60209081029091010152905090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b6000806000806000805160206121df833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050506040513d6020811015611b7557600080fd5b505160005433600160a060020a039283168114945091161490508180611b985750805b80611c3e5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b505050506040513d6020811015611c3b57600080fd5b50515b1515611c94576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b6003548a908110611cdd576040805160e560020a62461bcd02815260206004820152601860248201526000805160206121ff833981519152604482015290519081900360640190fd5b6003805482908110611ceb57fe5b9060005260206000209060090201600201544210151515611d7c576040805160e560020a62461bcd02815260206004820152602260248201527f4469766964656e64206d6174757269747920697320696e20746865206675747560448201527f7265000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003805482908110611d8a57fe5b90600052602060002090600902016003015442101515611df4576040805160e560020a62461bcd02815260206004820152601e60248201527f4469766964656e642065787069727920697320696e2074686520706173740000604482015290519081900360640190fd5b6003805482908110611e0257fe5b600091825260209091206007600990920201015460ff1615611e94576040805160e560020a62461bcd02815260206004820152602560248201527f4469766964656e6420686173206265656e207265636c61696d6564206279206960448201527f7373756572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600380548c908110611ea257fe5b90600052602060002090600902019750600160009054906101000a9004600160a060020a0316600160a060020a031663e3cc65e26040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b505050506040513d6020811015611f2f57600080fd5b505196508995505b611f5087611f4b8c8c63ffffffff6121b916565b6121c6565b86101561202757600154604080517f3feb5f2b000000000000000000000000000000000000000000000000000000008152600481018990529051600160a060020a0390921691633feb5f2b916024808201926020929091908290030181600087803b158015611fbe57600080fd5b505af1158015611fd2573d6000803e3d6000fd5b505050506040513d6020811015611fe857600080fd5b5051600160a060020a038116600090815260088a01602052604090205490955060ff16151561201c5761201c85898d612034565b600190950194611f37565b5050505050505050505050565b60006120408285610aa3565b600160a060020a03851660009081526008850160205260409020805460ff19166001179055600584015490915061207e90829063ffffffff6121b916565b6005840155600081111561215d57604051600160a060020a0385169082156108fc029083906000818181858888f19350505050156120fe5760408051838152602081018390528151600160a060020a038716927f3727919a1862a5c3b2ded34e6d05c509537fb302f8b29d89bff5672bd3e86fe0928290030190a261215d565b600160a060020a0384166000818152600885016020908152604091829020805460ff19169055815185815290810184905281517f2c0085c7e38441531918ee99d0dbf1102f84a4e5b1c3a506c3f2e8a4e5f81783929181900390910190a25b50505050565b60008215156121745750600061218c565b5081810281838281151561218457fe5b041461218c57fe5b92915050565b6000818381151561219f57fe5b049392505050565b6000828211156121b357fe5b50900390565b8181018281101561218c57fe5b60008183106121d557816121d7565b825b939250505056004449535452494255544500000000000000000000000000000000000000000000496e636f7272656374206469766964656e6420696e6465780000000000000000a165627a7a72305820bc7004bfe84082d682986326d20b93e2344ae5ca3f95c44d31c327b7fa070c5e0029",
  "deployedBytecode": "0x6080604052600436106100d75763ffffffff60e060020a6000350416631613ec9d81146100dc57806330008b48146101265780634d58e413146101405780635bea0e1c1461019a5780635daff64e146101d05780635f7619a4146102385780635fc6a28e146102645780636faa22a51461027557806380fef5af146102a6578063814b3fe0146102bb578063aa8b76ea14610316578063b84dfbd21461032e578063b9b3ded214610343578063c3a07df614610351578063c45a015514610366578063d70afa961461037b578063e1726faa14610390575b600080fd5b3480156100e857600080fd5b506100f16103ae565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561013257600080fd5b5061013e6004356103b3565b005b34801561014c57600080fd5b5060408051602060046024803582810135848102808701860190975280865261013e9684359636966044959194909101929182918501908490808284375094975061064f9650505050505050565b3480156101a657600080fd5b506101be600435600160a060020a0360243516610aa3565b60408051918252519081900360200190f35b3480156101dc57600080fd5b506101e8600435610bcb565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022457818101518382015260200161020c565b505050509050019250505060405180910390f35b34801561024457600080fd5b50610250600435610cb0565b604080519115158252519081900360200190f35b61013e600435602435604435610fef565b34801561028157600080fd5b5061028a611377565b60408051600160a060020a039092168252519081900360200190f35b3480156102b257600080fd5b506101be611386565b3480156102c757600080fd5b506102d3600435611398565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c0840152151560e083015251908190036101000190f35b34801561032257600080fd5b5061013e6004356113ef565b34801561033a57600080fd5b5061028a6116c5565b61013e6004356024356116d4565b34801561035d57600080fd5b506101e8611a5b565b34801561037257600080fd5b5061028a611aad565b34801561038757600080fd5b506101be611abc565b34801561039c57600080fd5b5061013e600435602435604435611ae0565b600090565b600354600090829081106103ff576040805160e560020a62461bcd02815260206004820152601860248201526000805160206121ff833981519152604482015290519081900360640190fd5b600380548290811061040d57fe5b906000526020600020906009020160020154421015151561049e576040805160e560020a62461bcd02815260206004820152602260248201527f4469766964656e64206d6174757269747920697320696e20746865206675747560448201527f7265000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054829081106104ac57fe5b90600052602060002090600902016003015442101515610516576040805160e560020a62461bcd02815260206004820152601e60248201527f4469766964656e642065787069727920697320696e2074686520706173740000604482015290519081900360640190fd5b600380548290811061052457fe5b600091825260209091206007600990920201015460ff16156105b6576040805160e560020a62461bcd02815260206004820152602560248201527f4469766964656e6420686173206265656e207265636c61696d6564206279206960448201527f7373756572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054849081106105c457fe5b600091825260208083203384526008600990930201918201905260409091205490925060ff161561063f576040805160e560020a62461bcd02815260206004820152601a60248201527f4469766964656e6420616c7265616479207265636c61696d6564000000000000604482015290519081900360640190fd5b61064a338385612034565b505050565b6000806000805160206121df833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b505050506040513d60208110156106e157600080fd5b505160005433600160a060020a0392831681149450911614905081806107045750805b806107aa5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561077d57600080fd5b505af1158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b50515b1515610800576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60035487908110610849576040805160e560020a62461bcd02815260206004820152601860248201526000805160206121ff833981519152604482015290519081900360640190fd5b600380548290811061085757fe5b90600052602060002090600902016002015442101515156108e8576040805160e560020a62461bcd02815260206004820152602260248201527f4469766964656e64206d6174757269747920697320696e20746865206675747560448201527f7265000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038054829081106108f657fe5b90600052602060002090600902016003015442101515610960576040805160e560020a62461bcd02815260206004820152601e60248201527f4469766964656e642065787069727920697320696e2074686520706173740000604482015290519081900360640190fd5b600380548290811061096e57fe5b600091825260209091206007600990920201015460ff1615610a00576040805160e560020a62461bcd02815260206004820152602560248201527f4469766964656e6420686173206265656e207265636c61696d6564206279206960448201527f7373756572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003805489908110610a0e57fe5b90600052602060002090600902019550600094505b8651851015610a99578560080160008887815181101515610a4057fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff161515610a8e57610a8e8786815181101515610a7d57fe5b90602001906020020151878a612034565b600190940193610a23565b5050505050505050565b6000806000600385815481101515610ab757fe5b60009182526020808320600160a060020a03881684526008600990930201918201905260409091205490925060ff1615610af45760009250610bc3565b6001548254604080517f4ee2cd7e000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482019390935290519190921691634ee2cd7e9160448083019260209291908290030181600087803b158015610b6657600080fd5b505af1158015610b7a573d6000803e3d6000fd5b505050506040513d6020811015610b9057600080fd5b505160068301546004840154919250610bc091610bb490849063ffffffff61216316565b9063ffffffff61219216565b92505b505092915050565b606060008082815b600354831015610c175785600384815481101515610bed57fe5b9060005260206000209060090201600001541415610c0c576001909301925b600190920191610bd3565b83604051908082528060200260200182016040528015610c41578160200160208202803883390190505b50915060009350600090505b600354811015610ca75785600382815481101515610c6757fe5b9060005260206000209060090201600001541415610c9f57808285815181101515610c8e57fe5b602090810290910101526001909301925b600101610c4d565b50949350505050565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d2957600080fd5b505af1158015610d3d573d6000803e3d6000fd5b505050506040513d6020811015610d5357600080fd5b505160005433600160a060020a039283168114945091161490508180610d765750805b80610e1c5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b505050506040513d6020811015610e1957600080fd5b50515b1515610e72576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b158015610ee157600080fd5b505af1158015610ef5573d6000803e3d6000fd5b505050506040513d6020811015610f0b57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b158015610f6257600080fd5b505af1158015610f76573d6000803e3d6000fd5b505050506040513d6020811015610f8c57600080fd5b50511515610fe4576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b505050506040513d602081101561106f57600080fd5b5051600160a060020a031633146110d0576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b8484116110dc57600080fd5b4284116110e857600080fd5b600034116110f557600080fd5b600160009054906101000a9004600160a060020a0316600160a060020a0316635488cc806040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561114857600080fd5b505af115801561115c573d6000803e3d6000fd5b505050506040513d602081101561117257600080fd5b505183111561118057600080fd5b600354600154604080517f981b24d0000000000000000000000000000000000000000000000000000000008152600481018790529051929450600160a060020a039091169163981b24d0916024808201926020929091908290030181600087803b1580156111ed57600080fd5b505af1158015611201573d6000803e3d6000fd5b505050506040513d602081101561121757600080fd5b81019080805190602001909291905050509050600361010060405190810160405280858152602001428152602001878152602001868152602001348152602001600081526020018381526020016000151581525090806001815401808255809150509060018203906000526020600020906009020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff02191690831515021790555050505033600160a060020a03167fb433e92ef797d780cbb7fb72acd0cb46810598f52b65aaea374d930fa6a4441b844288883487896040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a25050505050565b600254600160a060020a031681565b6000805160206121df83398151915281565b60038054829081106113a657fe5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007909701549597509395929491939092909160ff1688565b600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b505050506040513d602081101561146f57600080fd5b5051600160a060020a031633146114d0576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6003548310611517576040805160e560020a62461bcd02815260206004820152601860248201526000805160206121ff833981519152604482015290519081900360640190fd5b600380548490811061152557fe5b9060005260206000209060090201600301544210151515611590576040805160e560020a62461bcd02815260206004820181905260248201527f4469766964656e642065787069727920697320696e2074686520667574757265604482015290519081900360640190fd5b600380548490811061159e57fe5b600091825260209091206007600990920201015460ff161561160a576040805160e560020a62461bcd02815260206004820152601860248201527f4469766964656e6420616c726561647920636c61696d65640000000000000000604482015290519081900360640190fd5b600380548490811061161857fe5b600091825260209091206007600990920201908101805460ff1916600117905560058101546004820154919350611655919063ffffffff6121a716565b604051909150339082156108fc029083906000818181858888f19350505050158015611685573d6000803e3d6000fd5b506040805184815260208101839052815133927fcd202b969101d293ad6e4c4053b46f2bf4698ca22abcb130dc24fa3baca0dee1928290030190a2505050565b600154600160a060020a031681565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561172c57600080fd5b505af1158015611740573d6000803e3d6000fd5b505050506040513d602081101561175657600080fd5b5051600160a060020a031633146117b7576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b8484116117c357600080fd5b4284116117cf57600080fd5b600034116117dc57600080fd5b600354600154604080517fff0b9c900000000000000000000000000000000000000000000000000000000081529051929550600160a060020a039091169163ff0b9c90916004808201926020929091908290030181600087803b15801561184257600080fd5b505af1158015611856573d6000803e3d6000fd5b505050506040513d602081101561186c57600080fd5b5051600154604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051929450600160a060020a03909116916318160ddd916004808201926020929091908290030181600087803b1580156118d157600080fd5b505af11580156118e5573d6000803e3d6000fd5b505050506040513d60208110156118fb57600080fd5b81019080805190602001909291905050509050600361010060405190810160405280848152602001428152602001878152602001868152602001348152602001600081526020018381526020016000151581525090806001815401808255809150509060018203906000526020600020906009020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff02191690831515021790555050505033600160a060020a03167fb433e92ef797d780cbb7fb72acd0cb46810598f52b65aaea374d930fa6a4441b8342888834878a6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a25050505050565b604080516001808252818301909252606091829190602080830190803883390190505090506000805160206121df833981519152816000815181101515611a9e57fe5b60209081029091010152905090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b6000806000806000805160206121df833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050506040513d6020811015611b7557600080fd5b505160005433600160a060020a039283168114945091161490508180611b985750805b80611c3e5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b505050506040513d6020811015611c3b57600080fd5b50515b1515611c94576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b6003548a908110611cdd576040805160e560020a62461bcd02815260206004820152601860248201526000805160206121ff833981519152604482015290519081900360640190fd5b6003805482908110611ceb57fe5b9060005260206000209060090201600201544210151515611d7c576040805160e560020a62461bcd02815260206004820152602260248201527f4469766964656e64206d6174757269747920697320696e20746865206675747560448201527f7265000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003805482908110611d8a57fe5b90600052602060002090600902016003015442101515611df4576040805160e560020a62461bcd02815260206004820152601e60248201527f4469766964656e642065787069727920697320696e2074686520706173740000604482015290519081900360640190fd5b6003805482908110611e0257fe5b600091825260209091206007600990920201015460ff1615611e94576040805160e560020a62461bcd02815260206004820152602560248201527f4469766964656e6420686173206265656e207265636c61696d6564206279206960448201527f7373756572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600380548c908110611ea257fe5b90600052602060002090600902019750600160009054906101000a9004600160a060020a0316600160a060020a031663e3cc65e26040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b505050506040513d6020811015611f2f57600080fd5b505196508995505b611f5087611f4b8c8c63ffffffff6121b916565b6121c6565b86101561202757600154604080517f3feb5f2b000000000000000000000000000000000000000000000000000000008152600481018990529051600160a060020a0390921691633feb5f2b916024808201926020929091908290030181600087803b158015611fbe57600080fd5b505af1158015611fd2573d6000803e3d6000fd5b505050506040513d6020811015611fe857600080fd5b5051600160a060020a038116600090815260088a01602052604090205490955060ff16151561201c5761201c85898d612034565b600190950194611f37565b5050505050505050505050565b60006120408285610aa3565b600160a060020a03851660009081526008850160205260409020805460ff19166001179055600584015490915061207e90829063ffffffff6121b916565b6005840155600081111561215d57604051600160a060020a0385169082156108fc029083906000818181858888f19350505050156120fe5760408051838152602081018390528151600160a060020a038716927f3727919a1862a5c3b2ded34e6d05c509537fb302f8b29d89bff5672bd3e86fe0928290030190a261215d565b600160a060020a0384166000818152600885016020908152604091829020805460ff19169055815185815290810184905281517f2c0085c7e38441531918ee99d0dbf1102f84a4e5b1c3a506c3f2e8a4e5f81783929181900390910190a25b50505050565b60008215156121745750600061218c565b5081810281838281151561218457fe5b041461218c57fe5b92915050565b6000818381151561219f57fe5b049392505050565b6000828211156121b357fe5b50900390565b8181018281101561218c57fe5b60008183106121d557816121d7565b825b939250505056004449535452494255544500000000000000000000000000000000000000000000496e636f7272656374206469766964656e6420696e6465780000000000000000a165627a7a72305820bc7004bfe84082d682986326d20b93e2344ae5ca3f95c44d31c327b7fa070c5e0029",
  "sourceMap": "675:9758:31:-;;;2690:119;8:9:-1;5:2;;;30:1;27;20:12;5:2;2690:119:31;;;;;;;;;;;;;;;;;;;624:13:13;:30;;-1:-1:-1;;;;;624:30:13;;;-1:-1:-1;;;;;;624:30:13;;;;;;;:13;664:20;;;;674:10;664:20;;;694:9;:31;;;;;;;;;;;;;;675:9758:31;;;;;;",
  "deployedSourceMap": "675:9758:31:-;;;;;;;;-1:-1:-1;675:9758:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2952:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2952:89:31;;;;;;;;;;;;;;;;;;;;;;;6843:307;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6843:307:31;;;;;;;5393:412;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5393:412:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5393:412:31;;-1:-1:-1;5393:412:31;;-1:-1:-1;;;;;;;5393:412:31;8965:409;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8965:409:31;;;;;-1:-1:-1;;;;;8965:409:31;;;;;;;;;;;;;;;;;;;9530:582;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9530:582:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9530:582:31;;;;;;;;;;;;;;;;;1890:223:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1890:223:13;;;;;;;;;;;;;;;;;;;;;;;4372:828:31;;;;;;;;;;365:22:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;365:22:13;;;;;;;;-1:-1:-1;;;;;365:22:13;;;;;;;;;;;;;;762:49:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;762:49:31;;;;1552:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1552:27:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8132:635;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8132:635:31;;;;;276:28:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;276:28:13;;;;3286:768:31;;;;;;;;10235:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10235:195:31;;;;247:22:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:22:13;;;;311:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;311:47:13;;;;6110:611:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6110:611:31;;;;;;;;;2952:89;3000:6;2952:89;:::o;6843:307::-;2182:9;:16;6952:25;;6922:14;;2165:33;;2157:70;;;;;-1:-1:-1;;;;;2157:70:31;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2157:70:31;;;;;;;;;;;;;;;2252:9;:25;;2262:14;;2252:25;;;;;;;;;;;;;;;;:34;;;2245:3;:41;;2237:88;;;;;;;-1:-1:-1;;;;;2237:88:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:9;:25;;2359:14;;2349:25;;;;;;;;;;;;;;;;:32;;;2343:3;:38;2335:81;;;;;;;-1:-1:-1;;;;;2335:81:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:9;:25;;2445:14;;2435:25;;;;;;;;;;;;;;:35;:25;;;;;:35;;;;2434:36;2426:86;;;;;-1:-1:-1;;;;;2426:86:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6980:9;:25;;6990:14;;6980:25;;;;;;;;;;;;;;7041:10;7024:28;;:16;6980:25;;;;;7024:16;;;:28;;;;;;;6980:25;;-1:-1:-1;7024:28:31;;7023:29;7015:68;;;;;-1:-1:-1;;;;;7015:68:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;7093:50;7106:10;7118:8;7128:14;7093:12;:50::i;:::-;6843:307;;;:::o;5393:412::-;5549:25;5617:9;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;;;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;1137:45;;:79;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:9:31;:16;5523:14;;2165:33;;2157:70;;;;;-1:-1:-1;;;;;2157:70:31;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2157:70:31;;;;;;;;;;;;;;;2252:9;:25;;2262:14;;2252:25;;;;;;;;;;;;;;;;:34;;;2245:3;:41;;2237:88;;;;;;;-1:-1:-1;;;;;2237:88:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:9;:25;;2359:14;;2349:25;;;;;;;;;;;;;;;;:32;;;2343:3;:38;2335:81;;;;;;;-1:-1:-1;;;;;2335:81:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:9;:25;;2445:14;;2435:25;;;;;;;;;;;;;;:35;:25;;;;;:35;;;;2434:36;2426:86;;;;;-1:-1:-1;;;;;2426:86:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5577:9;:25;;5587:14;;5577:25;;;;;;;;;;;;;;;;5549:53;;5629:1;5617:13;;5612:187;5636:7;:14;5632:1;:18;5612:187;;;5676:8;:16;;:28;5693:7;5701:1;5693:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5676:28:31;;;;;;;;;;;-1:-1:-1;5676:28:31;;;;5675:29;5671:118;;;5724:50;5737:7;5745:1;5737:10;;;;;;;;;;;;;;;;;;5749:8;5759:14;5724:12;:50::i;:::-;5652:3;;;;;5612:187;;;1254:1:13;5393:412:31;;;;;;;:::o;8965:409::-;9052:7;9071:25;9206:15;9099:9;9109:14;9099:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9138:24:31;;;;:16;9099:25;;;;;;9138:16;;;:24;;;;;;;9099:25;;-1:-1:-1;9138:24:31;;9134:63;;;9185:1;9178:8;;;;9134:63;9239:13;;9274:21;;9224:72;;;;;;-1:-1:-1;;;;;9224:72:31;;;;;;;;;;;;;;;;9239:13;;;;;9224:41;;:72;;;;;;;;;;;;;;-1:-1:-1;9239:13:31;9224:72;;;5:2:-1;;;;30:1;27;20:12;5:2;9224:72:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9224:72:31;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9224:72:31;9346:20;;;;9325:15;;;;9224:72;;-1:-1:-1;9313:54:31;;:28;;9224:72;;9313:28;:11;:28;:::i;:::-;:32;:54;:32;:54;:::i;:::-;9306:61;;8965:409;;;;;;;:::o;9530:582::-;9599:9;9620:15;;9599:9;9620:15;9649:160;9672:9;:16;9668:20;;9649:160;;;9742:13;9713:9;9723:1;9713:12;;;;;;;;;;;;;;;;;;;;:25;;;:42;9709:90;;;9775:9;;;;;9709:90;9690:3;;;;;9649:160;;;9857:7;9843:22;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;9843:22:31;;9818:47;;9884:1;9874:11;;9910:1;9898:13;;9894:191;9917:9;:16;9913:20;;9894:191;;;9986:13;9957:9;9967:1;9957:12;;;;;;;;;;;;;;;;;;;;:25;;;:42;9953:123;;;10035:1;10018:5;10024:7;10018:14;;;;;;;;;;;;;;;;;;:18;10053:9;;;;;9953:123;9935:3;;9894:191;;;-1:-1:-1;10100:5:31;9530:582;-1:-1:-1;;;;9530:582:31:o;1890:223:13:-;1029:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;1959:4;;1940:9;;1959:4;;;;-1:-1:-1;;;;;1029:13:13;;1014:35;;:37;;;;;;;;;;;;;;1959:4;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;;;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;1137:45;;:79;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1983:9;;;2036:7;;2021:31;;;-1:-1:-1;;;;;2021:31:13;;;;-1:-1:-1;;;;;1983:9:13;;;;:22;;2014:4;;2036:7;;;;;2021:29;;:31;;;;;;;;;;;;;;;;2036:7;2021:31;;;5:2:-1;;;;30:1;27;20:12;5:2;2021:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2021:31:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2021:31:13;1983:79;;;;;;-1:-1:-1;1983:79:13;;;-1:-1:-1;;;;;1983:79:13;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:31;;1983:79;;;;;;;-1:-1:-1;1983:79:13;;;;5:2:-1;;;;30:1;27;20:12;5:2;1983:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1983:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1983:79:13;1975:110;;;;;;;-1:-1:-1;;;;;1975:110:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2102:4:13;;1890:223;-1:-1:-1;;;;1890:223:13:o;4372:828:31:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;4693:21:31;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;4693:21:31;1334:13:13;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;4512:19:31;;;4504:28;;;;;;4560:3;4550:13;;4542:22;;;;;;4594:1;4582:9;:13;4574:22;;;;;;4646:13;;4631:51;;;;;;;;-1:-1:-1;;;;;4646:13:31;;;;4631:49;;:51;;;;;;;;;;;;;;;4646:13;;4631:51;;;5:2:-1;;;;30:1;27;20:12;5:2;4631:51:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4631:51:31;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4631:51:31;4614:68;;;4606:77;;;;;;4717:9;:16;4782:13;;4767:58;;;;;;;;;;;;;;4717:16;;-1:-1:-1;;;;;;4782:13:31;;;;4767:43;;:58;;;;;;;;;;;;;;;-1:-1:-1;4782:13:31;4767:58;;;5:2:-1;;;;30:1;27;20:12;5:2;4767:58:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4767:58:31;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4767:58:31;;;;;;;;;;;;;;;;4743:82;;4835:9;4861:192;;;;;;;;;4883:13;4861:192;;;;4910:3;4861:192;;;;4927:9;4861:192;;;;4950:7;4861:192;;;;4971:9;4861:192;;;;4994:1;4861:192;;;;5009:13;4861:192;;;;5036:5;4861:192;;;;;4835:228;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4835:228:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:10;-1:-1:-1;;;;;5078:115:31;;5113:13;5128:3;5133:9;5144:7;5153:9;5164:13;5179;5078:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4372:828;;;;;:::o;365:22:13:-;;;-1:-1:-1;;;;;365:22:13;;:::o;762:49:31:-;-1:-1:-1;;;;;;;;;;;762:49:31;:::o;1552:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1552:27:31;;;;;;;;;;;;;:::o;8132:635::-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;8465:25:31;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;8465:25:31;1334:13:13;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;8233:9:31;:16;8216:33;;8208:70;;;;;-1:-1:-1;;;;;8208:70:31;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;8208:70:31;;;;;;;;;;;;;;;8303:9;:25;;8313:14;;8303:25;;;;;;;;;;;;;;;;:32;;;8296:3;:39;;8288:84;;;;;;;-1:-1:-1;;;;;8288:84:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8391:9;:25;;8401:14;;8391:25;;;;;;;;;;;;;;:35;:25;;;;;:35;;;;8390:36;8382:73;;;;;-1:-1:-1;;;;;8382:73:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8493:9;:25;;8503:14;;8493:25;;;;;;;;;;;;;;8528:18;8493:25;;;;;8528:18;;;:25;;-1:-1:-1;;8528:25:31;8549:4;8528:25;;;8609:22;;;;8589:15;;;;8493:25;;-1:-1:-1;8589:43:31;;:15;:43;:19;:43;:::i;:::-;8642:36;;8563:69;;-1:-1:-1;8642:10:31;;:36;;;;;8563:69;;8642:36;;;;8563:69;8642:10;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;8693:67:31;;;;;;;;;;;;;;8716:10;;8693:67;;;;;;;;8132:635;;;:::o;276:28:13:-;;;-1:-1:-1;;;;;276:28:13;;:::o;3286:768:31:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;3483:21:31;;;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;3483:21:31;1334:13:13;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3389:19:31;;;3381:28;;;;;;3437:3;3427:13;;3419:22;;;;;;3471:1;3459:9;:13;3451:22;;;;;;3507:9;:16;3571:13;;3556:48;;;;;;;;3507:16;;-1:-1:-1;;;;;;3571:13:31;;;;3556:46;;:48;;;;;;;;;;;;;;;3571:13;;3556:48;;;5:2:-1;;;;30:1;27;20:12;5:2;3556:48:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3556:48:31;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3556:48:31;3653:13;;3638:43;;;;;;;;3556:48;;-1:-1:-1;;;;;;3653:13:31;;;;3638:41;;:43;;;;;3556:48;;3638:43;;;;;;;;3653:13;;3638:43;;;5:2:-1;;;;30:1;27;20:12;5:2;3638:43:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3638:43:31;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3638:43:31;;;;;;;;;;;;;;;;3614:67;;3691:9;3717:191;;;;;;;;;3739:12;3717:191;;;;3765:3;3717:191;;;;3782:9;3717:191;;;;3805:7;3717:191;;;;3826:9;3717:191;;;;3849:1;3717:191;;;;3864:13;3717:191;;;;3891:5;3717:191;;;;;3691:227;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;3691:227:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3956:10;-1:-1:-1;;;;;3933:114:31;;3968:12;3982:3;3987:9;3998:7;4007:9;4018:13;4033;3933:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3286:768;;;;;:::o;10235:195::-;10336:16;;;10350:1;10336:16;;;;;;;;;10281:9;;;;10336:16;;;;;;;105:10:-1;10336:16:31;88:34:-1;136:17;;-1:-1;10336:16:31;10302:50;;-1:-1:-1;;;;;;;;;;;10362:14:31;10377:1;10362:17;;;;;;;;;;;;;;;;;;:30;10409:14;-1:-1:-1;10235:195:31;:::o;247:22:13:-;;;-1:-1:-1;;;;;247:22:13;;:::o;311:47::-;;;:::o;6110:611:31:-;6273:25;6336:23;6427:9;6525:13;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;;;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;1137:45;;:79;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:9:31;:16;6247:14;;2165:33;;2157:70;;;;;-1:-1:-1;;;;;2157:70:31;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2157:70:31;;;;;;;;;;;;;;;2252:9;:25;;2262:14;;2252:25;;;;;;;;;;;;;;;;:34;;;2245:3;:41;;2237:88;;;;;;;-1:-1:-1;;;;;2237:88:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:9;:25;;2359:14;;2349:25;;;;;;;;;;;;;;;;:32;;;2343:3;:38;2335:81;;;;;;;-1:-1:-1;;;;;2335:81:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:9;:25;;2445:14;;2435:25;;;;;;;;;;;;;;:35;:25;;;;;:35;;;;2434:36;2426:86;;;;;-1:-1:-1;;;;;2426:86:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6301:9;:25;;6311:14;;6301:25;;;;;;;;;;;;;;6377:13;;6362:50;;;;;;;;6301:25;;;;;;;;-1:-1:-1;;;;;;6377:13:31;;6362:48;;:50;;;;;6301:25;6362:50;;;;;;;;;;6377:13;6362:50;;;5:2:-1;;;;30:1;27;20:12;5:2;6362:50:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6362:50:31;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6362:50:31;;-1:-1:-1;6439:6:31;;-1:-1:-1;6422:293:31;6451:53;6463:15;6480:23;:6;6491:11;6480:23;:10;:23;:::i;:::-;6451:11;:53::i;:::-;6447:1;:57;6422:293;;;6556:13;;6541:42;;;;;;;;;;;;;;-1:-1:-1;;;;;6556:13:31;;;;6541:39;;:42;;;;;;;;;;;;;;;-1:-1:-1;6556:13:31;6541:42;;;5:2:-1;;;;30:1;27;20:12;5:2;6541:42:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6541:42:31;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6541:42:31;-1:-1:-1;;;;;6602:23:31;;;;;;:16;;;6541:42;6602:23;;;;;6541:42;;-1:-1:-1;6602:23:31;;6601:24;6597:108;;;6645:45;6658:5;6665:8;6675:14;6645:12;:45::i;:::-;6506:3;;;;;6422:293;;;1254:1:13;6110:611:31;;;;;;;;;;:::o;7377:590::-;7486:13;7502:41;7520:14;7536:6;7502:17;:41::i;:::-;-1:-1:-1;;;;;7553:25:31;;;;;;:17;;;:25;;;;;:32;;-1:-1:-1;;7553:32:31;-1:-1:-1;7553:32:31;;;7631:23;;;;7486:57;;-1:-1:-1;7621:34:31;;7486:57;;7621:9;:34::i;:::-;7595:23;;;:60;7677:1;7669:9;;7665:296;;;7698:18;;-1:-1:-1;;;;;7698:11:31;;;:18;;;;;;;;;;;;:11;:18;;;;;;;7694:257;;;7739:51;;;;;;;;;;;;;;-1:-1:-1;;;;;7739:51:31;;;;;;;;;;;7694:257;;;-1:-1:-1;;;;;7827:25:31;;7855:5;7827:25;;;:17;;;:25;;;;;;;;;:33;;-1:-1:-1;;7827:33:31;;;7881:55;;;;;;;;;;;;;;;;;;;;;;;;7694:257;7377:590;;;;:::o;203:373:63:-;261:9;487:6;;483:35;;;-1:-1:-1;510:1:63;503:8;;483:35;-1:-1:-1;528:5:63;;;532:1;528;:5;546;;;;;;;;:10;539:18;;;;203:373;;;;:::o;658:272::-;716:7;924:1;920;:5;;;;;;;;;658:272;-1:-1:-1;;;658:272:63:o;1042:110::-;1100:7;1122:6;;;;1115:14;;;;-1:-1:-1;1142:5:63;;;1042:110::o;1214:123::-;1293:5;;;1311:6;;;;1304:14;;;409:101:62;470:7;496:1;492;:5;:13;;504:1;492:13;;;500:1;492:13;485:20;409:101;-1:-1:-1;;;409:101:62:o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./ICheckpoint.sol\";\nimport \"../../interfaces/ISecurityToken.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/math/Math.sol\";\n\n/////////////////////\n// Module permissions\n/////////////////////\n//                                        Owner       DISTRIBUTE\n// pushDividendPaymentToAddresses           X               X\n// pushDividendPayment                      X               X\n// createDividend                           X\n// createDividendWithCheckpoint             X\n// reclaimDividend                          X\n\n/**\n * @title Checkpoint module for issuing ether dividends\n */\ncontract EtherDividendCheckpoint is ICheckpoint {\n    using SafeMath for uint256;\n\n    bytes32 public constant DISTRIBUTE = \"DISTRIBUTE\";\n\n    struct Dividend {\n      uint256 checkpointId;\n      uint256 created; // Time at which the dividend was created\n      uint256 maturity; // Time after which dividend can be claimed - set to 0 to bypass\n      uint256 expiry;  // Time until which dividend can be claimed - after this time any remaining amount can be withdrawn by issuer - set to very high value to bypass\n      uint256 amount; // Dividend amount in WEI\n      uint256 claimedAmount; // Amount of dividend claimed so far\n      uint256 totalSupply; // Total supply at the associated checkpoint (avoids recalculating this)\n      bool reclaimed;\n      mapping (address => bool) claimed; // List of addresses which have claimed dividend\n    }\n\n    // List of all dividends\n    Dividend[] public dividends;\n\n    event EtherDividendDeposited(address indexed _depositor, uint256 _checkpointId, uint256 _created, uint256 _maturity, uint256 _expiry, uint256 _amount, uint256 _totalSupply, uint256 _dividendIndex);\n    event EtherDividendClaimed(address indexed _payee, uint256 _dividendIndex, uint256 _amount);\n    event EtherDividendReclaimed(address indexed _claimer, uint256 _dividendIndex, uint256 _claimedAmount);\n    event EtherDividendClaimFailed(address indexed _payee, uint256 _dividendIndex, uint256 _amount);\n\n    modifier validDividendIndex(uint256 _dividendIndex) {\n        require(_dividendIndex < dividends.length, \"Incorrect dividend index\");\n        require(now >= dividends[_dividendIndex].maturity, \"Dividend maturity is in the future\");\n        require(now < dividends[_dividendIndex].expiry, \"Dividend expiry is in the past\");\n        require(!dividends[_dividendIndex].reclaimed, \"Dividend has been reclaimed by issuer\");\n        _;\n    }\n\n    /**\n     * @notice Constructor\n     * @param _securityToken Address of the security token\n     * @param _polyAddress Address of the polytoken\n     */\n    constructor (address _securityToken, address _polyAddress) public\n    IModule(_securityToken, _polyAddress)\n    {\n    }\n\n    /**\n    * @notice Init function i.e generalise function to maintain the structure of the module contract\n    * @return bytes4\n    */\n    function getInitFunction() public pure returns (bytes4) {\n        return bytes4(0);\n    }\n\n    /**\n     * @notice Creates a dividend and checkpoint for the dividend\n     * @param _maturity Time from which dividend can be paid\n     * @param _expiry Time until dividend can no longer be paid, and can be reclaimed by issuer\n     */\n    function createDividend(uint256 _maturity, uint256 _expiry) payable public onlyOwner {\n        require(_expiry > _maturity);\n        require(_expiry > now);\n        require(msg.value > 0);\n        uint256 dividendIndex = dividends.length;\n        uint256 checkpointId = ISecurityToken(securityToken).createCheckpoint();\n        uint256 currentSupply = ISecurityToken(securityToken).totalSupply();\n        dividends.push(\n          Dividend(\n            checkpointId,\n            now,\n            _maturity,\n            _expiry,\n            msg.value,\n            0,\n            currentSupply,\n            false\n          )\n        );\n        emit EtherDividendDeposited(msg.sender, checkpointId, now, _maturity, _expiry, msg.value, currentSupply, dividendIndex);\n    }\n\n    /**\n     * @notice Creates a dividend with a provided checkpoint\n     * @param _maturity Time from which dividend can be paid\n     * @param _expiry Time until dividend can no longer be paid, and can be reclaimed by issuer\n     * @param _checkpointId Id of the checkpoint from which to issue dividend\n     */\n    function createDividendWithCheckpoint(uint256 _maturity, uint256 _expiry, uint256 _checkpointId) payable public onlyOwner {\n        require(_expiry > _maturity);\n        require(_expiry > now);\n        require(msg.value > 0);\n        require(_checkpointId <= ISecurityToken(securityToken).currentCheckpointId());\n        uint256 dividendIndex = dividends.length;\n        uint256 currentSupply = ISecurityToken(securityToken).totalSupplyAt(_checkpointId);\n        dividends.push(\n          Dividend(\n            _checkpointId,\n            now,\n            _maturity,\n            _expiry,\n            msg.value,\n            0,\n            currentSupply,\n            false\n          )\n        );\n        emit EtherDividendDeposited(msg.sender, _checkpointId, now, _maturity, _expiry, msg.value, currentSupply, dividendIndex);\n    }\n\n    /**\n     * @notice Issuer can push dividends to provided addresses\n     * @param _dividendIndex Dividend to push\n     * @param _payees Addresses to which to push the dividend\n     */\n    function pushDividendPaymentToAddresses(uint256 _dividendIndex, address[] _payees) public withPerm(DISTRIBUTE) validDividendIndex(_dividendIndex) {\n        Dividend storage dividend = dividends[_dividendIndex];\n        for (uint256 i = 0; i < _payees.length; i++) {\n            if (!dividend.claimed[_payees[i]]) {\n                _payDividend(_payees[i], dividend, _dividendIndex);\n            }\n        }\n    }\n\n    /**\n     * @notice Issuer can push dividends using the investor list from the security token\n     * @param _dividendIndex Dividend to push\n     * @param _start Index in investor list at which to start pushing dividends\n     * @param _iterations Number of addresses to push dividends for\n     */\n    function pushDividendPayment(uint256 _dividendIndex, uint256 _start, uint256 _iterations) public withPerm(DISTRIBUTE) validDividendIndex(_dividendIndex) {\n        Dividend storage dividend = dividends[_dividendIndex];\n        uint256 numberInvestors = ISecurityToken(securityToken).getInvestorsLength();\n        for (uint256 i = _start; i < Math.min256(numberInvestors, _start.add(_iterations)); i++) {\n            address payee = ISecurityToken(securityToken).investors(i);\n            if (!dividend.claimed[payee]) {\n                _payDividend(payee, dividend, _dividendIndex);\n            }\n        }\n    }\n\n    /**\n     * @notice Investors can pull their own dividends\n     * @param _dividendIndex Dividend to pull\n     */\n    function pullDividendPayment(uint256 _dividendIndex) public validDividendIndex(_dividendIndex)\n    {\n        Dividend storage dividend = dividends[_dividendIndex];\n        require(!dividend.claimed[msg.sender], \"Dividend already reclaimed\");\n        _payDividend(msg.sender, dividend, _dividendIndex);\n    }\n\n    /**\n     * @notice Internal function for paying dividends\n     * @param _payee address of investor\n     * @param _dividend storage with previously issued dividends\n     * @param _dividendIndex Dividend to pay\n     */\n    function _payDividend(address _payee, Dividend storage _dividend, uint256 _dividendIndex) internal {\n        uint256 claim = calculateDividend(_dividendIndex, _payee);\n        _dividend.claimed[_payee] = true;\n        _dividend.claimedAmount = claim.add(_dividend.claimedAmount);\n        if (claim > 0) {\n            if (_payee.send(claim)) {\n              emit EtherDividendClaimed(_payee, _dividendIndex, claim);\n            } else {\n              _dividend.claimed[_payee] = false;\n              emit EtherDividendClaimFailed(_payee, _dividendIndex, claim);\n            }\n        }\n    }\n\n    /**\n     * @notice Issuer can reclaim remaining unclaimed dividend amounts, for expired dividends\n     * @param _dividendIndex Dividend to reclaim\n     */\n    function reclaimDividend(uint256 _dividendIndex) public onlyOwner {\n        require(_dividendIndex < dividends.length, \"Incorrect dividend index\");\n        require(now >= dividends[_dividendIndex].expiry, \"Dividend expiry is in the future\");\n        require(!dividends[_dividendIndex].reclaimed, \"Dividend already claimed\");\n        Dividend storage dividend = dividends[_dividendIndex];\n        dividend.reclaimed = true;\n        uint256 remainingAmount = dividend.amount.sub(dividend.claimedAmount);\n        msg.sender.transfer(remainingAmount);\n        emit EtherDividendReclaimed(msg.sender, _dividendIndex, remainingAmount);\n    }\n\n    /**\n     * @notice Calculate amount of dividends claimable\n     * @param _dividendIndex Dividend to calculate\n     * @param _payee Affected investor address\n     * @return unit256\n     */\n    function calculateDividend(uint256 _dividendIndex, address _payee) public view returns(uint256) {\n        Dividend storage dividend = dividends[_dividendIndex];\n        if (dividend.claimed[_payee]) {\n            return 0;\n        }\n        uint256 balance = ISecurityToken(securityToken).balanceOfAt(_payee, dividend.checkpointId);\n        return balance.mul(dividend.amount).div(dividend.totalSupply);\n    }\n\n    /**\n     * @notice Get the index according to the checkpoint id\n     * @param _checkpointId Checkpoint id to query\n     * @return uint256\n     */\n    function getDividendIndex(uint256 _checkpointId) public view returns(uint256[]) {\n        uint256 counter = 0;\n        for(uint256 i = 0; i < dividends.length; i++) {\n            if (dividends[i].checkpointId == _checkpointId) {\n                counter++;\n            }\n        }\n\n       uint256[] memory index = new uint256[](counter);\n       counter = 0;\n       for(uint256 j = 0; j < dividends.length; j++) {\n           if (dividends[j].checkpointId == _checkpointId) {\n               index[counter] = j;\n               counter++;\n           }\n       }\n       return index;\n    }\n\n    /**\n     * @notice Return the permissions flag that are associated with STO\n     * @return bytes32 array\n     */\n    function getPermissions() public view returns(bytes32[]) {\n        bytes32[] memory allPermissions = new bytes32[](1);\n        allPermissions[0] = DISTRIBUTE;\n        return allPermissions;\n    }\n\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/Checkpoint/EtherDividendCheckpoint.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/Checkpoint/EtherDividendCheckpoint.sol",
    "exportedSymbols": {
      "EtherDividendCheckpoint": [
        12806
      ]
    },
    "id": 12807,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12054,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:31"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/Checkpoint/ICheckpoint.sol",
        "file": "./ICheckpoint.sol",
        "id": 12055,
        "nodeType": "ImportDirective",
        "scope": 12807,
        "sourceUnit": 12950,
        "src": "26:27:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/ISecurityToken.sol",
        "file": "../../interfaces/ISecurityToken.sol",
        "id": 12056,
        "nodeType": "ImportDirective",
        "scope": 12807,
        "sourceUnit": 10160,
        "src": "54:45:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 12057,
        "nodeType": "ImportDirective",
        "scope": 12807,
        "sourceUnit": 22579,
        "src": "100:59:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/Math.sol",
        "file": "openzeppelin-solidity/contracts/math/Math.sol",
        "id": 12058,
        "nodeType": "ImportDirective",
        "scope": 12807,
        "sourceUnit": 22485,
        "src": "160:55:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12059,
              "name": "ICheckpoint",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12949,
              "src": "711:11:31",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICheckpoint_$12949",
                "typeString": "contract ICheckpoint"
              }
            },
            "id": 12060,
            "nodeType": "InheritanceSpecifier",
            "src": "711:11:31"
          }
        ],
        "contractDependencies": [
          9717,
          12949
        ],
        "contractKind": "contract",
        "documentation": "@title Checkpoint module for issuing ether dividends",
        "fullyImplemented": true,
        "id": 12806,
        "linearizedBaseContracts": [
          12806,
          12949,
          9717
        ],
        "name": "EtherDividendCheckpoint",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 12063,
            "libraryName": {
              "contractScope": null,
              "id": 12061,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22578,
              "src": "735:8:31",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22578",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "729:27:31",
            "typeName": {
              "id": 12062,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "748:7:31",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 12066,
            "name": "DISTRIBUTE",
            "nodeType": "VariableDeclaration",
            "scope": 12806,
            "src": "762:49:31",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 12064,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "762:7:31",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "44495354524942555445",
              "id": 12065,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "799:12:31",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ca4be9bd739a9ff5362f4ef138b18f1b41c542345f6f1c2ebd90f78da1e5b354",
                "typeString": "literal_string \"DISTRIBUTE\""
              },
              "value": "DISTRIBUTE"
            },
            "visibility": "public"
          },
          {
            "canonicalName": "EtherDividendCheckpoint.Dividend",
            "id": 12087,
            "members": [
              {
                "constant": false,
                "id": 12068,
                "name": "checkpointId",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "842:20:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12067,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "842:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12070,
                "name": "created",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "870:15:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12069,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "870:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12072,
                "name": "maturity",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "935:16:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12071,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "935:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12074,
                "name": "expiry",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1024:14:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12073,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1024:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12076,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1192:14:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12075,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1192:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12078,
                "name": "claimedAmount",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1240:21:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12077,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1240:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12080,
                "name": "totalSupply",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1306:19:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12079,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1306:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12082,
                "name": "reclaimed",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1406:14:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 12081,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1406:4:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12086,
                "name": "claimed",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1428:33:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 12085,
                  "keyType": {
                    "id": 12083,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1437:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1428:25:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 12084,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1448:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Dividend",
            "nodeType": "StructDefinition",
            "scope": 12806,
            "src": "818:699:31",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12090,
            "name": "dividends",
            "nodeType": "VariableDeclaration",
            "scope": 12806,
            "src": "1552:27:31",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
              "typeString": "struct EtherDividendCheckpoint.Dividend[]"
            },
            "typeName": {
              "baseType": {
                "contractScope": null,
                "id": 12088,
                "name": "Dividend",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 12087,
                "src": "1552:8:31",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                  "typeString": "struct EtherDividendCheckpoint.Dividend"
                }
              },
              "id": 12089,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "1552:10:31",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage_ptr",
                "typeString": "struct EtherDividendCheckpoint.Dividend[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12108,
            "name": "EtherDividendDeposited",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12092,
                  "indexed": true,
                  "name": "_depositor",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1615:26:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12091,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1615:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12094,
                  "indexed": false,
                  "name": "_checkpointId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1643:21:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12093,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1643:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12096,
                  "indexed": false,
                  "name": "_created",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1666:16:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12095,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1666:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12098,
                  "indexed": false,
                  "name": "_maturity",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1684:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12097,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1684:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12100,
                  "indexed": false,
                  "name": "_expiry",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1703:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12099,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1703:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12102,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1720:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12101,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1720:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12104,
                  "indexed": false,
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1737:20:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12103,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1737:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12106,
                  "indexed": false,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1759:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12105,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1759:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1614:168:31"
            },
            "src": "1586:197:31"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12116,
            "name": "EtherDividendClaimed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12110,
                  "indexed": true,
                  "name": "_payee",
                  "nodeType": "VariableDeclaration",
                  "scope": 12116,
                  "src": "1815:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12109,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1815:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12112,
                  "indexed": false,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12116,
                  "src": "1839:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1839:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12114,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12116,
                  "src": "1863:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1863:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1814:65:31"
            },
            "src": "1788:92:31"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12124,
            "name": "EtherDividendReclaimed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12118,
                  "indexed": true,
                  "name": "_claimer",
                  "nodeType": "VariableDeclaration",
                  "scope": 12124,
                  "src": "1914:24:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12117,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1914:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12120,
                  "indexed": false,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12124,
                  "src": "1940:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12119,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1940:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12122,
                  "indexed": false,
                  "name": "_claimedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12124,
                  "src": "1964:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12121,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1964:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1913:74:31"
            },
            "src": "1885:103:31"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12132,
            "name": "EtherDividendClaimFailed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12126,
                  "indexed": true,
                  "name": "_payee",
                  "nodeType": "VariableDeclaration",
                  "scope": 12132,
                  "src": "2024:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12125,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2024:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12128,
                  "indexed": false,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12132,
                  "src": "2048:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12127,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2048:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12130,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12132,
                  "src": "2072:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2072:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2023:65:31"
            },
            "src": "1993:96:31"
          },
          {
            "body": {
              "id": 12174,
              "nodeType": "Block",
              "src": "2147:383:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12137,
                          "name": "_dividendIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12134,
                          "src": "2165:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12138,
                            "name": "dividends",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12090,
                            "src": "2182:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                            }
                          },
                          "id": 12139,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2182:16:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2165:33:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e636f7272656374206469766964656e6420696e646578",
                        "id": 12141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2200:26:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_493598b4f85c7110e712482cd4f4c764fe64a77e153f7dd336580d7956ede6a0",
                          "typeString": "literal_string \"Incorrect dividend index\""
                        },
                        "value": "Incorrect dividend index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_493598b4f85c7110e712482cd4f4c764fe64a77e153f7dd336580d7956ede6a0",
                          "typeString": "literal_string \"Incorrect dividend index\""
                        }
                      ],
                      "id": 12136,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2157:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2157:70:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12143,
                  "nodeType": "ExpressionStatement",
                  "src": "2157:70:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12145,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "2245:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12146,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "2252:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12148,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12147,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12134,
                              "src": "2262:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2252:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12149,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maturity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12072,
                          "src": "2252:34:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2245:41:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e64206d6174757269747920697320696e2074686520667574757265",
                        "id": 12151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2288:36:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_63322e13adabbf379a54e39e04fa0c750bb517eee0b29cbcd78f4f7e2625966b",
                          "typeString": "literal_string \"Dividend maturity is in the future\""
                        },
                        "value": "Dividend maturity is in the future"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_63322e13adabbf379a54e39e04fa0c750bb517eee0b29cbcd78f4f7e2625966b",
                          "typeString": "literal_string \"Dividend maturity is in the future\""
                        }
                      ],
                      "id": 12144,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2237:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2237:88:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12153,
                  "nodeType": "ExpressionStatement",
                  "src": "2237:88:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12155,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "2343:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12156,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "2349:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12158,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12157,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12134,
                              "src": "2359:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2349:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12159,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expiry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12074,
                          "src": "2349:32:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2343:38:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e642065787069727920697320696e207468652070617374",
                        "id": 12161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2383:32:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3a8d6d593aece756e87679a0e9860056caa9290c209985c444a5dfcedcbfb212",
                          "typeString": "literal_string \"Dividend expiry is in the past\""
                        },
                        "value": "Dividend expiry is in the past"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3a8d6d593aece756e87679a0e9860056caa9290c209985c444a5dfcedcbfb212",
                          "typeString": "literal_string \"Dividend expiry is in the past\""
                        }
                      ],
                      "id": 12154,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2335:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2335:81:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12163,
                  "nodeType": "ExpressionStatement",
                  "src": "2335:81:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2434:36:31",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12165,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "2435:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12167,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12166,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12134,
                              "src": "2445:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2435:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12168,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reclaimed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12082,
                          "src": "2435:35:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e6420686173206265656e207265636c61696d656420627920697373756572",
                        "id": 12170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2472:39:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b568a7d8822e7fc758f05cb1eab8f71b5fd4d1887ac3d7f57de02dd397af7d10",
                          "typeString": "literal_string \"Dividend has been reclaimed by issuer\""
                        },
                        "value": "Dividend has been reclaimed by issuer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b568a7d8822e7fc758f05cb1eab8f71b5fd4d1887ac3d7f57de02dd397af7d10",
                          "typeString": "literal_string \"Dividend has been reclaimed by issuer\""
                        }
                      ],
                      "id": 12164,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2426:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2426:86:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12172,
                  "nodeType": "ExpressionStatement",
                  "src": "2426:86:31"
                },
                {
                  "id": 12173,
                  "nodeType": "PlaceholderStatement",
                  "src": "2522:1:31"
                }
              ]
            },
            "documentation": null,
            "id": 12175,
            "name": "validDividendIndex",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 12135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12134,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12175,
                  "src": "2123:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2123:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2122:24:31"
            },
            "src": "2095:435:31",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12186,
              "nodeType": "Block",
              "src": "2802:7:31",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 12187,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12182,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12177,
                    "src": "2768:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 12183,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12179,
                    "src": "2784:12:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 12184,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12181,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "2760:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2760:37:31"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12177,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 12187,
                  "src": "2703:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12176,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2703:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12179,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 12187,
                  "src": "2727:20:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12178,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2727:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2702:46:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12185,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2802:0:31"
            },
            "scope": 12806,
            "src": "2690:119:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12196,
              "nodeType": "Block",
              "src": "3008:33:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3032:1:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 12192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3025:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 12194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3025:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 12191,
                  "id": 12195,
                  "nodeType": "Return",
                  "src": "3018:16:31"
                }
              ]
            },
            "documentation": "@notice Init function i.e generalise function to maintain the structure of the module contract\n@return bytes4",
            "id": 12197,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2976:2:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12190,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12197,
                  "src": "3000:6:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 12189,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3000:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2999:8:31"
            },
            "scope": 12806,
            "src": "2952:89:31",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12275,
              "nodeType": "Block",
              "src": "3371:683:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12207,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12201,
                          "src": "3389:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12208,
                          "name": "_maturity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12199,
                          "src": "3399:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3389:19:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12206,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "3381:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3381:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12211,
                  "nodeType": "ExpressionStatement",
                  "src": "3381:28:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12213,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12201,
                          "src": "3427:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12214,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "3437:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3427:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12212,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "3419:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3419:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12217,
                  "nodeType": "ExpressionStatement",
                  "src": "3419:22:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12219,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23131,
                            "src": "3459:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 12220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3459:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3471:1:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3459:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12218,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "3451:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3451:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12224,
                  "nodeType": "ExpressionStatement",
                  "src": "3451:22:31"
                },
                {
                  "assignments": [
                    12226
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12226,
                      "name": "dividendIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 12276,
                      "src": "3483:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12225,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3483:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12229,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 12227,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "3507:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12228,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3507:16:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3483:40:31"
                },
                {
                  "assignments": [
                    12231
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12231,
                      "name": "checkpointId",
                      "nodeType": "VariableDeclaration",
                      "scope": 12276,
                      "src": "3533:20:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12230,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3533:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12237,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12233,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "3571:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12232,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "3556:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3556:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createCheckpoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10153,
                      "src": "3556:46:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                        "typeString": "function () external returns (uint256)"
                      }
                    },
                    "id": 12236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3556:48:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3533:71:31"
                },
                {
                  "assignments": [
                    12239
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12239,
                      "name": "currentSupply",
                      "nodeType": "VariableDeclaration",
                      "scope": 12276,
                      "src": "3614:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12238,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3614:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12245,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12241,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "3653:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12240,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "3638:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3638:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12243,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22687,
                      "src": "3638:41:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 12244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3638:43:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3614:67:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12250,
                            "name": "checkpointId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12231,
                            "src": "3739:12:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12251,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23133,
                            "src": "3765:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12252,
                            "name": "_maturity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12199,
                            "src": "3782:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12253,
                            "name": "_expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12201,
                            "src": "3805:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12254,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "3826:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3826:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3849:1:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "id": 12257,
                            "name": "currentSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12239,
                            "src": "3864:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 12258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3891:5:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 12249,
                          "name": "Dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12087,
                          "src": "3717:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Dividend_$12087_storage_ptr_$",
                            "typeString": "type(struct EtherDividendCheckpoint.Dividend storage pointer)"
                          }
                        },
                        "id": 12259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3717:191:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_memory",
                          "typeString": "struct EtherDividendCheckpoint.Dividend memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Dividend_$12087_memory",
                          "typeString": "struct EtherDividendCheckpoint.Dividend memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12246,
                        "name": "dividends",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12090,
                        "src": "3691:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                        }
                      },
                      "id": 12248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3691:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Dividend_$12087_storage_$returns$_t_uint256_$",
                        "typeString": "function (struct EtherDividendCheckpoint.Dividend storage ref) returns (uint256)"
                      }
                    },
                    "id": 12260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3691:227:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12261,
                  "nodeType": "ExpressionStatement",
                  "src": "3691:227:31"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12263,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "3956:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12264,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3956:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12265,
                        "name": "checkpointId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12231,
                        "src": "3968:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12266,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "3982:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12267,
                        "name": "_maturity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12199,
                        "src": "3987:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12268,
                        "name": "_expiry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12201,
                        "src": "3998:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12269,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "4007:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4007:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12271,
                        "name": "currentSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12239,
                        "src": "4018:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12272,
                        "name": "dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12226,
                        "src": "4033:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12262,
                      "name": "EtherDividendDeposited",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12108,
                      "src": "3933:22:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 12273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3933:114:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12274,
                  "nodeType": "EmitStatement",
                  "src": "3928:119:31"
                }
              ]
            },
            "documentation": "@notice Creates a dividend and checkpoint for the dividend\n@param _maturity Time from which dividend can be paid\n@param _expiry Time until dividend can no longer be paid, and can be reclaimed by issuer",
            "id": 12276,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 12204,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12203,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9653,
                  "src": "3361:9:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3361:9:31"
              }
            ],
            "name": "createDividend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12199,
                  "name": "_maturity",
                  "nodeType": "VariableDeclaration",
                  "scope": 12276,
                  "src": "3310:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12198,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3310:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12201,
                  "name": "_expiry",
                  "nodeType": "VariableDeclaration",
                  "scope": 12276,
                  "src": "3329:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12200,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3329:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3309:36:31"
            },
            "payable": true,
            "returnParameters": {
              "id": 12205,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3371:0:31"
            },
            "scope": 12806,
            "src": "3286:768:31",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12359,
              "nodeType": "Block",
              "src": "4494:706:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12290,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12288,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12280,
                          "src": "4512:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12289,
                          "name": "_maturity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12278,
                          "src": "4522:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4512:19:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "4504:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4504:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12292,
                  "nodeType": "ExpressionStatement",
                  "src": "4504:28:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12294,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12280,
                          "src": "4550:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12295,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "4560:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4550:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12293,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "4542:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4542:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12298,
                  "nodeType": "ExpressionStatement",
                  "src": "4542:22:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12300,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23131,
                            "src": "4582:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 12301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4582:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4594:1:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4582:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12299,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "4574:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4574:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12305,
                  "nodeType": "ExpressionStatement",
                  "src": "4574:22:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12307,
                          "name": "_checkpointId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12282,
                          "src": "4614:13:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12309,
                                  "name": "securityToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9561,
                                  "src": "4646:13:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12308,
                                "name": "ISecurityToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10159,
                                "src": "4631:14:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                  "typeString": "type(contract ISecurityToken)"
                                }
                              },
                              "id": 12310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4631:29:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                "typeString": "contract ISecurityToken"
                              }
                            },
                            "id": 12311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentCheckpointId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10094,
                            "src": "4631:49:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 12312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4631:51:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4614:68:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12306,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "4606:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4606:77:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12315,
                  "nodeType": "ExpressionStatement",
                  "src": "4606:77:31"
                },
                {
                  "assignments": [
                    12317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12317,
                      "name": "dividendIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 12360,
                      "src": "4693:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12316,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4693:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12320,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 12318,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "4717:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12319,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4717:16:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4693:40:31"
                },
                {
                  "assignments": [
                    12322
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12322,
                      "name": "currentSupply",
                      "nodeType": "VariableDeclaration",
                      "scope": 12360,
                      "src": "4743:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12321,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4743:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12329,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12327,
                        "name": "_checkpointId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12282,
                        "src": "4811:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12324,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "4782:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12323,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "4767:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4767:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupplyAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10139,
                      "src": "4767:43:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 12328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4767:58:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4743:82:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12334,
                            "name": "_checkpointId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12282,
                            "src": "4883:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12335,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23133,
                            "src": "4910:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12336,
                            "name": "_maturity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "4927:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12337,
                            "name": "_expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12280,
                            "src": "4950:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12338,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "4971:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4971:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4994:1:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "id": 12341,
                            "name": "currentSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12322,
                            "src": "5009:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 12342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5036:5:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 12333,
                          "name": "Dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12087,
                          "src": "4861:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Dividend_$12087_storage_ptr_$",
                            "typeString": "type(struct EtherDividendCheckpoint.Dividend storage pointer)"
                          }
                        },
                        "id": 12343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4861:192:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_memory",
                          "typeString": "struct EtherDividendCheckpoint.Dividend memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Dividend_$12087_memory",
                          "typeString": "struct EtherDividendCheckpoint.Dividend memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12330,
                        "name": "dividends",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12090,
                        "src": "4835:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                        }
                      },
                      "id": 12332,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4835:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Dividend_$12087_storage_$returns$_t_uint256_$",
                        "typeString": "function (struct EtherDividendCheckpoint.Dividend storage ref) returns (uint256)"
                      }
                    },
                    "id": 12344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4835:228:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12345,
                  "nodeType": "ExpressionStatement",
                  "src": "4835:228:31"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12347,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "5101:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5101:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12349,
                        "name": "_checkpointId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12282,
                        "src": "5113:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12350,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "5128:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12351,
                        "name": "_maturity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12278,
                        "src": "5133:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12352,
                        "name": "_expiry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12280,
                        "src": "5144:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12353,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "5153:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5153:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12355,
                        "name": "currentSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12322,
                        "src": "5164:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12356,
                        "name": "dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12317,
                        "src": "5179:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12346,
                      "name": "EtherDividendDeposited",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12108,
                      "src": "5078:22:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 12357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5078:115:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12358,
                  "nodeType": "EmitStatement",
                  "src": "5073:120:31"
                }
              ]
            },
            "documentation": "@notice Creates a dividend with a provided checkpoint\n@param _maturity Time from which dividend can be paid\n@param _expiry Time until dividend can no longer be paid, and can be reclaimed by issuer\n@param _checkpointId Id of the checkpoint from which to issue dividend",
            "id": 12360,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 12285,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12284,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9653,
                  "src": "4484:9:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4484:9:31"
              }
            ],
            "name": "createDividendWithCheckpoint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12278,
                  "name": "_maturity",
                  "nodeType": "VariableDeclaration",
                  "scope": 12360,
                  "src": "4410:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12277,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4410:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12280,
                  "name": "_expiry",
                  "nodeType": "VariableDeclaration",
                  "scope": 12360,
                  "src": "4429:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12279,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4429:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12282,
                  "name": "_checkpointId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12360,
                  "src": "4446:21:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12281,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4446:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4409:59:31"
            },
            "payable": true,
            "returnParameters": {
              "id": 12286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4494:0:31"
            },
            "scope": 12806,
            "src": "4372:828:31",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12410,
              "nodeType": "Block",
              "src": "5539:266:31",
              "statements": [
                {
                  "assignments": [
                    12375
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12375,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12411,
                      "src": "5549:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12374,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "5549:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12379,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12376,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "5577:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12378,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12377,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12362,
                      "src": "5587:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5577:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5549:53:31"
                },
                {
                  "body": {
                    "id": 12408,
                    "nodeType": "Block",
                    "src": "5657:142:31",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5675:29:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12391,
                                "name": "dividend",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12375,
                                "src": "5676:8:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                  "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                }
                              },
                              "id": 12392,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "claimed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12086,
                              "src": "5676:16:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 12396,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12393,
                                "name": "_payees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12365,
                                "src": "5693:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 12395,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12394,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12381,
                                "src": "5701:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5693:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5676:28:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12407,
                        "nodeType": "IfStatement",
                        "src": "5671:118:31",
                        "trueBody": {
                          "id": 12406,
                          "nodeType": "Block",
                          "src": "5706:83:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 12399,
                                      "name": "_payees",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12365,
                                      "src": "5737:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 12401,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12400,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12381,
                                      "src": "5745:1:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5737:10:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12402,
                                    "name": "dividend",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12375,
                                    "src": "5749:8:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                      "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12403,
                                    "name": "_dividendIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12362,
                                    "src": "5759:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                      "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12398,
                                  "name": "_payDividend",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12581,
                                  "src": "5724:12:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Dividend_$12087_storage_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,struct EtherDividendCheckpoint.Dividend storage pointer,uint256)"
                                  }
                                },
                                "id": 12404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5724:50:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12405,
                              "nodeType": "ExpressionStatement",
                              "src": "5724:50:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12384,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12381,
                      "src": "5632:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12385,
                        "name": "_payees",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12365,
                        "src": "5636:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 12386,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5636:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5632:18:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12409,
                  "initializationExpression": {
                    "assignments": [
                      12381
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12381,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12411,
                        "src": "5617:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12380,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5617:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12383,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12382,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5629:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5617:13:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12389,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5652:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12388,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12381,
                        "src": "5652:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12390,
                    "nodeType": "ExpressionStatement",
                    "src": "5652:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "5612:187:31"
                }
              ]
            },
            "documentation": "@notice Issuer can push dividends to provided addresses\n@param _dividendIndex Dividend to push\n@param _payees Addresses to which to push the dividend",
            "id": 12411,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12368,
                    "name": "DISTRIBUTE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12066,
                    "src": "5492:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 12369,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12367,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5483:8:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5483:20:31"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12371,
                    "name": "_dividendIndex",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12362,
                    "src": "5523:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 12372,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12370,
                  "name": "validDividendIndex",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12175,
                  "src": "5504:18:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5504:34:31"
              }
            ],
            "name": "pushDividendPaymentToAddresses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12362,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12411,
                  "src": "5433:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5433:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12365,
                  "name": "_payees",
                  "nodeType": "VariableDeclaration",
                  "scope": 12411,
                  "src": "5457:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 12363,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5457:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 12364,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5457:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5432:43:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12373,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5539:0:31"
            },
            "scope": 12806,
            "src": "5393:412:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12481,
              "nodeType": "Block",
              "src": "6263:458:31",
              "statements": [
                {
                  "assignments": [
                    12427
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12427,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12482,
                      "src": "6273:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12426,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "6273:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12431,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12428,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "6301:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12430,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12429,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12413,
                      "src": "6311:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6301:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6273:53:31"
                },
                {
                  "assignments": [
                    12433
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12433,
                      "name": "numberInvestors",
                      "nodeType": "VariableDeclaration",
                      "scope": 12482,
                      "src": "6336:23:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12432,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6336:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12439,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12435,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "6377:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12434,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "6362:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6362:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getInvestorsLength",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10158,
                      "src": "6362:48:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 12438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6362:50:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6336:76:31"
                },
                {
                  "body": {
                    "id": 12479,
                    "nodeType": "Block",
                    "src": "6511:204:31",
                    "statements": [
                      {
                        "assignments": [
                          12458
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12458,
                            "name": "payee",
                            "nodeType": "VariableDeclaration",
                            "scope": 12482,
                            "src": "6525:13:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12457,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6525:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12465,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12463,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12441,
                              "src": "6581:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12460,
                                  "name": "securityToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9561,
                                  "src": "6556:13:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12459,
                                "name": "ISecurityToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10159,
                                "src": "6541:14:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                  "typeString": "type(contract ISecurityToken)"
                                }
                              },
                              "id": 12461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6541:29:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                "typeString": "contract ISecurityToken"
                              }
                            },
                            "id": 12462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "investors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10099,
                            "src": "6541:39:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view external returns (address)"
                            }
                          },
                          "id": 12464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6541:42:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6525:58:31"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6601:24:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12466,
                                "name": "dividend",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12427,
                                "src": "6602:8:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                  "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                }
                              },
                              "id": 12467,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "claimed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12086,
                              "src": "6602:16:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 12469,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12468,
                              "name": "payee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12458,
                              "src": "6619:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6602:23:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12478,
                        "nodeType": "IfStatement",
                        "src": "6597:108:31",
                        "trueBody": {
                          "id": 12477,
                          "nodeType": "Block",
                          "src": "6627:78:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12472,
                                    "name": "payee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12458,
                                    "src": "6658:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12473,
                                    "name": "dividend",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12427,
                                    "src": "6665:8:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                      "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12474,
                                    "name": "_dividendIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12413,
                                    "src": "6675:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                      "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12471,
                                  "name": "_payDividend",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12581,
                                  "src": "6645:12:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Dividend_$12087_storage_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,struct EtherDividendCheckpoint.Dividend storage pointer,uint256)"
                                  }
                                },
                                "id": 12475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6645:45:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12476,
                              "nodeType": "ExpressionStatement",
                              "src": "6645:45:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12444,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12441,
                      "src": "6447:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12447,
                          "name": "numberInvestors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12433,
                          "src": "6463:15:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12450,
                              "name": "_iterations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12417,
                              "src": "6491:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12448,
                              "name": "_start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12415,
                              "src": "6480:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 12449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22577,
                            "src": "6480:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 12451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6480:23:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12445,
                          "name": "Math",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22484,
                          "src": "6451:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Math_$22484_$",
                            "typeString": "type(library Math)"
                          }
                        },
                        "id": 12446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "min256",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22483,
                        "src": "6451:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 12452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6451:53:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6447:57:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12480,
                  "initializationExpression": {
                    "assignments": [
                      12441
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12441,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12482,
                        "src": "6427:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6427:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12443,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 12442,
                      "name": "_start",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12415,
                      "src": "6439:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6427:18:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6506:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12454,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12441,
                        "src": "6506:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12456,
                    "nodeType": "ExpressionStatement",
                    "src": "6506:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "6422:293:31"
                }
              ]
            },
            "documentation": "@notice Issuer can push dividends using the investor list from the security token\n@param _dividendIndex Dividend to push\n@param _start Index in investor list at which to start pushing dividends\n@param _iterations Number of addresses to push dividends for",
            "id": 12482,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12420,
                    "name": "DISTRIBUTE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12066,
                    "src": "6216:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 12421,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12419,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "6207:8:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6207:20:31"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12423,
                    "name": "_dividendIndex",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12413,
                    "src": "6247:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 12424,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12422,
                  "name": "validDividendIndex",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12175,
                  "src": "6228:18:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6228:34:31"
              }
            ],
            "name": "pushDividendPayment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12418,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12413,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12482,
                  "src": "6139:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12412,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6139:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12415,
                  "name": "_start",
                  "nodeType": "VariableDeclaration",
                  "scope": 12482,
                  "src": "6163:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12414,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6163:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12417,
                  "name": "_iterations",
                  "nodeType": "VariableDeclaration",
                  "scope": 12482,
                  "src": "6179:19:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6179:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6138:61:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12425,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6263:0:31"
            },
            "scope": 12806,
            "src": "6110:611:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12513,
              "nodeType": "Block",
              "src": "6942:208:31",
              "statements": [
                {
                  "assignments": [
                    12491
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12491,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12514,
                      "src": "6952:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12490,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "6952:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12495,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12492,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "6980:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12494,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12493,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12484,
                      "src": "6990:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6980:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6952:53:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "7023:29:31",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12497,
                              "name": "dividend",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12491,
                              "src": "7024:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                              }
                            },
                            "id": 12498,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12086,
                            "src": "7024:16:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 12501,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12499,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "7041:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7041:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7024:28:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e6420616c7265616479207265636c61696d6564",
                        "id": 12503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7054:28:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1714a10a81f7397348bdfa274c2f8a2730e99ed44f16c5ab4a0ced56e1a7a11c",
                          "typeString": "literal_string \"Dividend already reclaimed\""
                        },
                        "value": "Dividend already reclaimed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1714a10a81f7397348bdfa274c2f8a2730e99ed44f16c5ab4a0ced56e1a7a11c",
                          "typeString": "literal_string \"Dividend already reclaimed\""
                        }
                      ],
                      "id": 12496,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "7015:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7015:68:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12505,
                  "nodeType": "ExpressionStatement",
                  "src": "7015:68:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12507,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "7106:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7106:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12509,
                        "name": "dividend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12491,
                        "src": "7118:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12510,
                        "name": "_dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12484,
                        "src": "7128:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12506,
                      "name": "_payDividend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12581,
                      "src": "7093:12:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Dividend_$12087_storage_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (address,struct EtherDividendCheckpoint.Dividend storage pointer,uint256)"
                      }
                    },
                    "id": 12511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7093:50:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12512,
                  "nodeType": "ExpressionStatement",
                  "src": "7093:50:31"
                }
              ]
            },
            "documentation": "@notice Investors can pull their own dividends\n@param _dividendIndex Dividend to pull",
            "id": 12514,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12487,
                    "name": "_dividendIndex",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12484,
                    "src": "6922:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 12488,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12486,
                  "name": "validDividendIndex",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12175,
                  "src": "6903:18:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6903:34:31"
              }
            ],
            "name": "pullDividendPayment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12485,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12484,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12514,
                  "src": "6872:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12483,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6872:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6871:24:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12489,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6942:0:31"
            },
            "scope": 12806,
            "src": "6843:307:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12580,
              "nodeType": "Block",
              "src": "7476:491:31",
              "statements": [
                {
                  "assignments": [
                    12524
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12524,
                      "name": "claim",
                      "nodeType": "VariableDeclaration",
                      "scope": 12581,
                      "src": "7486:13:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12523,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7486:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12529,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12526,
                        "name": "_dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12520,
                        "src": "7520:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12527,
                        "name": "_payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12516,
                        "src": "7536:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12525,
                      "name": "calculateDividend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12697,
                      "src": "7502:17:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address) view returns (uint256)"
                      }
                    },
                    "id": 12528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7502:41:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7486:57:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12530,
                          "name": "_dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12518,
                          "src": "7553:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12533,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "claimed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12086,
                        "src": "7553:17:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 12534,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12532,
                        "name": "_payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12516,
                        "src": "7571:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7553:25:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 12535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7581:4:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "7553:32:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12537,
                  "nodeType": "ExpressionStatement",
                  "src": "7553:32:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12538,
                        "name": "_dividend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12518,
                        "src": "7595:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        }
                      },
                      "id": 12540,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "claimedAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12078,
                      "src": "7595:23:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12543,
                            "name": "_dividend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12518,
                            "src": "7631:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                            }
                          },
                          "id": 12544,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "claimedAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12078,
                          "src": "7631:23:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12541,
                          "name": "claim",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12524,
                          "src": "7621:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "7621:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 12545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7621:34:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7595:60:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12547,
                  "nodeType": "ExpressionStatement",
                  "src": "7595:60:31"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12548,
                      "name": "claim",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12524,
                      "src": "7669:5:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7677:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7669:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12579,
                  "nodeType": "IfStatement",
                  "src": "7665:296:31",
                  "trueBody": {
                    "id": 12578,
                    "nodeType": "Block",
                    "src": "7680:281:31",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12553,
                              "name": "claim",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12524,
                              "src": "7710:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12551,
                              "name": "_payee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12516,
                              "src": "7698:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 12552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "send",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7698:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) returns (bool)"
                            }
                          },
                          "id": 12554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7698:18:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12576,
                          "nodeType": "Block",
                          "src": "7811:140:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12562,
                                      "name": "_dividend",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12518,
                                      "src": "7827:9:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                        "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                      }
                                    },
                                    "id": 12565,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "claimed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12086,
                                    "src": "7827:17:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 12566,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 12564,
                                    "name": "_payee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12516,
                                    "src": "7845:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7827:25:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 12567,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7855:5:31",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "7827:33:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 12569,
                              "nodeType": "ExpressionStatement",
                              "src": "7827:33:31"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12571,
                                    "name": "_payee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12516,
                                    "src": "7906:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12572,
                                    "name": "_dividendIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12520,
                                    "src": "7914:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12573,
                                    "name": "claim",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12524,
                                    "src": "7930:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12570,
                                  "name": "EtherDividendClaimFailed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12132,
                                  "src": "7881:24:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 12574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7881:55:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12575,
                              "nodeType": "EmitStatement",
                              "src": "7876:60:31"
                            }
                          ]
                        },
                        "id": 12577,
                        "nodeType": "IfStatement",
                        "src": "7694:257:31",
                        "trueBody": {
                          "id": 12561,
                          "nodeType": "Block",
                          "src": "7718:87:31",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12556,
                                    "name": "_payee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12516,
                                    "src": "7760:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12557,
                                    "name": "_dividendIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12520,
                                    "src": "7768:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12558,
                                    "name": "claim",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12524,
                                    "src": "7784:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12555,
                                  "name": "EtherDividendClaimed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12116,
                                  "src": "7739:20:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 12559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7739:51:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12560,
                              "nodeType": "EmitStatement",
                              "src": "7734:56:31"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Internal function for paying dividends\n@param _payee address of investor\n@param _dividend storage with previously issued dividends\n@param _dividendIndex Dividend to pay",
            "id": 12581,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_payDividend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12516,
                  "name": "_payee",
                  "nodeType": "VariableDeclaration",
                  "scope": 12581,
                  "src": "7399:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12515,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7399:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12518,
                  "name": "_dividend",
                  "nodeType": "VariableDeclaration",
                  "scope": 12581,
                  "src": "7415:26:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                    "typeString": "struct EtherDividendCheckpoint.Dividend"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12517,
                    "name": "Dividend",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12087,
                    "src": "7415:8:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                      "typeString": "struct EtherDividendCheckpoint.Dividend"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12520,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12581,
                  "src": "7443:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7443:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7398:68:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7476:0:31"
            },
            "scope": 12806,
            "src": "7377:590:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12651,
              "nodeType": "Block",
              "src": "8198:569:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12589,
                          "name": "_dividendIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12583,
                          "src": "8216:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12590,
                            "name": "dividends",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12090,
                            "src": "8233:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                            }
                          },
                          "id": 12591,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8233:16:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8216:33:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e636f7272656374206469766964656e6420696e646578",
                        "id": 12593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8251:26:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_493598b4f85c7110e712482cd4f4c764fe64a77e153f7dd336580d7956ede6a0",
                          "typeString": "literal_string \"Incorrect dividend index\""
                        },
                        "value": "Incorrect dividend index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_493598b4f85c7110e712482cd4f4c764fe64a77e153f7dd336580d7956ede6a0",
                          "typeString": "literal_string \"Incorrect dividend index\""
                        }
                      ],
                      "id": 12588,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "8208:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8208:70:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12595,
                  "nodeType": "ExpressionStatement",
                  "src": "8208:70:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12597,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "8296:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12598,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "8303:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12600,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12599,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12583,
                              "src": "8313:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8303:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12601,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expiry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12074,
                          "src": "8303:32:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8296:39:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e642065787069727920697320696e2074686520667574757265",
                        "id": 12603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8337:34:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3423a6d303ded18ed64e52bcfb7c965bd745fc80ec022cd69f4a83e2bb0eded7",
                          "typeString": "literal_string \"Dividend expiry is in the future\""
                        },
                        "value": "Dividend expiry is in the future"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3423a6d303ded18ed64e52bcfb7c965bd745fc80ec022cd69f4a83e2bb0eded7",
                          "typeString": "literal_string \"Dividend expiry is in the future\""
                        }
                      ],
                      "id": 12596,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "8288:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8288:84:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12605,
                  "nodeType": "ExpressionStatement",
                  "src": "8288:84:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12611,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "8390:36:31",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12607,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "8391:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12609,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12608,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12583,
                              "src": "8401:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8391:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12610,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reclaimed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12082,
                          "src": "8391:35:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e6420616c726561647920636c61696d6564",
                        "id": 12612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8428:26:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_34d8bfb8ea936959b19e40666b5fd8804718711629a5666d78472ed2589ed75b",
                          "typeString": "literal_string \"Dividend already claimed\""
                        },
                        "value": "Dividend already claimed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_34d8bfb8ea936959b19e40666b5fd8804718711629a5666d78472ed2589ed75b",
                          "typeString": "literal_string \"Dividend already claimed\""
                        }
                      ],
                      "id": 12606,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "8382:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8382:73:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12614,
                  "nodeType": "ExpressionStatement",
                  "src": "8382:73:31"
                },
                {
                  "assignments": [
                    12616
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12616,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12652,
                      "src": "8465:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12615,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "8465:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12620,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12617,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "8493:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12619,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12618,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12583,
                      "src": "8503:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8493:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8465:53:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12621,
                        "name": "dividend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12616,
                        "src": "8528:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        }
                      },
                      "id": 12623,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "reclaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12082,
                      "src": "8528:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 12624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8549:4:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8528:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12626,
                  "nodeType": "ExpressionStatement",
                  "src": "8528:25:31"
                },
                {
                  "assignments": [
                    12628
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12628,
                      "name": "remainingAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 12652,
                      "src": "8563:23:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12627,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8563:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12635,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12632,
                          "name": "dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12616,
                          "src": "8609:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12633,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "claimedAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12078,
                        "src": "8609:22:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12629,
                          "name": "dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12616,
                          "src": "8589:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12630,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12076,
                        "src": "8589:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 12631,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22553,
                      "src": "8589:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 12634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8589:43:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8563:69:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12641,
                        "name": "remainingAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12628,
                        "src": "8662:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12636,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "8642:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8642:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 12640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8642:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 12642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8642:36:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12643,
                  "nodeType": "ExpressionStatement",
                  "src": "8642:36:31"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12645,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "8716:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12646,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8716:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12647,
                        "name": "_dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12583,
                        "src": "8728:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12648,
                        "name": "remainingAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12628,
                        "src": "8744:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12644,
                      "name": "EtherDividendReclaimed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12124,
                      "src": "8693:22:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 12649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8693:67:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12650,
                  "nodeType": "EmitStatement",
                  "src": "8688:72:31"
                }
              ]
            },
            "documentation": "@notice Issuer can reclaim remaining unclaimed dividend amounts, for expired dividends\n@param _dividendIndex Dividend to reclaim",
            "id": 12652,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 12586,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12585,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9653,
                  "src": "8188:9:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8188:9:31"
              }
            ],
            "name": "reclaimDividend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12583,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12652,
                  "src": "8157:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12582,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8157:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8156:24:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8198:0:31"
            },
            "scope": 12806,
            "src": "8132:635:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12696,
              "nodeType": "Block",
              "src": "9061:313:31",
              "statements": [
                {
                  "assignments": [
                    12662
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12662,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12697,
                      "src": "9071:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12661,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "9071:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12666,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12663,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "9099:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12665,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12664,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12654,
                      "src": "9109:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9099:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9071:53:31"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12667,
                        "name": "dividend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12662,
                        "src": "9138:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        }
                      },
                      "id": 12668,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12086,
                      "src": "9138:16:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 12670,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12669,
                      "name": "_payee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12656,
                      "src": "9155:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9138:24:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12674,
                  "nodeType": "IfStatement",
                  "src": "9134:63:31",
                  "trueBody": {
                    "id": 12673,
                    "nodeType": "Block",
                    "src": "9164:33:31",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9185:1:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 12660,
                        "id": 12672,
                        "nodeType": "Return",
                        "src": "9178:8:31"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12676
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12676,
                      "name": "balance",
                      "nodeType": "VariableDeclaration",
                      "scope": 12697,
                      "src": "9206:15:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12675,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9206:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12685,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12681,
                        "name": "_payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12656,
                        "src": "9266:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12682,
                          "name": "dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12662,
                          "src": "9274:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12683,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "checkpointId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12068,
                        "src": "9274:21:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12678,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "9239:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12677,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "9224:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9224:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12680,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOfAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10148,
                      "src": "9224:41:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 12684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9224:72:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9206:90:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12692,
                          "name": "dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12662,
                          "src": "9346:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12693,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalSupply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12080,
                        "src": "9346:20:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12688,
                              "name": "dividend",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12662,
                              "src": "9325:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                              }
                            },
                            "id": 12689,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12076,
                            "src": "9325:15:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 12686,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12676,
                            "src": "9313:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22519,
                          "src": "9313:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 12690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9313:28:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 12691,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22533,
                      "src": "9313:32:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 12694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9313:54:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12660,
                  "id": 12695,
                  "nodeType": "Return",
                  "src": "9306:61:31"
                }
              ]
            },
            "documentation": "@notice Calculate amount of dividends claimable\n@param _dividendIndex Dividend to calculate\n@param _payee Affected investor address\n@return unit256",
            "id": 12697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "calculateDividend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12657,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12654,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12697,
                  "src": "8992:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8992:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12656,
                  "name": "_payee",
                  "nodeType": "VariableDeclaration",
                  "scope": 12697,
                  "src": "9016:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9016:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8991:40:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12659,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12697,
                  "src": "9052:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9052:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9051:9:31"
            },
            "scope": 12806,
            "src": "8965:409:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12779,
              "nodeType": "Block",
              "src": "9610:502:31",
              "statements": [
                {
                  "assignments": [
                    12706
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12706,
                      "name": "counter",
                      "nodeType": "VariableDeclaration",
                      "scope": 12780,
                      "src": "9620:15:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12705,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9620:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12708,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 12707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9638:1:31",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9620:19:31"
                },
                {
                  "body": {
                    "id": 12731,
                    "nodeType": "Block",
                    "src": "9695:114:31",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12720,
                                "name": "dividends",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12090,
                                "src": "9713:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                  "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                                }
                              },
                              "id": 12722,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12721,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12710,
                                "src": "9723:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9713:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                              }
                            },
                            "id": 12723,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "checkpointId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12068,
                            "src": "9713:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12724,
                            "name": "_checkpointId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12699,
                            "src": "9742:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9713:42:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12730,
                        "nodeType": "IfStatement",
                        "src": "9709:90:31",
                        "trueBody": {
                          "id": 12729,
                          "nodeType": "Block",
                          "src": "9757:42:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "9775:9:31",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 12726,
                                  "name": "counter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12706,
                                  "src": "9775:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12728,
                              "nodeType": "ExpressionStatement",
                              "src": "9775:9:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12713,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12710,
                      "src": "9668:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12714,
                        "name": "dividends",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12090,
                        "src": "9672:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                        }
                      },
                      "id": 12715,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9672:16:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9668:20:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12732,
                  "initializationExpression": {
                    "assignments": [
                      12710
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12710,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12780,
                        "src": "9653:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9653:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12712,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9665:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9653:13:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9690:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12717,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12710,
                        "src": "9690:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12719,
                    "nodeType": "ExpressionStatement",
                    "src": "9690:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "9649:160:31"
                },
                {
                  "assignments": [
                    12736
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12736,
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "scope": 12780,
                      "src": "9818:22:31",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 12734,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9818:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12735,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9818:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12742,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12740,
                        "name": "counter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12706,
                        "src": "9857:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "9843:13:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 12737,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9847:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12738,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9847:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 12741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9843:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9818:47:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12745,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12743,
                      "name": "counter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12706,
                      "src": "9874:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9884:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9874:11:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12746,
                  "nodeType": "ExpressionStatement",
                  "src": "9874:11:31"
                },
                {
                  "body": {
                    "id": 12775,
                    "nodeType": "Block",
                    "src": "9940:145:31",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12758,
                                "name": "dividends",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12090,
                                "src": "9957:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                  "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                                }
                              },
                              "id": 12760,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12759,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12748,
                                "src": "9967:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9957:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                              }
                            },
                            "id": 12761,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "checkpointId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12068,
                            "src": "9957:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12762,
                            "name": "_checkpointId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12699,
                            "src": "9986:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9957:42:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12774,
                        "nodeType": "IfStatement",
                        "src": "9953:123:31",
                        "trueBody": {
                          "id": 12773,
                          "nodeType": "Block",
                          "src": "10001:75:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 12764,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12736,
                                    "src": "10018:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 12766,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 12765,
                                    "name": "counter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12706,
                                    "src": "10024:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10018:14:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 12767,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12748,
                                  "src": "10035:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10018:18:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12769,
                              "nodeType": "ExpressionStatement",
                              "src": "10018:18:31"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "10053:9:31",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 12770,
                                  "name": "counter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12706,
                                  "src": "10053:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12772,
                              "nodeType": "ExpressionStatement",
                              "src": "10053:9:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12751,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12748,
                      "src": "9913:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12752,
                        "name": "dividends",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12090,
                        "src": "9917:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                        }
                      },
                      "id": 12753,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9917:16:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9913:20:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12776,
                  "initializationExpression": {
                    "assignments": [
                      12748
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12748,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 12780,
                        "src": "9898:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12747,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9898:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12750,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9910:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9898:13:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12756,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9935:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12755,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12748,
                        "src": "9935:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12757,
                    "nodeType": "ExpressionStatement",
                    "src": "9935:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "9894:191:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12777,
                    "name": "index",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12736,
                    "src": "10100:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 12704,
                  "id": 12778,
                  "nodeType": "Return",
                  "src": "10093:12:31"
                }
              ]
            },
            "documentation": "@notice Get the index according to the checkpoint id\n@param _checkpointId Checkpoint id to query\n@return uint256",
            "id": 12780,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getDividendIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12699,
                  "name": "_checkpointId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12780,
                  "src": "9556:21:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9556:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9555:23:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12703,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12780,
                  "src": "9599:9:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 12701,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9599:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12702,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9599:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9598:11:31"
            },
            "scope": 12806,
            "src": "9530:582:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12804,
              "nodeType": "Block",
              "src": "10292:138:31",
              "statements": [
                {
                  "assignments": [
                    12789
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12789,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 12805,
                      "src": "10302:31:31",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 12787,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10302:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12788,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10302:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12795,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 12793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10350:1:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 12792,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "10336:13:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 12790,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10340:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12791,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10340:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 12794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10336:16:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10302:50:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12796,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12789,
                        "src": "10362:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 12798,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10377:1:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10362:17:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12799,
                      "name": "DISTRIBUTE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12066,
                      "src": "10382:10:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10362:30:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12801,
                  "nodeType": "ExpressionStatement",
                  "src": "10362:30:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12802,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12789,
                    "src": "10409:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 12785,
                  "id": 12803,
                  "nodeType": "Return",
                  "src": "10402:21:31"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with STO\n@return bytes32 array",
            "id": 12805,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12781,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10258:2:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12784,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12805,
                  "src": "10281:9:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 12782,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "10281:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 12783,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10281:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10280:11:31"
            },
            "scope": 12806,
            "src": "10235:195:31",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          }
        ],
        "scope": 12807,
        "src": "675:9758:31"
      }
    ],
    "src": "0:10434:31"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/Checkpoint/EtherDividendCheckpoint.sol",
    "exportedSymbols": {
      "EtherDividendCheckpoint": [
        12806
      ]
    },
    "id": 12807,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12054,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:31"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/Checkpoint/ICheckpoint.sol",
        "file": "./ICheckpoint.sol",
        "id": 12055,
        "nodeType": "ImportDirective",
        "scope": 12807,
        "sourceUnit": 12950,
        "src": "26:27:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/ISecurityToken.sol",
        "file": "../../interfaces/ISecurityToken.sol",
        "id": 12056,
        "nodeType": "ImportDirective",
        "scope": 12807,
        "sourceUnit": 10160,
        "src": "54:45:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 12057,
        "nodeType": "ImportDirective",
        "scope": 12807,
        "sourceUnit": 22579,
        "src": "100:59:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/Math.sol",
        "file": "openzeppelin-solidity/contracts/math/Math.sol",
        "id": 12058,
        "nodeType": "ImportDirective",
        "scope": 12807,
        "sourceUnit": 22485,
        "src": "160:55:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12059,
              "name": "ICheckpoint",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12949,
              "src": "711:11:31",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICheckpoint_$12949",
                "typeString": "contract ICheckpoint"
              }
            },
            "id": 12060,
            "nodeType": "InheritanceSpecifier",
            "src": "711:11:31"
          }
        ],
        "contractDependencies": [
          9717,
          12949
        ],
        "contractKind": "contract",
        "documentation": "@title Checkpoint module for issuing ether dividends",
        "fullyImplemented": true,
        "id": 12806,
        "linearizedBaseContracts": [
          12806,
          12949,
          9717
        ],
        "name": "EtherDividendCheckpoint",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 12063,
            "libraryName": {
              "contractScope": null,
              "id": 12061,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22578,
              "src": "735:8:31",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22578",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "729:27:31",
            "typeName": {
              "id": 12062,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "748:7:31",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 12066,
            "name": "DISTRIBUTE",
            "nodeType": "VariableDeclaration",
            "scope": 12806,
            "src": "762:49:31",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 12064,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "762:7:31",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "44495354524942555445",
              "id": 12065,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "799:12:31",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ca4be9bd739a9ff5362f4ef138b18f1b41c542345f6f1c2ebd90f78da1e5b354",
                "typeString": "literal_string \"DISTRIBUTE\""
              },
              "value": "DISTRIBUTE"
            },
            "visibility": "public"
          },
          {
            "canonicalName": "EtherDividendCheckpoint.Dividend",
            "id": 12087,
            "members": [
              {
                "constant": false,
                "id": 12068,
                "name": "checkpointId",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "842:20:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12067,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "842:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12070,
                "name": "created",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "870:15:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12069,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "870:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12072,
                "name": "maturity",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "935:16:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12071,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "935:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12074,
                "name": "expiry",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1024:14:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12073,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1024:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12076,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1192:14:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12075,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1192:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12078,
                "name": "claimedAmount",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1240:21:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12077,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1240:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12080,
                "name": "totalSupply",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1306:19:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12079,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1306:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12082,
                "name": "reclaimed",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1406:14:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 12081,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1406:4:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12086,
                "name": "claimed",
                "nodeType": "VariableDeclaration",
                "scope": 12087,
                "src": "1428:33:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 12085,
                  "keyType": {
                    "id": 12083,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1437:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1428:25:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 12084,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1448:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Dividend",
            "nodeType": "StructDefinition",
            "scope": 12806,
            "src": "818:699:31",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12090,
            "name": "dividends",
            "nodeType": "VariableDeclaration",
            "scope": 12806,
            "src": "1552:27:31",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
              "typeString": "struct EtherDividendCheckpoint.Dividend[]"
            },
            "typeName": {
              "baseType": {
                "contractScope": null,
                "id": 12088,
                "name": "Dividend",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 12087,
                "src": "1552:8:31",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                  "typeString": "struct EtherDividendCheckpoint.Dividend"
                }
              },
              "id": 12089,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "1552:10:31",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage_ptr",
                "typeString": "struct EtherDividendCheckpoint.Dividend[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12108,
            "name": "EtherDividendDeposited",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12092,
                  "indexed": true,
                  "name": "_depositor",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1615:26:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12091,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1615:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12094,
                  "indexed": false,
                  "name": "_checkpointId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1643:21:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12093,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1643:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12096,
                  "indexed": false,
                  "name": "_created",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1666:16:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12095,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1666:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12098,
                  "indexed": false,
                  "name": "_maturity",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1684:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12097,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1684:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12100,
                  "indexed": false,
                  "name": "_expiry",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1703:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12099,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1703:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12102,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1720:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12101,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1720:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12104,
                  "indexed": false,
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1737:20:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12103,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1737:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12106,
                  "indexed": false,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12108,
                  "src": "1759:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12105,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1759:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1614:168:31"
            },
            "src": "1586:197:31"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12116,
            "name": "EtherDividendClaimed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12110,
                  "indexed": true,
                  "name": "_payee",
                  "nodeType": "VariableDeclaration",
                  "scope": 12116,
                  "src": "1815:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12109,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1815:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12112,
                  "indexed": false,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12116,
                  "src": "1839:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1839:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12114,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12116,
                  "src": "1863:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1863:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1814:65:31"
            },
            "src": "1788:92:31"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12124,
            "name": "EtherDividendReclaimed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12118,
                  "indexed": true,
                  "name": "_claimer",
                  "nodeType": "VariableDeclaration",
                  "scope": 12124,
                  "src": "1914:24:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12117,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1914:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12120,
                  "indexed": false,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12124,
                  "src": "1940:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12119,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1940:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12122,
                  "indexed": false,
                  "name": "_claimedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12124,
                  "src": "1964:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12121,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1964:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1913:74:31"
            },
            "src": "1885:103:31"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12132,
            "name": "EtherDividendClaimFailed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12126,
                  "indexed": true,
                  "name": "_payee",
                  "nodeType": "VariableDeclaration",
                  "scope": 12132,
                  "src": "2024:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12125,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2024:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12128,
                  "indexed": false,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12132,
                  "src": "2048:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12127,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2048:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12130,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12132,
                  "src": "2072:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2072:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2023:65:31"
            },
            "src": "1993:96:31"
          },
          {
            "body": {
              "id": 12174,
              "nodeType": "Block",
              "src": "2147:383:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12137,
                          "name": "_dividendIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12134,
                          "src": "2165:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12138,
                            "name": "dividends",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12090,
                            "src": "2182:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                            }
                          },
                          "id": 12139,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2182:16:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2165:33:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e636f7272656374206469766964656e6420696e646578",
                        "id": 12141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2200:26:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_493598b4f85c7110e712482cd4f4c764fe64a77e153f7dd336580d7956ede6a0",
                          "typeString": "literal_string \"Incorrect dividend index\""
                        },
                        "value": "Incorrect dividend index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_493598b4f85c7110e712482cd4f4c764fe64a77e153f7dd336580d7956ede6a0",
                          "typeString": "literal_string \"Incorrect dividend index\""
                        }
                      ],
                      "id": 12136,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2157:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2157:70:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12143,
                  "nodeType": "ExpressionStatement",
                  "src": "2157:70:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12145,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "2245:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12146,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "2252:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12148,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12147,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12134,
                              "src": "2262:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2252:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12149,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maturity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12072,
                          "src": "2252:34:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2245:41:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e64206d6174757269747920697320696e2074686520667574757265",
                        "id": 12151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2288:36:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_63322e13adabbf379a54e39e04fa0c750bb517eee0b29cbcd78f4f7e2625966b",
                          "typeString": "literal_string \"Dividend maturity is in the future\""
                        },
                        "value": "Dividend maturity is in the future"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_63322e13adabbf379a54e39e04fa0c750bb517eee0b29cbcd78f4f7e2625966b",
                          "typeString": "literal_string \"Dividend maturity is in the future\""
                        }
                      ],
                      "id": 12144,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2237:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2237:88:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12153,
                  "nodeType": "ExpressionStatement",
                  "src": "2237:88:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12155,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "2343:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12156,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "2349:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12158,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12157,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12134,
                              "src": "2359:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2349:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12159,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expiry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12074,
                          "src": "2349:32:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2343:38:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e642065787069727920697320696e207468652070617374",
                        "id": 12161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2383:32:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3a8d6d593aece756e87679a0e9860056caa9290c209985c444a5dfcedcbfb212",
                          "typeString": "literal_string \"Dividend expiry is in the past\""
                        },
                        "value": "Dividend expiry is in the past"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3a8d6d593aece756e87679a0e9860056caa9290c209985c444a5dfcedcbfb212",
                          "typeString": "literal_string \"Dividend expiry is in the past\""
                        }
                      ],
                      "id": 12154,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2335:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2335:81:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12163,
                  "nodeType": "ExpressionStatement",
                  "src": "2335:81:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2434:36:31",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12165,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "2435:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12167,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12166,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12134,
                              "src": "2445:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2435:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12168,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reclaimed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12082,
                          "src": "2435:35:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e6420686173206265656e207265636c61696d656420627920697373756572",
                        "id": 12170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2472:39:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b568a7d8822e7fc758f05cb1eab8f71b5fd4d1887ac3d7f57de02dd397af7d10",
                          "typeString": "literal_string \"Dividend has been reclaimed by issuer\""
                        },
                        "value": "Dividend has been reclaimed by issuer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b568a7d8822e7fc758f05cb1eab8f71b5fd4d1887ac3d7f57de02dd397af7d10",
                          "typeString": "literal_string \"Dividend has been reclaimed by issuer\""
                        }
                      ],
                      "id": 12164,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2426:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2426:86:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12172,
                  "nodeType": "ExpressionStatement",
                  "src": "2426:86:31"
                },
                {
                  "id": 12173,
                  "nodeType": "PlaceholderStatement",
                  "src": "2522:1:31"
                }
              ]
            },
            "documentation": null,
            "id": 12175,
            "name": "validDividendIndex",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 12135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12134,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12175,
                  "src": "2123:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2123:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2122:24:31"
            },
            "src": "2095:435:31",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12186,
              "nodeType": "Block",
              "src": "2802:7:31",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 12187,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12182,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12177,
                    "src": "2768:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 12183,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12179,
                    "src": "2784:12:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 12184,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12181,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "2760:7:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2760:37:31"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12177,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 12187,
                  "src": "2703:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12176,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2703:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12179,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 12187,
                  "src": "2727:20:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12178,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2727:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2702:46:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12185,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2802:0:31"
            },
            "scope": 12806,
            "src": "2690:119:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12196,
              "nodeType": "Block",
              "src": "3008:33:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3032:1:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 12192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3025:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 12194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3025:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 12191,
                  "id": 12195,
                  "nodeType": "Return",
                  "src": "3018:16:31"
                }
              ]
            },
            "documentation": "@notice Init function i.e generalise function to maintain the structure of the module contract\n@return bytes4",
            "id": 12197,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2976:2:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12190,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12197,
                  "src": "3000:6:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 12189,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3000:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2999:8:31"
            },
            "scope": 12806,
            "src": "2952:89:31",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12275,
              "nodeType": "Block",
              "src": "3371:683:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12207,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12201,
                          "src": "3389:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12208,
                          "name": "_maturity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12199,
                          "src": "3399:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3389:19:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12206,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "3381:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3381:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12211,
                  "nodeType": "ExpressionStatement",
                  "src": "3381:28:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12213,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12201,
                          "src": "3427:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12214,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "3437:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3427:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12212,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "3419:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3419:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12217,
                  "nodeType": "ExpressionStatement",
                  "src": "3419:22:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12219,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23131,
                            "src": "3459:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 12220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3459:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3471:1:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3459:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12218,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "3451:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3451:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12224,
                  "nodeType": "ExpressionStatement",
                  "src": "3451:22:31"
                },
                {
                  "assignments": [
                    12226
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12226,
                      "name": "dividendIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 12276,
                      "src": "3483:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12225,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3483:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12229,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 12227,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "3507:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12228,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "3507:16:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3483:40:31"
                },
                {
                  "assignments": [
                    12231
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12231,
                      "name": "checkpointId",
                      "nodeType": "VariableDeclaration",
                      "scope": 12276,
                      "src": "3533:20:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12230,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3533:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12237,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12233,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "3571:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12232,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "3556:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3556:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createCheckpoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10153,
                      "src": "3556:46:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                        "typeString": "function () external returns (uint256)"
                      }
                    },
                    "id": 12236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3556:48:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3533:71:31"
                },
                {
                  "assignments": [
                    12239
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12239,
                      "name": "currentSupply",
                      "nodeType": "VariableDeclaration",
                      "scope": 12276,
                      "src": "3614:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12238,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3614:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12245,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12241,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "3653:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12240,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "3638:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3638:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12243,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22687,
                      "src": "3638:41:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 12244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3638:43:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3614:67:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12250,
                            "name": "checkpointId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12231,
                            "src": "3739:12:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12251,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23133,
                            "src": "3765:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12252,
                            "name": "_maturity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12199,
                            "src": "3782:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12253,
                            "name": "_expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12201,
                            "src": "3805:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12254,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "3826:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3826:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3849:1:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "id": 12257,
                            "name": "currentSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12239,
                            "src": "3864:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 12258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3891:5:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 12249,
                          "name": "Dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12087,
                          "src": "3717:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Dividend_$12087_storage_ptr_$",
                            "typeString": "type(struct EtherDividendCheckpoint.Dividend storage pointer)"
                          }
                        },
                        "id": 12259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3717:191:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_memory",
                          "typeString": "struct EtherDividendCheckpoint.Dividend memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Dividend_$12087_memory",
                          "typeString": "struct EtherDividendCheckpoint.Dividend memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12246,
                        "name": "dividends",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12090,
                        "src": "3691:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                        }
                      },
                      "id": 12248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3691:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Dividend_$12087_storage_$returns$_t_uint256_$",
                        "typeString": "function (struct EtherDividendCheckpoint.Dividend storage ref) returns (uint256)"
                      }
                    },
                    "id": 12260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3691:227:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12261,
                  "nodeType": "ExpressionStatement",
                  "src": "3691:227:31"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12263,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "3956:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12264,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3956:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12265,
                        "name": "checkpointId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12231,
                        "src": "3968:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12266,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "3982:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12267,
                        "name": "_maturity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12199,
                        "src": "3987:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12268,
                        "name": "_expiry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12201,
                        "src": "3998:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12269,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "4007:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4007:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12271,
                        "name": "currentSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12239,
                        "src": "4018:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12272,
                        "name": "dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12226,
                        "src": "4033:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12262,
                      "name": "EtherDividendDeposited",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12108,
                      "src": "3933:22:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 12273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3933:114:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12274,
                  "nodeType": "EmitStatement",
                  "src": "3928:119:31"
                }
              ]
            },
            "documentation": "@notice Creates a dividend and checkpoint for the dividend\n@param _maturity Time from which dividend can be paid\n@param _expiry Time until dividend can no longer be paid, and can be reclaimed by issuer",
            "id": 12276,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 12204,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12203,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9653,
                  "src": "3361:9:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3361:9:31"
              }
            ],
            "name": "createDividend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12199,
                  "name": "_maturity",
                  "nodeType": "VariableDeclaration",
                  "scope": 12276,
                  "src": "3310:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12198,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3310:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12201,
                  "name": "_expiry",
                  "nodeType": "VariableDeclaration",
                  "scope": 12276,
                  "src": "3329:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12200,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3329:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3309:36:31"
            },
            "payable": true,
            "returnParameters": {
              "id": 12205,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3371:0:31"
            },
            "scope": 12806,
            "src": "3286:768:31",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12359,
              "nodeType": "Block",
              "src": "4494:706:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12290,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12288,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12280,
                          "src": "4512:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12289,
                          "name": "_maturity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12278,
                          "src": "4522:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4512:19:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "4504:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4504:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12292,
                  "nodeType": "ExpressionStatement",
                  "src": "4504:28:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12294,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12280,
                          "src": "4550:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12295,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "4560:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4550:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12293,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "4542:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4542:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12298,
                  "nodeType": "ExpressionStatement",
                  "src": "4542:22:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12300,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23131,
                            "src": "4582:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 12301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4582:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4594:1:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4582:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12299,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "4574:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4574:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12305,
                  "nodeType": "ExpressionStatement",
                  "src": "4574:22:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12307,
                          "name": "_checkpointId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12282,
                          "src": "4614:13:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12309,
                                  "name": "securityToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9561,
                                  "src": "4646:13:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12308,
                                "name": "ISecurityToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10159,
                                "src": "4631:14:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                  "typeString": "type(contract ISecurityToken)"
                                }
                              },
                              "id": 12310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4631:29:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                "typeString": "contract ISecurityToken"
                              }
                            },
                            "id": 12311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentCheckpointId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10094,
                            "src": "4631:49:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 12312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4631:51:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4614:68:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12306,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23134,
                      "src": "4606:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4606:77:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12315,
                  "nodeType": "ExpressionStatement",
                  "src": "4606:77:31"
                },
                {
                  "assignments": [
                    12317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12317,
                      "name": "dividendIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 12360,
                      "src": "4693:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12316,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4693:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12320,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 12318,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "4717:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12319,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4717:16:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4693:40:31"
                },
                {
                  "assignments": [
                    12322
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12322,
                      "name": "currentSupply",
                      "nodeType": "VariableDeclaration",
                      "scope": 12360,
                      "src": "4743:21:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12321,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4743:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12329,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12327,
                        "name": "_checkpointId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12282,
                        "src": "4811:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12324,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "4782:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12323,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "4767:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4767:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupplyAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10139,
                      "src": "4767:43:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 12328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4767:58:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4743:82:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12334,
                            "name": "_checkpointId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12282,
                            "src": "4883:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12335,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23133,
                            "src": "4910:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12336,
                            "name": "_maturity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "4927:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12337,
                            "name": "_expiry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12280,
                            "src": "4950:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12338,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "4971:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4971:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4994:1:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "id": 12341,
                            "name": "currentSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12322,
                            "src": "5009:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 12342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5036:5:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 12333,
                          "name": "Dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12087,
                          "src": "4861:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Dividend_$12087_storage_ptr_$",
                            "typeString": "type(struct EtherDividendCheckpoint.Dividend storage pointer)"
                          }
                        },
                        "id": 12343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4861:192:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_memory",
                          "typeString": "struct EtherDividendCheckpoint.Dividend memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Dividend_$12087_memory",
                          "typeString": "struct EtherDividendCheckpoint.Dividend memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 12330,
                        "name": "dividends",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12090,
                        "src": "4835:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                        }
                      },
                      "id": 12332,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4835:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Dividend_$12087_storage_$returns$_t_uint256_$",
                        "typeString": "function (struct EtherDividendCheckpoint.Dividend storage ref) returns (uint256)"
                      }
                    },
                    "id": 12344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4835:228:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12345,
                  "nodeType": "ExpressionStatement",
                  "src": "4835:228:31"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12347,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "5101:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5101:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12349,
                        "name": "_checkpointId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12282,
                        "src": "5113:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12350,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "5128:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12351,
                        "name": "_maturity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12278,
                        "src": "5133:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12352,
                        "name": "_expiry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12280,
                        "src": "5144:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12353,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "5153:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5153:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12355,
                        "name": "currentSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12322,
                        "src": "5164:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12356,
                        "name": "dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12317,
                        "src": "5179:13:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12346,
                      "name": "EtherDividendDeposited",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12108,
                      "src": "5078:22:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 12357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5078:115:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12358,
                  "nodeType": "EmitStatement",
                  "src": "5073:120:31"
                }
              ]
            },
            "documentation": "@notice Creates a dividend with a provided checkpoint\n@param _maturity Time from which dividend can be paid\n@param _expiry Time until dividend can no longer be paid, and can be reclaimed by issuer\n@param _checkpointId Id of the checkpoint from which to issue dividend",
            "id": 12360,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 12285,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12284,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9653,
                  "src": "4484:9:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4484:9:31"
              }
            ],
            "name": "createDividendWithCheckpoint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12278,
                  "name": "_maturity",
                  "nodeType": "VariableDeclaration",
                  "scope": 12360,
                  "src": "4410:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12277,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4410:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12280,
                  "name": "_expiry",
                  "nodeType": "VariableDeclaration",
                  "scope": 12360,
                  "src": "4429:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12279,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4429:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12282,
                  "name": "_checkpointId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12360,
                  "src": "4446:21:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12281,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4446:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4409:59:31"
            },
            "payable": true,
            "returnParameters": {
              "id": 12286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4494:0:31"
            },
            "scope": 12806,
            "src": "4372:828:31",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12410,
              "nodeType": "Block",
              "src": "5539:266:31",
              "statements": [
                {
                  "assignments": [
                    12375
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12375,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12411,
                      "src": "5549:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12374,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "5549:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12379,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12376,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "5577:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12378,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12377,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12362,
                      "src": "5587:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5577:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5549:53:31"
                },
                {
                  "body": {
                    "id": 12408,
                    "nodeType": "Block",
                    "src": "5657:142:31",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5675:29:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12391,
                                "name": "dividend",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12375,
                                "src": "5676:8:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                  "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                }
                              },
                              "id": 12392,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "claimed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12086,
                              "src": "5676:16:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 12396,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12393,
                                "name": "_payees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12365,
                                "src": "5693:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 12395,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12394,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12381,
                                "src": "5701:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5693:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5676:28:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12407,
                        "nodeType": "IfStatement",
                        "src": "5671:118:31",
                        "trueBody": {
                          "id": 12406,
                          "nodeType": "Block",
                          "src": "5706:83:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 12399,
                                      "name": "_payees",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12365,
                                      "src": "5737:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 12401,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12400,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12381,
                                      "src": "5745:1:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5737:10:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12402,
                                    "name": "dividend",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12375,
                                    "src": "5749:8:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                      "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12403,
                                    "name": "_dividendIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12362,
                                    "src": "5759:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                      "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12398,
                                  "name": "_payDividend",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12581,
                                  "src": "5724:12:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Dividend_$12087_storage_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,struct EtherDividendCheckpoint.Dividend storage pointer,uint256)"
                                  }
                                },
                                "id": 12404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5724:50:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12405,
                              "nodeType": "ExpressionStatement",
                              "src": "5724:50:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12384,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12381,
                      "src": "5632:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12385,
                        "name": "_payees",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12365,
                        "src": "5636:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 12386,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5636:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5632:18:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12409,
                  "initializationExpression": {
                    "assignments": [
                      12381
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12381,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12411,
                        "src": "5617:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12380,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5617:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12383,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12382,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5629:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5617:13:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12389,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5652:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12388,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12381,
                        "src": "5652:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12390,
                    "nodeType": "ExpressionStatement",
                    "src": "5652:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "5612:187:31"
                }
              ]
            },
            "documentation": "@notice Issuer can push dividends to provided addresses\n@param _dividendIndex Dividend to push\n@param _payees Addresses to which to push the dividend",
            "id": 12411,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12368,
                    "name": "DISTRIBUTE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12066,
                    "src": "5492:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 12369,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12367,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5483:8:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5483:20:31"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12371,
                    "name": "_dividendIndex",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12362,
                    "src": "5523:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 12372,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12370,
                  "name": "validDividendIndex",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12175,
                  "src": "5504:18:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5504:34:31"
              }
            ],
            "name": "pushDividendPaymentToAddresses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12362,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12411,
                  "src": "5433:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5433:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12365,
                  "name": "_payees",
                  "nodeType": "VariableDeclaration",
                  "scope": 12411,
                  "src": "5457:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 12363,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5457:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 12364,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5457:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5432:43:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12373,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5539:0:31"
            },
            "scope": 12806,
            "src": "5393:412:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12481,
              "nodeType": "Block",
              "src": "6263:458:31",
              "statements": [
                {
                  "assignments": [
                    12427
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12427,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12482,
                      "src": "6273:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12426,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "6273:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12431,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12428,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "6301:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12430,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12429,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12413,
                      "src": "6311:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6301:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6273:53:31"
                },
                {
                  "assignments": [
                    12433
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12433,
                      "name": "numberInvestors",
                      "nodeType": "VariableDeclaration",
                      "scope": 12482,
                      "src": "6336:23:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12432,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6336:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12439,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12435,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "6377:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12434,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "6362:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6362:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getInvestorsLength",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10158,
                      "src": "6362:48:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 12438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6362:50:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6336:76:31"
                },
                {
                  "body": {
                    "id": 12479,
                    "nodeType": "Block",
                    "src": "6511:204:31",
                    "statements": [
                      {
                        "assignments": [
                          12458
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12458,
                            "name": "payee",
                            "nodeType": "VariableDeclaration",
                            "scope": 12482,
                            "src": "6525:13:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12457,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6525:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12465,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12463,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12441,
                              "src": "6581:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12460,
                                  "name": "securityToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9561,
                                  "src": "6556:13:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12459,
                                "name": "ISecurityToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10159,
                                "src": "6541:14:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                  "typeString": "type(contract ISecurityToken)"
                                }
                              },
                              "id": 12461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6541:29:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                "typeString": "contract ISecurityToken"
                              }
                            },
                            "id": 12462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "investors",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10099,
                            "src": "6541:39:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view external returns (address)"
                            }
                          },
                          "id": 12464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6541:42:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6525:58:31"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6601:24:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12466,
                                "name": "dividend",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12427,
                                "src": "6602:8:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                  "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                }
                              },
                              "id": 12467,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "claimed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12086,
                              "src": "6602:16:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 12469,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12468,
                              "name": "payee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12458,
                              "src": "6619:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6602:23:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12478,
                        "nodeType": "IfStatement",
                        "src": "6597:108:31",
                        "trueBody": {
                          "id": 12477,
                          "nodeType": "Block",
                          "src": "6627:78:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12472,
                                    "name": "payee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12458,
                                    "src": "6658:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12473,
                                    "name": "dividend",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12427,
                                    "src": "6665:8:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                      "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12474,
                                    "name": "_dividendIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12413,
                                    "src": "6675:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                      "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12471,
                                  "name": "_payDividend",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12581,
                                  "src": "6645:12:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Dividend_$12087_storage_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,struct EtherDividendCheckpoint.Dividend storage pointer,uint256)"
                                  }
                                },
                                "id": 12475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6645:45:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12476,
                              "nodeType": "ExpressionStatement",
                              "src": "6645:45:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12444,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12441,
                      "src": "6447:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 12447,
                          "name": "numberInvestors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12433,
                          "src": "6463:15:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12450,
                              "name": "_iterations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12417,
                              "src": "6491:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12448,
                              "name": "_start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12415,
                              "src": "6480:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 12449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22577,
                            "src": "6480:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 12451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6480:23:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12445,
                          "name": "Math",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22484,
                          "src": "6451:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Math_$22484_$",
                            "typeString": "type(library Math)"
                          }
                        },
                        "id": 12446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "min256",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22483,
                        "src": "6451:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 12452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6451:53:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6447:57:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12480,
                  "initializationExpression": {
                    "assignments": [
                      12441
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12441,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12482,
                        "src": "6427:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6427:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12443,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 12442,
                      "name": "_start",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12415,
                      "src": "6439:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6427:18:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6506:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12454,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12441,
                        "src": "6506:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12456,
                    "nodeType": "ExpressionStatement",
                    "src": "6506:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "6422:293:31"
                }
              ]
            },
            "documentation": "@notice Issuer can push dividends using the investor list from the security token\n@param _dividendIndex Dividend to push\n@param _start Index in investor list at which to start pushing dividends\n@param _iterations Number of addresses to push dividends for",
            "id": 12482,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12420,
                    "name": "DISTRIBUTE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12066,
                    "src": "6216:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 12421,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12419,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "6207:8:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6207:20:31"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12423,
                    "name": "_dividendIndex",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12413,
                    "src": "6247:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 12424,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12422,
                  "name": "validDividendIndex",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12175,
                  "src": "6228:18:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6228:34:31"
              }
            ],
            "name": "pushDividendPayment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12418,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12413,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12482,
                  "src": "6139:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12412,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6139:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12415,
                  "name": "_start",
                  "nodeType": "VariableDeclaration",
                  "scope": 12482,
                  "src": "6163:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12414,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6163:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12417,
                  "name": "_iterations",
                  "nodeType": "VariableDeclaration",
                  "scope": 12482,
                  "src": "6179:19:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6179:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6138:61:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12425,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6263:0:31"
            },
            "scope": 12806,
            "src": "6110:611:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12513,
              "nodeType": "Block",
              "src": "6942:208:31",
              "statements": [
                {
                  "assignments": [
                    12491
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12491,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12514,
                      "src": "6952:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12490,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "6952:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12495,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12492,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "6980:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12494,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12493,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12484,
                      "src": "6990:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6980:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6952:53:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "7023:29:31",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12497,
                              "name": "dividend",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12491,
                              "src": "7024:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                              }
                            },
                            "id": 12498,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12086,
                            "src": "7024:16:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 12501,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12499,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "7041:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 12500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7041:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7024:28:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e6420616c7265616479207265636c61696d6564",
                        "id": 12503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7054:28:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1714a10a81f7397348bdfa274c2f8a2730e99ed44f16c5ab4a0ced56e1a7a11c",
                          "typeString": "literal_string \"Dividend already reclaimed\""
                        },
                        "value": "Dividend already reclaimed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1714a10a81f7397348bdfa274c2f8a2730e99ed44f16c5ab4a0ced56e1a7a11c",
                          "typeString": "literal_string \"Dividend already reclaimed\""
                        }
                      ],
                      "id": 12496,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "7015:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7015:68:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12505,
                  "nodeType": "ExpressionStatement",
                  "src": "7015:68:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12507,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "7106:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7106:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12509,
                        "name": "dividend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12491,
                        "src": "7118:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12510,
                        "name": "_dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12484,
                        "src": "7128:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12506,
                      "name": "_payDividend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12581,
                      "src": "7093:12:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Dividend_$12087_storage_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (address,struct EtherDividendCheckpoint.Dividend storage pointer,uint256)"
                      }
                    },
                    "id": 12511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7093:50:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12512,
                  "nodeType": "ExpressionStatement",
                  "src": "7093:50:31"
                }
              ]
            },
            "documentation": "@notice Investors can pull their own dividends\n@param _dividendIndex Dividend to pull",
            "id": 12514,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 12487,
                    "name": "_dividendIndex",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12484,
                    "src": "6922:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 12488,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12486,
                  "name": "validDividendIndex",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12175,
                  "src": "6903:18:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6903:34:31"
              }
            ],
            "name": "pullDividendPayment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12485,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12484,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12514,
                  "src": "6872:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12483,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6872:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6871:24:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12489,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6942:0:31"
            },
            "scope": 12806,
            "src": "6843:307:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12580,
              "nodeType": "Block",
              "src": "7476:491:31",
              "statements": [
                {
                  "assignments": [
                    12524
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12524,
                      "name": "claim",
                      "nodeType": "VariableDeclaration",
                      "scope": 12581,
                      "src": "7486:13:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12523,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7486:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12529,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12526,
                        "name": "_dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12520,
                        "src": "7520:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12527,
                        "name": "_payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12516,
                        "src": "7536:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 12525,
                      "name": "calculateDividend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12697,
                      "src": "7502:17:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address) view returns (uint256)"
                      }
                    },
                    "id": 12528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7502:41:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7486:57:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12530,
                          "name": "_dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12518,
                          "src": "7553:9:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12533,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "claimed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12086,
                        "src": "7553:17:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 12534,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12532,
                        "name": "_payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12516,
                        "src": "7571:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7553:25:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 12535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7581:4:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "7553:32:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12537,
                  "nodeType": "ExpressionStatement",
                  "src": "7553:32:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12538,
                        "name": "_dividend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12518,
                        "src": "7595:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        }
                      },
                      "id": 12540,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "claimedAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12078,
                      "src": "7595:23:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12543,
                            "name": "_dividend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12518,
                            "src": "7631:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                            }
                          },
                          "id": 12544,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "claimedAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12078,
                          "src": "7631:23:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 12541,
                          "name": "claim",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12524,
                          "src": "7621:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "7621:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 12545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7621:34:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7595:60:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12547,
                  "nodeType": "ExpressionStatement",
                  "src": "7595:60:31"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12548,
                      "name": "claim",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12524,
                      "src": "7669:5:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7677:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7669:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12579,
                  "nodeType": "IfStatement",
                  "src": "7665:296:31",
                  "trueBody": {
                    "id": 12578,
                    "nodeType": "Block",
                    "src": "7680:281:31",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12553,
                              "name": "claim",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12524,
                              "src": "7710:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12551,
                              "name": "_payee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12516,
                              "src": "7698:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 12552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "send",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7698:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) returns (bool)"
                            }
                          },
                          "id": 12554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7698:18:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12576,
                          "nodeType": "Block",
                          "src": "7811:140:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12562,
                                      "name": "_dividend",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12518,
                                      "src": "7827:9:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                        "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                                      }
                                    },
                                    "id": 12565,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "claimed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12086,
                                    "src": "7827:17:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 12566,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 12564,
                                    "name": "_payee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12516,
                                    "src": "7845:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7827:25:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 12567,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7855:5:31",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "7827:33:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 12569,
                              "nodeType": "ExpressionStatement",
                              "src": "7827:33:31"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12571,
                                    "name": "_payee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12516,
                                    "src": "7906:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12572,
                                    "name": "_dividendIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12520,
                                    "src": "7914:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12573,
                                    "name": "claim",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12524,
                                    "src": "7930:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12570,
                                  "name": "EtherDividendClaimFailed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12132,
                                  "src": "7881:24:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 12574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7881:55:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12575,
                              "nodeType": "EmitStatement",
                              "src": "7876:60:31"
                            }
                          ]
                        },
                        "id": 12577,
                        "nodeType": "IfStatement",
                        "src": "7694:257:31",
                        "trueBody": {
                          "id": 12561,
                          "nodeType": "Block",
                          "src": "7718:87:31",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12556,
                                    "name": "_payee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12516,
                                    "src": "7760:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12557,
                                    "name": "_dividendIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12520,
                                    "src": "7768:14:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12558,
                                    "name": "claim",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12524,
                                    "src": "7784:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12555,
                                  "name": "EtherDividendClaimed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12116,
                                  "src": "7739:20:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 12559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7739:51:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12560,
                              "nodeType": "EmitStatement",
                              "src": "7734:56:31"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Internal function for paying dividends\n@param _payee address of investor\n@param _dividend storage with previously issued dividends\n@param _dividendIndex Dividend to pay",
            "id": 12581,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_payDividend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12516,
                  "name": "_payee",
                  "nodeType": "VariableDeclaration",
                  "scope": 12581,
                  "src": "7399:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12515,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7399:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12518,
                  "name": "_dividend",
                  "nodeType": "VariableDeclaration",
                  "scope": 12581,
                  "src": "7415:26:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                    "typeString": "struct EtherDividendCheckpoint.Dividend"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12517,
                    "name": "Dividend",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12087,
                    "src": "7415:8:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                      "typeString": "struct EtherDividendCheckpoint.Dividend"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12520,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12581,
                  "src": "7443:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7443:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7398:68:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7476:0:31"
            },
            "scope": 12806,
            "src": "7377:590:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12651,
              "nodeType": "Block",
              "src": "8198:569:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12589,
                          "name": "_dividendIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12583,
                          "src": "8216:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12590,
                            "name": "dividends",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12090,
                            "src": "8233:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                            }
                          },
                          "id": 12591,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8233:16:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8216:33:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e636f7272656374206469766964656e6420696e646578",
                        "id": 12593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8251:26:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_493598b4f85c7110e712482cd4f4c764fe64a77e153f7dd336580d7956ede6a0",
                          "typeString": "literal_string \"Incorrect dividend index\""
                        },
                        "value": "Incorrect dividend index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_493598b4f85c7110e712482cd4f4c764fe64a77e153f7dd336580d7956ede6a0",
                          "typeString": "literal_string \"Incorrect dividend index\""
                        }
                      ],
                      "id": 12588,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "8208:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8208:70:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12595,
                  "nodeType": "ExpressionStatement",
                  "src": "8208:70:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12597,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "8296:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12598,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "8303:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12600,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12599,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12583,
                              "src": "8313:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8303:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12601,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expiry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12074,
                          "src": "8303:32:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8296:39:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e642065787069727920697320696e2074686520667574757265",
                        "id": 12603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8337:34:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3423a6d303ded18ed64e52bcfb7c965bd745fc80ec022cd69f4a83e2bb0eded7",
                          "typeString": "literal_string \"Dividend expiry is in the future\""
                        },
                        "value": "Dividend expiry is in the future"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3423a6d303ded18ed64e52bcfb7c965bd745fc80ec022cd69f4a83e2bb0eded7",
                          "typeString": "literal_string \"Dividend expiry is in the future\""
                        }
                      ],
                      "id": 12596,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "8288:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8288:84:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12605,
                  "nodeType": "ExpressionStatement",
                  "src": "8288:84:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12611,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "8390:36:31",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12607,
                              "name": "dividends",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12090,
                              "src": "8391:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                              }
                            },
                            "id": 12609,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12608,
                              "name": "_dividendIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12583,
                              "src": "8401:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8391:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                              "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                            }
                          },
                          "id": 12610,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reclaimed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12082,
                          "src": "8391:35:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469766964656e6420616c726561647920636c61696d6564",
                        "id": 12612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8428:26:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_34d8bfb8ea936959b19e40666b5fd8804718711629a5666d78472ed2589ed75b",
                          "typeString": "literal_string \"Dividend already claimed\""
                        },
                        "value": "Dividend already claimed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_34d8bfb8ea936959b19e40666b5fd8804718711629a5666d78472ed2589ed75b",
                          "typeString": "literal_string \"Dividend already claimed\""
                        }
                      ],
                      "id": 12606,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "8382:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8382:73:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12614,
                  "nodeType": "ExpressionStatement",
                  "src": "8382:73:31"
                },
                {
                  "assignments": [
                    12616
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12616,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12652,
                      "src": "8465:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12615,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "8465:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12620,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12617,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "8493:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12619,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12618,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12583,
                      "src": "8503:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8493:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8465:53:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12621,
                        "name": "dividend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12616,
                        "src": "8528:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        }
                      },
                      "id": 12623,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "reclaimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12082,
                      "src": "8528:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 12624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8549:4:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8528:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12626,
                  "nodeType": "ExpressionStatement",
                  "src": "8528:25:31"
                },
                {
                  "assignments": [
                    12628
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12628,
                      "name": "remainingAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 12652,
                      "src": "8563:23:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12627,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8563:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12635,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12632,
                          "name": "dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12616,
                          "src": "8609:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12633,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "claimedAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12078,
                        "src": "8609:22:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12629,
                          "name": "dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12616,
                          "src": "8589:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12630,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12076,
                        "src": "8589:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 12631,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22553,
                      "src": "8589:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 12634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8589:43:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8563:69:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12641,
                        "name": "remainingAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12628,
                        "src": "8662:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12636,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "8642:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8642:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 12640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8642:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 12642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8642:36:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12643,
                  "nodeType": "ExpressionStatement",
                  "src": "8642:36:31"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12645,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "8716:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 12646,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8716:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12647,
                        "name": "_dividendIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12583,
                        "src": "8728:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12648,
                        "name": "remainingAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12628,
                        "src": "8744:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12644,
                      "name": "EtherDividendReclaimed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12124,
                      "src": "8693:22:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 12649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8693:67:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12650,
                  "nodeType": "EmitStatement",
                  "src": "8688:72:31"
                }
              ]
            },
            "documentation": "@notice Issuer can reclaim remaining unclaimed dividend amounts, for expired dividends\n@param _dividendIndex Dividend to reclaim",
            "id": 12652,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 12586,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 12585,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9653,
                  "src": "8188:9:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8188:9:31"
              }
            ],
            "name": "reclaimDividend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12583,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12652,
                  "src": "8157:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12582,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8157:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8156:24:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8198:0:31"
            },
            "scope": 12806,
            "src": "8132:635:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12696,
              "nodeType": "Block",
              "src": "9061:313:31",
              "statements": [
                {
                  "assignments": [
                    12662
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12662,
                      "name": "dividend",
                      "nodeType": "VariableDeclaration",
                      "scope": 12697,
                      "src": "9071:25:31",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                        "typeString": "struct EtherDividendCheckpoint.Dividend"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12661,
                        "name": "Dividend",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12087,
                        "src": "9071:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12666,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12663,
                      "name": "dividends",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12090,
                      "src": "9099:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                        "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                      }
                    },
                    "id": 12665,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12664,
                      "name": "_dividendIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12654,
                      "src": "9109:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9099:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                      "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9071:53:31"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12667,
                        "name": "dividend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12662,
                        "src": "9138:8:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                        }
                      },
                      "id": 12668,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12086,
                      "src": "9138:16:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 12670,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12669,
                      "name": "_payee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12656,
                      "src": "9155:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9138:24:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12674,
                  "nodeType": "IfStatement",
                  "src": "9134:63:31",
                  "trueBody": {
                    "id": 12673,
                    "nodeType": "Block",
                    "src": "9164:33:31",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9185:1:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 12660,
                        "id": 12672,
                        "nodeType": "Return",
                        "src": "9178:8:31"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12676
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12676,
                      "name": "balance",
                      "nodeType": "VariableDeclaration",
                      "scope": 12697,
                      "src": "9206:15:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12675,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9206:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12685,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12681,
                        "name": "_payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12656,
                        "src": "9266:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12682,
                          "name": "dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12662,
                          "src": "9274:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12683,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "checkpointId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12068,
                        "src": "9274:21:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12678,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "9239:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12677,
                          "name": "ISecurityToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "9224:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                            "typeString": "type(contract ISecurityToken)"
                          }
                        },
                        "id": 12679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9224:29:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                          "typeString": "contract ISecurityToken"
                        }
                      },
                      "id": 12680,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOfAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10148,
                      "src": "9224:41:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 12684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9224:72:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9206:90:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12692,
                          "name": "dividend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12662,
                          "src": "9346:8:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                            "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                          }
                        },
                        "id": 12693,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalSupply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12080,
                        "src": "9346:20:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12688,
                              "name": "dividend",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12662,
                              "src": "9325:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dividend_$12087_storage_ptr",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage pointer"
                              }
                            },
                            "id": 12689,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12076,
                            "src": "9325:15:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 12686,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12676,
                            "src": "9313:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22519,
                          "src": "9313:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 12690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9313:28:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 12691,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22533,
                      "src": "9313:32:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 12694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9313:54:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12660,
                  "id": 12695,
                  "nodeType": "Return",
                  "src": "9306:61:31"
                }
              ]
            },
            "documentation": "@notice Calculate amount of dividends claimable\n@param _dividendIndex Dividend to calculate\n@param _payee Affected investor address\n@return unit256",
            "id": 12697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "calculateDividend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12657,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12654,
                  "name": "_dividendIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 12697,
                  "src": "8992:22:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8992:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12656,
                  "name": "_payee",
                  "nodeType": "VariableDeclaration",
                  "scope": 12697,
                  "src": "9016:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9016:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8991:40:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12659,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12697,
                  "src": "9052:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9052:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9051:9:31"
            },
            "scope": 12806,
            "src": "8965:409:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12779,
              "nodeType": "Block",
              "src": "9610:502:31",
              "statements": [
                {
                  "assignments": [
                    12706
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12706,
                      "name": "counter",
                      "nodeType": "VariableDeclaration",
                      "scope": 12780,
                      "src": "9620:15:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12705,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9620:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12708,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 12707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9638:1:31",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9620:19:31"
                },
                {
                  "body": {
                    "id": 12731,
                    "nodeType": "Block",
                    "src": "9695:114:31",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12720,
                                "name": "dividends",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12090,
                                "src": "9713:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                  "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                                }
                              },
                              "id": 12722,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12721,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12710,
                                "src": "9723:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9713:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                              }
                            },
                            "id": 12723,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "checkpointId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12068,
                            "src": "9713:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12724,
                            "name": "_checkpointId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12699,
                            "src": "9742:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9713:42:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12730,
                        "nodeType": "IfStatement",
                        "src": "9709:90:31",
                        "trueBody": {
                          "id": 12729,
                          "nodeType": "Block",
                          "src": "9757:42:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "9775:9:31",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 12726,
                                  "name": "counter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12706,
                                  "src": "9775:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12728,
                              "nodeType": "ExpressionStatement",
                              "src": "9775:9:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12713,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12710,
                      "src": "9668:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12714,
                        "name": "dividends",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12090,
                        "src": "9672:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                        }
                      },
                      "id": 12715,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9672:16:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9668:20:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12732,
                  "initializationExpression": {
                    "assignments": [
                      12710
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12710,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 12780,
                        "src": "9653:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9653:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12712,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9665:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9653:13:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9690:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12717,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12710,
                        "src": "9690:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12719,
                    "nodeType": "ExpressionStatement",
                    "src": "9690:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "9649:160:31"
                },
                {
                  "assignments": [
                    12736
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12736,
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "scope": 12780,
                      "src": "9818:22:31",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 12734,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9818:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12735,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9818:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12742,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12740,
                        "name": "counter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12706,
                        "src": "9857:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "9843:13:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 12737,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9847:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12738,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9847:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 12741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9843:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9818:47:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12745,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12743,
                      "name": "counter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12706,
                      "src": "9874:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9884:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9874:11:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12746,
                  "nodeType": "ExpressionStatement",
                  "src": "9874:11:31"
                },
                {
                  "body": {
                    "id": 12775,
                    "nodeType": "Block",
                    "src": "9940:145:31",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12758,
                                "name": "dividends",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12090,
                                "src": "9957:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                                  "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                                }
                              },
                              "id": 12760,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12759,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12748,
                                "src": "9967:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9957:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dividend_$12087_storage",
                                "typeString": "struct EtherDividendCheckpoint.Dividend storage ref"
                              }
                            },
                            "id": 12761,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "checkpointId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12068,
                            "src": "9957:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12762,
                            "name": "_checkpointId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12699,
                            "src": "9986:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9957:42:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12774,
                        "nodeType": "IfStatement",
                        "src": "9953:123:31",
                        "trueBody": {
                          "id": 12773,
                          "nodeType": "Block",
                          "src": "10001:75:31",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 12764,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12736,
                                    "src": "10018:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 12766,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 12765,
                                    "name": "counter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12706,
                                    "src": "10024:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10018:14:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 12767,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12748,
                                  "src": "10035:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10018:18:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12769,
                              "nodeType": "ExpressionStatement",
                              "src": "10018:18:31"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "10053:9:31",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 12770,
                                  "name": "counter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12706,
                                  "src": "10053:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12772,
                              "nodeType": "ExpressionStatement",
                              "src": "10053:9:31"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12751,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12748,
                      "src": "9913:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12752,
                        "name": "dividends",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12090,
                        "src": "9917:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Dividend_$12087_storage_$dyn_storage",
                          "typeString": "struct EtherDividendCheckpoint.Dividend storage ref[] storage ref"
                        }
                      },
                      "id": 12753,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9917:16:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9913:20:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 12776,
                  "initializationExpression": {
                    "assignments": [
                      12748
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 12748,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 12780,
                        "src": "9898:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12747,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9898:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 12750,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9910:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9898:13:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 12756,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9935:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 12755,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12748,
                        "src": "9935:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12757,
                    "nodeType": "ExpressionStatement",
                    "src": "9935:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "9894:191:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12777,
                    "name": "index",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12736,
                    "src": "10100:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 12704,
                  "id": 12778,
                  "nodeType": "Return",
                  "src": "10093:12:31"
                }
              ]
            },
            "documentation": "@notice Get the index according to the checkpoint id\n@param _checkpointId Checkpoint id to query\n@return uint256",
            "id": 12780,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getDividendIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12699,
                  "name": "_checkpointId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12780,
                  "src": "9556:21:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9556:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9555:23:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12703,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12780,
                  "src": "9599:9:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 12701,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9599:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 12702,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9599:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9598:11:31"
            },
            "scope": 12806,
            "src": "9530:582:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12804,
              "nodeType": "Block",
              "src": "10292:138:31",
              "statements": [
                {
                  "assignments": [
                    12789
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12789,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 12805,
                      "src": "10302:31:31",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 12787,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10302:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12788,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10302:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12795,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 12793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10350:1:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 12792,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "10336:13:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 12790,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10340:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12791,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10340:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 12794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10336:16:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10302:50:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12796,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12789,
                        "src": "10362:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 12798,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10377:1:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10362:17:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12799,
                      "name": "DISTRIBUTE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12066,
                      "src": "10382:10:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10362:30:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12801,
                  "nodeType": "ExpressionStatement",
                  "src": "10362:30:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12802,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12789,
                    "src": "10409:14:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 12785,
                  "id": 12803,
                  "nodeType": "Return",
                  "src": "10402:21:31"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with STO\n@return bytes32 array",
            "id": 12805,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12781,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10258:2:31"
            },
            "payable": false,
            "returnParameters": {
              "id": 12785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12784,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12805,
                  "src": "10281:9:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 12782,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "10281:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 12783,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "10281:9:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10280:11:31"
            },
            "scope": 12806,
            "src": "10235:195:31",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          }
        ],
        "scope": 12807,
        "src": "675:9758:31"
      }
    ],
    "src": "0:10434:31"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:12.446Z"
}