/**
__ __ ____ ____ ____ ______ ____ ________
/\ \ __/\ \ /\ _`\ /\ _`\ /\ _`\ /\__ _\ /\ _`\ /\_____ \
\ \ \/\ \ \ \ \ \ \L\_\ \ \ \L\ \ \ \ \L\ \ \/_/\ \/ \ \ \L\_\ \/____//'/'
\ \ \ \ \ \ \ \ \ _\L \ \ _ <' \ \ _ <' \ \ \ \ \ _\L //'/'
\ \ \_/ \_\ \ \ \ \L\ \ \ \ \L\ \ \ \ \L\ \ \_\ \__ \ \ \L\ \ //'/'___
\ `\___x___/ \ \____/ \ \____/ \ \____/ /\_____\ \ \____/ /\_______\
'\/__//__/ \/___/ \/___/ \/___/ \/_____/ \/___/ \/_______/
https://www.webbiezeth.com/
https://twitter.com/webbiezeth
*/
/**
// SPDX-License-Identifier: MIT
pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;
////// lib/openzeppelin-contracts/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)
/* pragma solidity ^0.8.0; */
/**
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
/**
////// lib/openzeppelin-contracts/contracts/access/Ownable.sol
// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)
/* pragma solidity ^0.8.0; */
/* import "../utils/Context.sol"; */
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/