contract Permissions {

// A list of owners which will be saved as a list here, 
// and the values are the owner’s names. 

  mapping (address=>bool) public permits;
  
// all events will be saved as log files
  

  event AddPermit(address _addr);
  event RemovePermit(address _addr);
  /**
   * @dev Ownable constructor , initializes sender’s account and 
   * set as owner according to default value according to contract
   *
   */
   constructor() public {
    permits[msg.sender] = true;
  }

// Function to check if the person is listed in a group of Owners and determine
// if the person has the any permissions in this smart contract such as Exec permission.
  
  modifier onlyPermits(){
    require(permits[msg.sender] == true);
    _;
  }

// this function is to check of the given address is allowed to call/execute the particular function
// return true if the given address has right to execute the function.
// for transparency purpose, anyone can use this to trace/monitor the behaviors of this ShuttleOne smart contract.

  function isPermit(address _addr) public view returns(bool){
    return permits[_addr];
  }

}
function isPermit(address _addr) public view returns(bool){
  return permits[_addr];
}

// this function is to check of the given address is allowed to call/execute the particular function
// return true if the given address has right to execute the function.
// for transparency purpose, anyone can use this to trace/monitor the behaviors of this ShuttleOne smart contract.