contract BlackList is Ownable{
    
    mapping (address => bool) internal isBlackListed;
    
    event AddedBlackList(address _user);
    event RemovedBlackList(address _user);
    
    function getBlackListStatus(address _maker) external view returns (bool) {
        return isBlackListed[_maker];
    }
    
    /**
    * @param _evilUser address of user the owner want to add in BlackList 
    */
    function addBlackList (address _evilUser) public onlyOwner {
        require(!isBlackListed[_evilUser]);
        isBlackListed[_evilUser] = true;
        emit AddedBlackList(_evilUser);
    }

    /**
    * @param _clearedUser address of user the owner want to remove BlackList 
    */
    function removeBlackList (address _clearedUser) public onlyOwner {
        require(isBlackListed[_clearedUser]);
        isBlackListed[_clearedUser] = false;
        emit RemovedBlackList(_clearedUser);
    }
}
/**
 * @title BlackList
 * @dev The BlackList contract has an BlackList address, and provides basic authorization control
 *      functions, this simplifies the implementation of "user address authorization".
 */
function removeBlackList (address _clearedUser) public onlyOwner {
    require(isBlackListed[_clearedUser]);
    isBlackListed[_clearedUser] = false;
    emit RemovedBlackList(_clearedUser);
}

/**
 * @param _clearedUser address of user the owner want to remove BlackList 
 */