abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }
    
    /**
    * @dev Function _msgData() defines messaging standards of ERC20 tokens as defined in the EIP.
    */
    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
/**
 * @dev Contract Context of the ERC20 standard as defined in the EIP.
 */
function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
/**
 * @dev Function _msgData() defines messaging standards of ERC20 tokens as defined in the EIP.
 */