contract ERC20Capped is ERC20Mintable {

  uint256 private _cap;

  constructor(uint256 cap)
    public
  {
    require(cap > 0);
    _cap = cap;
  }

  /**
   * @return the cap for the token minting.
   */
  function cap() public view returns(uint256) {
    return _cap;
  }

  function _mint(address account, uint256 value) internal {
    require(totalSupply().add(value) <= _cap);
    super._mint(account, value);
  }
}
/**
 * @title Capped token
 * @dev Mintable token with a token cap.
 */
function cap() public view returns(uint256) {
  return _cap;
}

/**
 * @return the cap for the token minting.
 */