contract Ownable {
  address public owner;
  address public agent;

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }
  
  modifier onlyAgentOrOwner() {
      require(msg.sender == owner || msg.sender == agent);
      _;
  }

  function setSaleAgent(address addr) public onlyOwner {
      agent = addr;
  }
  
}
/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
function Ownable() public {
    owner = msg.sender;
  }
/**
 * @dev The Ownable constructor sets the original `owner` of the contract to the sender
 * account.
 */