ERC-20
Overview
Max Total Supply
21,000,000,000 CTL
Holders
58
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,232,466.896656567 CTLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
CryptoTwitterLegends
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; import "Ownable.sol"; interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract CryptoTwitterLegends is Context, Ownable, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 21000000000 * 10**9; string private _name = "CryptoTwitterLegends"; string private _symbol = "CTL"; uint8 private _decimals = 9; uint256 public _marketingFee = 10; uint256 private _previousMarketingFee = _marketingFee; address public addrMarketing; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; constructor () { _tOwned[_msgSender()] = _tTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)); uniswapV2Router = _uniswapV2Router; addrMarketing = payable(0x1C4389610db6CDf116dd23c1D3Acff01e8B4aaDa); _isExcludedFromFee[address(_msgSender())] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[address(0x26311D55ACcAcABBc6f8190E0E869d6264F907F9)] = false; _isExcludedFromFee[address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function setMarketingAddress(address _marketing) public onlyOwner { _isExcludedFromFee[addrMarketing] = false; addrMarketing = _marketing; _isExcludedFromFee[addrMarketing] = true; } function setMarketingFee(uint256 _fee) public onlyOwner { _marketingFee = _fee; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function _getValues(uint256 tAmount) private view returns (uint256, uint256) { (uint256 tTransferAmount, uint256 tMarketing) = _getTValues(tAmount); return (tTransferAmount, tMarketing); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256) { uint256 tMarketingFee = calculateMarketingFee(tAmount); uint256 tTransferAmount = tAmount.sub(tMarketingFee); return (tTransferAmount, tMarketingFee); } function calculateMarketingFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_marketingFee).div( 10**2 ); } function removeAllFee() private { if(_marketingFee == 0) return; _previousMarketingFee = _marketingFee; _marketingFee = 0; } function restoreAllFee() private { _marketingFee = _previousMarketingFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); //indicates if fee should be deducted from transfer bool takeFee = false; if((to == uniswapV2Pair || from == uniswapV2Pair && !(_isExcludedFromFee[_msgSender()]))) { takeFee = true; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); (uint256 tAmount, uint256 tMarketing) = _getValues(amount); _takeMarketingFee(tMarketing); _tOwned[sender] = _tOwned[sender].sub(tAmount); _tOwned[recipient] = _tOwned[recipient].add(tAmount); emit Transfer(sender, recipient, tAmount); if(!takeFee) restoreAllFee(); } function _takeMarketingFee(uint256 tAmount) private { _tOwned[addrMarketing] = _tOwned[addrMarketing].add(tAmount); emit Transfer(_msgSender(), addrMarketing, tAmount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "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. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addrMarketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c06040526801236efcbcbb3400006006556040518060400160405280601481526020017f43727970746f547769747465724c6567656e6473000000000000000000000000815250600790805190602001906200005e9291906200063b565b506040518060400160405280600381526020017f43544c000000000000000000000000000000000000000000000000000000000081525060089080519060200190620000ac9291906200063b565b5060098060006101000a81548160ff021916908360ff160217905550600a8055600a54600b55348015620000df57600080fd5b5062000100620000f46200056f60201b60201c565b6200057760201b60201c565b60065460016000620001176200056f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b557600080fd5b505afa158015620001ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f0919062000702565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b81526004016200024092919062000750565b602060405180830381600087803b1580156200025b57600080fd5b505af115801562000270573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000296919062000702565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050731c4389610db6cdf116dd23c1d3acff01e8b4aada600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006200036e6200056f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360007326311d55accacabbc6f8190e0e869d6264f907f973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004ff6200056f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200056091906200077d565b60405180910390a35062000857565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200064990620007d8565b90600052602060002090601f0160209004810192826200066d5760008555620006b9565b82601f106200068857805160ff1916838001178555620006b9565b82800160010185558215620006b9579182015b82811115620006b85782518255916020019190600101906200069b565b5b509050620006c89190620006cc565b5090565b5b80821115620006e7576000816000905550600101620006cd565b5090565b600081519050620006fc816200083d565b92915050565b6000602082840312156200071557600080fd5b60006200072584828501620006eb565b91505092915050565b62000739816200079a565b82525050565b6200074a81620007ce565b82525050565b60006040820190506200076760008301856200072e565b6200077660208301846200072e565b9392505050565b60006020820190506200079460008301846200073f565b92915050565b6000620007a782620007ae565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006002820490506001821680620007f157607f821691505b602082108114156200080857620008076200080e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000848816200079a565b81146200085457600080fd5b50565b60805160601c60a05160601c61241962000891600039600081816107af0152818161117701526111cc0152600061050101526124196000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063625e764c116100b857806395d89b411161007c57806395d89b4114610367578063a457c2d714610385578063a9059cbb146103b5578063d5883189146103e5578063dd62ed3e14610403578063f2fde38b1461043357610142565b8063625e764c146102d757806370a08231146102f3578063715018a6146103235780638da5cb5b1461032d578063906e9dd01461034b57610142565b806323b872dd1161010a57806323b872dd146101ef578063313ce5671461021f578063395093511461023d578063437823ec1461026d57806349bd5a5e146102895780635342acb4146102a757610142565b806306fdde0314610147578063095ea7b3146101655780631694505e1461019557806318160ddd146101b357806322976e0d146101d1575b600080fd5b61014f61044f565b60405161015c9190611cc8565b60405180910390f35b61017f600480360381019061017a9190611a53565b6104e1565b60405161018c9190611c92565b60405180910390f35b61019d6104ff565b6040516101aa9190611cad565b60405180910390f35b6101bb610523565b6040516101c89190611e0a565b60405180910390f35b6101d961052d565b6040516101e69190611e0a565b60405180910390f35b61020960048036038101906102049190611a04565b610533565b6040516102169190611c92565b60405180910390f35b61022761060c565b6040516102349190611e25565b60405180910390f35b61025760048036038101906102529190611a53565b610623565b6040516102649190611c92565b60405180910390f35b6102876004803603810190610282919061199f565b6106d6565b005b6102916107ad565b60405161029e9190611c77565b60405180910390f35b6102c160048036038101906102bc919061199f565b6107d1565b6040516102ce9190611c92565b60405180910390f35b6102f160048036038101906102ec9190611a8f565b610827565b005b61030d6004803603810190610308919061199f565b6108ad565b60405161031a9190611e0a565b60405180910390f35b61032b6108f6565b005b61033561097e565b6040516103429190611c77565b60405180910390f35b6103656004803603810190610360919061199f565b6109a7565b005b61036f610b5b565b60405161037c9190611cc8565b60405180910390f35b61039f600480360381019061039a9190611a53565b610bed565b6040516103ac9190611c92565b60405180910390f35b6103cf60048036038101906103ca9190611a53565b610cba565b6040516103dc9190611c92565b60405180910390f35b6103ed610cd8565b6040516103fa9190611c77565b60405180910390f35b61041d600480360381019061041891906119c8565b610cfe565b60405161042a9190611e0a565b60405180910390f35b61044d6004803603810190610448919061199f565b610d85565b005b60606007805461045e9061201d565b80601f016020809104026020016040519081016040528092919081815260200182805461048a9061201d565b80156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60006104f56104ee610e7d565b8484610e85565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600654905090565b600a5481565b6000610540848484611050565b6106018461054c610e7d565b6105fc8560405180606001604052806028815260200161239760289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105b2610e7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112939092919063ffffffff16565b610e85565b600190509392505050565b6000600960009054906101000a900460ff16905090565b60006106cc610630610e7d565b846106c78560026000610641610e7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112f790919063ffffffff16565b610e85565b6001905092915050565b6106de610e7d565b73ffffffffffffffffffffffffffffffffffffffff166106fc61097e565b73ffffffffffffffffffffffffffffffffffffffff1614610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990611d8a565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61082f610e7d565b73ffffffffffffffffffffffffffffffffffffffff1661084d61097e565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90611d8a565b60405180910390fd5b80600a8190555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108fe610e7d565b73ffffffffffffffffffffffffffffffffffffffff1661091c61097e565b73ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990611d8a565b60405180910390fd5b61097c6000611355565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109af610e7d565b73ffffffffffffffffffffffffffffffffffffffff166109cd61097e565b73ffffffffffffffffffffffffffffffffffffffff1614610a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1a90611d8a565b60405180910390fd5b600060036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060088054610b6a9061201d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b969061201d565b8015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b5050505050905090565b6000610cb0610bfa610e7d565b84610cab856040518060600160405280602581526020016123bf6025913960026000610c24610e7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112939092919063ffffffff16565b610e85565b6001905092915050565b6000610cce610cc7610e7d565b8484611050565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d8d610e7d565b73ffffffffffffffffffffffffffffffffffffffff16610dab61097e565b73ffffffffffffffffffffffffffffffffffffffff1614610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df890611d8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6890611d0a565b60405180910390fd5b610e7a81611355565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec90611dea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c90611d2a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110439190611e0a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790611dca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112790611cea565b60405180910390fd5b60008111611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90611daa565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061127757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561127657506003600061122c610e7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561128157600190505b61128d84848484611419565b50505050565b60008383111582906112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d29190611cc8565b60405180910390fd5b50600083856112ea9190611f3d565b9050809150509392505050565b60008082846113069190611e5c565b90508381101561134b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290611d4a565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80611427576114266115e5565b5b60008061143384611609565b9150915061144081611629565b61149282600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179390919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061152782600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112f790919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115c79190611e0a565b60405180910390a3826115dd576115dc6117dd565b5b505050505050565b6000600a5414156115f557611607565b600a54600b819055506000600a819055505b565b600080600080611618856117e8565b915091508181935093505050915091565b61169d8160016000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112f790919063ffffffff16565b60016000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611743610e7d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117889190611e0a565b60405180910390a350565b60006117d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611293565b905092915050565b600b54600a81905550565b60008060006117f68461181c565b9050600061180d828661179390919063ffffffff16565b90508082935093505050915091565b60006118466064611838600a548561184d90919063ffffffff16565b6118c890919063ffffffff16565b9050919050565b60008083141561186057600090506118c2565b6000828461186e9190611ee3565b905082848261187d9190611eb2565b146118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b490611d6a565b60405180910390fd5b809150505b92915050565b600061190a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611912565b905092915050565b60008083118290611959576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119509190611cc8565b60405180910390fd5b50600083856119689190611eb2565b9050809150509392505050565b60008135905061198481612368565b92915050565b6000813590506119998161237f565b92915050565b6000602082840312156119b157600080fd5b60006119bf84828501611975565b91505092915050565b600080604083850312156119db57600080fd5b60006119e985828601611975565b92505060206119fa85828601611975565b9150509250929050565b600080600060608486031215611a1957600080fd5b6000611a2786828701611975565b9350506020611a3886828701611975565b9250506040611a498682870161198a565b9150509250925092565b60008060408385031215611a6657600080fd5b6000611a7485828601611975565b9250506020611a858582860161198a565b9150509250929050565b600060208284031215611aa157600080fd5b6000611aaf8482850161198a565b91505092915050565b611ac181611f71565b82525050565b611ad081611f83565b82525050565b611adf81611fc6565b82525050565b6000611af082611e40565b611afa8185611e4b565b9350611b0a818560208601611fea565b611b13816120dc565b840191505092915050565b6000611b2b602383611e4b565b9150611b36826120ed565b604082019050919050565b6000611b4e602683611e4b565b9150611b598261213c565b604082019050919050565b6000611b71602283611e4b565b9150611b7c8261218b565b604082019050919050565b6000611b94601b83611e4b565b9150611b9f826121da565b602082019050919050565b6000611bb7602183611e4b565b9150611bc282612203565b604082019050919050565b6000611bda602083611e4b565b9150611be582612252565b602082019050919050565b6000611bfd602983611e4b565b9150611c088261227b565b604082019050919050565b6000611c20602583611e4b565b9150611c2b826122ca565b604082019050919050565b6000611c43602483611e4b565b9150611c4e82612319565b604082019050919050565b611c6281611faf565b82525050565b611c7181611fb9565b82525050565b6000602082019050611c8c6000830184611ab8565b92915050565b6000602082019050611ca76000830184611ac7565b92915050565b6000602082019050611cc26000830184611ad6565b92915050565b60006020820190508181036000830152611ce28184611ae5565b905092915050565b60006020820190508181036000830152611d0381611b1e565b9050919050565b60006020820190508181036000830152611d2381611b41565b9050919050565b60006020820190508181036000830152611d4381611b64565b9050919050565b60006020820190508181036000830152611d6381611b87565b9050919050565b60006020820190508181036000830152611d8381611baa565b9050919050565b60006020820190508181036000830152611da381611bcd565b9050919050565b60006020820190508181036000830152611dc381611bf0565b9050919050565b60006020820190508181036000830152611de381611c13565b9050919050565b60006020820190508181036000830152611e0381611c36565b9050919050565b6000602082019050611e1f6000830184611c59565b92915050565b6000602082019050611e3a6000830184611c68565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611e6782611faf565b9150611e7283611faf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ea757611ea661204f565b5b828201905092915050565b6000611ebd82611faf565b9150611ec883611faf565b925082611ed857611ed761207e565b5b828204905092915050565b6000611eee82611faf565b9150611ef983611faf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611f3257611f3161204f565b5b828202905092915050565b6000611f4882611faf565b9150611f5383611faf565b925082821015611f6657611f6561204f565b5b828203905092915050565b6000611f7c82611f8f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611fd182611fd8565b9050919050565b6000611fe382611f8f565b9050919050565b60005b83811015612008578082015181840152602081019050611fed565b83811115612017576000848401525b50505050565b6000600282049050600182168061203557607f821691505b60208210811415612049576120486120ad565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61237181611f71565b811461237c57600080fd5b50565b61238881611faf565b811461239357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122073da3289112173224c3788ce6f2bc13c7c73f152b98e6519b745f4034dfe3b1064736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063625e764c116100b857806395d89b411161007c57806395d89b4114610367578063a457c2d714610385578063a9059cbb146103b5578063d5883189146103e5578063dd62ed3e14610403578063f2fde38b1461043357610142565b8063625e764c146102d757806370a08231146102f3578063715018a6146103235780638da5cb5b1461032d578063906e9dd01461034b57610142565b806323b872dd1161010a57806323b872dd146101ef578063313ce5671461021f578063395093511461023d578063437823ec1461026d57806349bd5a5e146102895780635342acb4146102a757610142565b806306fdde0314610147578063095ea7b3146101655780631694505e1461019557806318160ddd146101b357806322976e0d146101d1575b600080fd5b61014f61044f565b60405161015c9190611cc8565b60405180910390f35b61017f600480360381019061017a9190611a53565b6104e1565b60405161018c9190611c92565b60405180910390f35b61019d6104ff565b6040516101aa9190611cad565b60405180910390f35b6101bb610523565b6040516101c89190611e0a565b60405180910390f35b6101d961052d565b6040516101e69190611e0a565b60405180910390f35b61020960048036038101906102049190611a04565b610533565b6040516102169190611c92565b60405180910390f35b61022761060c565b6040516102349190611e25565b60405180910390f35b61025760048036038101906102529190611a53565b610623565b6040516102649190611c92565b60405180910390f35b6102876004803603810190610282919061199f565b6106d6565b005b6102916107ad565b60405161029e9190611c77565b60405180910390f35b6102c160048036038101906102bc919061199f565b6107d1565b6040516102ce9190611c92565b60405180910390f35b6102f160048036038101906102ec9190611a8f565b610827565b005b61030d6004803603810190610308919061199f565b6108ad565b60405161031a9190611e0a565b60405180910390f35b61032b6108f6565b005b61033561097e565b6040516103429190611c77565b60405180910390f35b6103656004803603810190610360919061199f565b6109a7565b005b61036f610b5b565b60405161037c9190611cc8565b60405180910390f35b61039f600480360381019061039a9190611a53565b610bed565b6040516103ac9190611c92565b60405180910390f35b6103cf60048036038101906103ca9190611a53565b610cba565b6040516103dc9190611c92565b60405180910390f35b6103ed610cd8565b6040516103fa9190611c77565b60405180910390f35b61041d600480360381019061041891906119c8565b610cfe565b60405161042a9190611e0a565b60405180910390f35b61044d6004803603810190610448919061199f565b610d85565b005b60606007805461045e9061201d565b80601f016020809104026020016040519081016040528092919081815260200182805461048a9061201d565b80156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60006104f56104ee610e7d565b8484610e85565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600654905090565b600a5481565b6000610540848484611050565b6106018461054c610e7d565b6105fc8560405180606001604052806028815260200161239760289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105b2610e7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112939092919063ffffffff16565b610e85565b600190509392505050565b6000600960009054906101000a900460ff16905090565b60006106cc610630610e7d565b846106c78560026000610641610e7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112f790919063ffffffff16565b610e85565b6001905092915050565b6106de610e7d565b73ffffffffffffffffffffffffffffffffffffffff166106fc61097e565b73ffffffffffffffffffffffffffffffffffffffff1614610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990611d8a565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000c25c3f645fc47b9942f62bf1a6a75c5170c8726b81565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61082f610e7d565b73ffffffffffffffffffffffffffffffffffffffff1661084d61097e565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90611d8a565b60405180910390fd5b80600a8190555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108fe610e7d565b73ffffffffffffffffffffffffffffffffffffffff1661091c61097e565b73ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990611d8a565b60405180910390fd5b61097c6000611355565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109af610e7d565b73ffffffffffffffffffffffffffffffffffffffff166109cd61097e565b73ffffffffffffffffffffffffffffffffffffffff1614610a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1a90611d8a565b60405180910390fd5b600060036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060088054610b6a9061201d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b969061201d565b8015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b5050505050905090565b6000610cb0610bfa610e7d565b84610cab856040518060600160405280602581526020016123bf6025913960026000610c24610e7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112939092919063ffffffff16565b610e85565b6001905092915050565b6000610cce610cc7610e7d565b8484611050565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d8d610e7d565b73ffffffffffffffffffffffffffffffffffffffff16610dab61097e565b73ffffffffffffffffffffffffffffffffffffffff1614610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df890611d8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6890611d0a565b60405180910390fd5b610e7a81611355565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec90611dea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c90611d2a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110439190611e0a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790611dca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112790611cea565b60405180910390fd5b60008111611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90611daa565b60405180910390fd5b60007f000000000000000000000000c25c3f645fc47b9942f62bf1a6a75c5170c8726b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061127757507f000000000000000000000000c25c3f645fc47b9942f62bf1a6a75c5170c8726b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561127657506003600061122c610e7d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561128157600190505b61128d84848484611419565b50505050565b60008383111582906112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d29190611cc8565b60405180910390fd5b50600083856112ea9190611f3d565b9050809150509392505050565b60008082846113069190611e5c565b90508381101561134b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290611d4a565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80611427576114266115e5565b5b60008061143384611609565b9150915061144081611629565b61149282600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179390919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061152782600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112f790919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115c79190611e0a565b60405180910390a3826115dd576115dc6117dd565b5b505050505050565b6000600a5414156115f557611607565b600a54600b819055506000600a819055505b565b600080600080611618856117e8565b915091508181935093505050915091565b61169d8160016000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112f790919063ffffffff16565b60016000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611743610e7d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117889190611e0a565b60405180910390a350565b60006117d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611293565b905092915050565b600b54600a81905550565b60008060006117f68461181c565b9050600061180d828661179390919063ffffffff16565b90508082935093505050915091565b60006118466064611838600a548561184d90919063ffffffff16565b6118c890919063ffffffff16565b9050919050565b60008083141561186057600090506118c2565b6000828461186e9190611ee3565b905082848261187d9190611eb2565b146118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b490611d6a565b60405180910390fd5b809150505b92915050565b600061190a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611912565b905092915050565b60008083118290611959576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119509190611cc8565b60405180910390fd5b50600083856119689190611eb2565b9050809150509392505050565b60008135905061198481612368565b92915050565b6000813590506119998161237f565b92915050565b6000602082840312156119b157600080fd5b60006119bf84828501611975565b91505092915050565b600080604083850312156119db57600080fd5b60006119e985828601611975565b92505060206119fa85828601611975565b9150509250929050565b600080600060608486031215611a1957600080fd5b6000611a2786828701611975565b9350506020611a3886828701611975565b9250506040611a498682870161198a565b9150509250925092565b60008060408385031215611a6657600080fd5b6000611a7485828601611975565b9250506020611a858582860161198a565b9150509250929050565b600060208284031215611aa157600080fd5b6000611aaf8482850161198a565b91505092915050565b611ac181611f71565b82525050565b611ad081611f83565b82525050565b611adf81611fc6565b82525050565b6000611af082611e40565b611afa8185611e4b565b9350611b0a818560208601611fea565b611b13816120dc565b840191505092915050565b6000611b2b602383611e4b565b9150611b36826120ed565b604082019050919050565b6000611b4e602683611e4b565b9150611b598261213c565b604082019050919050565b6000611b71602283611e4b565b9150611b7c8261218b565b604082019050919050565b6000611b94601b83611e4b565b9150611b9f826121da565b602082019050919050565b6000611bb7602183611e4b565b9150611bc282612203565b604082019050919050565b6000611bda602083611e4b565b9150611be582612252565b602082019050919050565b6000611bfd602983611e4b565b9150611c088261227b565b604082019050919050565b6000611c20602583611e4b565b9150611c2b826122ca565b604082019050919050565b6000611c43602483611e4b565b9150611c4e82612319565b604082019050919050565b611c6281611faf565b82525050565b611c7181611fb9565b82525050565b6000602082019050611c8c6000830184611ab8565b92915050565b6000602082019050611ca76000830184611ac7565b92915050565b6000602082019050611cc26000830184611ad6565b92915050565b60006020820190508181036000830152611ce28184611ae5565b905092915050565b60006020820190508181036000830152611d0381611b1e565b9050919050565b60006020820190508181036000830152611d2381611b41565b9050919050565b60006020820190508181036000830152611d4381611b64565b9050919050565b60006020820190508181036000830152611d6381611b87565b9050919050565b60006020820190508181036000830152611d8381611baa565b9050919050565b60006020820190508181036000830152611da381611bcd565b9050919050565b60006020820190508181036000830152611dc381611bf0565b9050919050565b60006020820190508181036000830152611de381611c13565b9050919050565b60006020820190508181036000830152611e0381611c36565b9050919050565b6000602082019050611e1f6000830184611c59565b92915050565b6000602082019050611e3a6000830184611c68565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611e6782611faf565b9150611e7283611faf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ea757611ea661204f565b5b828201905092915050565b6000611ebd82611faf565b9150611ec883611faf565b925082611ed857611ed761207e565b5b828204905092915050565b6000611eee82611faf565b9150611ef983611faf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611f3257611f3161204f565b5b828202905092915050565b6000611f4882611faf565b9150611f5383611faf565b925082821015611f6657611f6561204f565b5b828203905092915050565b6000611f7c82611f8f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611fd182611fd8565b9050919050565b6000611fe382611f8f565b9050919050565b60005b83811015612008578082015181840152602081019050611fed565b83811115612017576000848401525b50505050565b6000600282049050600182168061203557607f821691505b60208210811415612049576120486120ad565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61237181611f71565b811461237c57600080fd5b50565b61238881611faf565b811461239357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122073da3289112173224c3788ce6f2bc13c7c73f152b98e6519b745f4034dfe3b1064736f6c63430008040033
Deployed Bytecode Sourcemap
21514:6729:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23240:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24042:158;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22267:51;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23505:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22133:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24206:309;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23418:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24521:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25329:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22324:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26343:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25230:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23604:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1659:101:2;;;:::i;:::-;;1027:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25014:210:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23327:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24742:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23725:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22232:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23895:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1909:198:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23240:81:0;23277:13;23309:5;23302:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23240:81;:::o;24042:158::-;24117:4;24133:39;24142:12;:10;:12::i;:::-;24156:7;24165:6;24133:8;:39::i;:::-;24189:4;24182:11;;24042:158;;;;:::o;22267:51::-;;;:::o;23505:93::-;23558:7;23584;;23577:14;;23505:93;:::o;22133:33::-;;;;:::o;24206:309::-;24304:4;24320:36;24330:6;24338:9;24349:6;24320:9;:36::i;:::-;24366:121;24375:6;24383:12;:10;:12::i;:::-;24397:89;24435:6;24397:89;;;;;;;;;;;;;;;;;:11;:19;24409:6;24397:19;;;;;;;;;;;;;;;:33;24417:12;:10;:12::i;:::-;24397:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24366:8;:121::i;:::-;24504:4;24497:11;;24206:309;;;;;:::o;23418:81::-;23459:5;23483:9;;;;;;;;;;;23476:16;;23418:81;:::o;24521:215::-;24609:4;24625:83;24634:12;:10;:12::i;:::-;24648:7;24657:50;24696:10;24657:11;:25;24669:12;:10;:12::i;:::-;24657:25;;;;;;;;;;;;;;;:34;24683:7;24657:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;24625:8;:83::i;:::-;24725:4;24718:11;;24521:215;;;;:::o;25329:109::-;1250:12:2;:10;:12::i;:::-;1239:23;;:7;:5;:7::i;:::-;:23;;;1231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25427:4:0::1;25397:18;:27;25416:7;25397:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;25329:109:::0;:::o;22324:38::-;;;:::o;26343:121::-;26407:4;26430:18;:27;26449:7;26430:27;;;;;;;;;;;;;;;;;;;;;;;;;26423:34;;26343:121;;;:::o;25230:93::-;1250:12:2;:10;:12::i;:::-;1239:23;;:7;:5;:7::i;:::-;:23;;;1231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25312:4:0::1;25296:13;:20;;;;25230:93:::0;:::o;23604:115::-;23670:7;23696;:16;23704:7;23696:16;;;;;;;;;;;;;;;;23689:23;;23604:115;;;:::o;1659:101:2:-;1250:12;:10;:12::i;:::-;1239:23;;:7;:5;:7::i;:::-;:23;;;1231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1723:30:::1;1750:1;1723:18;:30::i;:::-;1659:101::o:0;1027:85::-;1073:7;1099:6;;;;;;;;;;;1092:13;;1027:85;:::o;25014:210:0:-;1250:12:2;:10;:12::i;:::-;1239:23;;:7;:5;:7::i;:::-;:23;;;1231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25126:5:0::1;25090:18;:33;25109:13;;;;;;;;;;;25090:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;25157:10;25141:13;;:26;;;;;;;;;;;;;;;;;;25213:4;25177:18;:33;25196:13;;;;;;;;;;;25177:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;25014:210:::0;:::o;23327:85::-;23366:13;23398:7;23391:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23327:85;:::o;24742:266::-;24835:4;24851:129;24860:12;:10;:12::i;:::-;24874:7;24883:96;24922:15;24883:96;;;;;;;;;;;;;;;;;:11;:25;24895:12;:10;:12::i;:::-;24883:25;;;;;;;;;;;;;;;:34;24909:7;24883:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;24851:8;:129::i;:::-;24997:4;24990:11;;24742:266;;;;:::o;23725:164::-;23803:4;23819:42;23829:12;:10;:12::i;:::-;23843:9;23854:6;23819:9;:42::i;:::-;23878:4;23871:11;;23725:164;;;;:::o;22232:28::-;;;;;;;;;;;;;:::o;23895:141::-;23976:7;24002:11;:18;24014:5;24002:18;;;;;;;;;;;;;;;:27;24021:7;24002:27;;;;;;;;;;;;;;;;23995:34;;23895:141;;;;:::o;1909:198:2:-;1250:12;:10;:12::i;:::-;1239:23;;:7;:5;:7::i;:::-;:23;;;1231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2017:1:::1;1997:22;;:8;:22;;;;1989:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2072:28;2091:8;2072:18;:28::i;:::-;1909:198:::0;:::o;640:96:1:-;693:7;719:10;712:17;;640:96;:::o;26470:331:0:-;26579:1;26562:19;;:5;:19;;;;26554:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26659:1;26640:21;;:7;:21;;;;26632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26741:6;26711:11;:18;26723:5;26711:18;;;;;;;;;;;;;;;:27;26730:7;26711:27;;;;;;;;;;;;;;;:36;;;;26778:7;26762:32;;26771:5;26762:32;;;26787:6;26762:32;;;;;;:::i;:::-;;;;;;;;26470:331;;;:::o;26807:676::-;26940:1;26924:18;;:4;:18;;;;26916:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27016:1;27002:16;;:2;:16;;;;26994:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27085:1;27076:6;:10;27068:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27203:12;27244:13;27238:19;;:2;:19;;;:83;;;;27269:13;27261:21;;:4;:21;;;:60;;;;;27288:18;:32;27307:12;:10;:12::i;:::-;27288:32;;;;;;;;;;;;;;;;;;;;;;;;;27286:35;27261:60;27238:83;27234:129;;;27348:4;27338:14;;27234:129;27438:38;27453:4;27458:2;27461:6;27468:7;27438:14;:38::i;:::-;26807:676;;;;:::o;4276:187::-;4362:7;4394:1;4389;:6;;4397:12;4381:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4420:9;4436:1;4432;:5;;;;:::i;:::-;4420:17;;4455:1;4448:8;;;4276:187;;;;;:::o;3404:176::-;3462:7;3481:9;3497:1;3493;:5;;;;:::i;:::-;3481:17;;3521:1;3516;:6;;3508:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3572:1;3565:8;;;3404:176;;;;:::o;2261:187:2:-;2334:16;2353:6;;;;;;;;;;;2334:25;;2378:8;2369:6;;:17;;;;;;;;;;;;;;;;;;2432:8;2401:40;;2422:8;2401:40;;;;;;;;;;;;2261:187;;:::o;27561:483:0:-;27672:7;27668:39;;27693:14;:12;:14::i;:::-;27668:39;27719:15;27736:18;27758;27769:6;27758:10;:18::i;:::-;27718:58;;;;27786:29;27804:10;27786:17;:29::i;:::-;27844:28;27864:7;27844;:15;27852:6;27844:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27826:7;:15;27834:6;27826:15;;;;;;;;;;;;;;;:46;;;;27903:31;27926:7;27903;:18;27911:9;27903:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;27882:7;:18;27890:9;27882:18;;;;;;;;;;;;;;;:52;;;;27967:9;27950:36;;27959:6;27950:36;;;27978:7;27950:36;;;;;;:::i;:::-;;;;;;;;28001:7;27997:40;;28022:15;:13;:15::i;:::-;27997:40;27561:483;;;;;;:::o;26092:152::-;26154:1;26137:13;;:18;26134:30;;;26157:7;;26134:30;26197:13;;26173:21;:37;;;;26236:1;26220:13;:17;;;;26092:152;:::o;25444:208::-;25503:7;25512;25532:23;25557:18;25579:20;25591:7;25579:11;:20::i;:::-;25531:68;;;;25617:15;25634:10;25609:36;;;;;;25444:208;;;:::o;28050:191::-;28137:35;28164:7;28137;:22;28145:13;;;;;;;;;;;28137:22;;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;28112:7;:22;28120:13;;;;;;;;;;;28112:22;;;;;;;;;;;;;;;:60;;;;28211:13;;;;;;;;;;;28188:46;;28197:12;:10;:12::i;:::-;28188:46;;;28226:7;28188:46;;;;;;:::i;:::-;;;;;;;;28050:191;:::o;3851:134::-;3909:7;3935:43;3939:1;3942;3935:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3928:50;;3851:134;;;;:::o;26250:87::-;26309:21;;26293:13;:37;;;;26250:87::o;25658:260::-;25718:7;25727;25746:21;25770:30;25792:7;25770:21;:30::i;:::-;25746:54;;25810:23;25836:26;25848:13;25836:7;:11;;:26;;;;:::i;:::-;25810:52;;25880:15;25897:13;25872:39;;;;;;25658:260;;;:::o;25924:162::-;25994:7;26020:59;26064:5;26020:26;26032:13;;26020:7;:11;;:26;;;;:::i;:::-;:30;;:59;;;;:::i;:::-;26013:66;;25924:162;;;:::o;4710:459::-;4768:7;5014:1;5009;:6;5005:45;;;5038:1;5031:8;;;;5005:45;5060:9;5076:1;5072;:5;;;;:::i;:::-;5060:17;;5104:1;5099;5095;:5;;;;:::i;:::-;:10;5087:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5161:1;5154:8;;;4710:459;;;;;:::o;5631:130::-;5689:7;5715:39;5719:1;5722;5715:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5708:46;;5631:130;;;;:::o;6243:272::-;6329:7;6360:1;6356;:5;6363:12;6348:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6386:9;6402:1;6398;:5;;;;:::i;:::-;6386:17;;6507:1;6500:8;;;6243:272;;;;;:::o;7:139:3:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;2008:6;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:118::-;2304:24;2322:5;2304:24;:::i;:::-;2299:3;2292:37;2282:53;;:::o;2341:109::-;2422:21;2437:5;2422:21;:::i;:::-;2417:3;2410:34;2400:50;;:::o;2456:185::-;2570:64;2628:5;2570:64;:::i;:::-;2565:3;2558:77;2548:93;;:::o;2647:364::-;2735:3;2763:39;2796:5;2763:39;:::i;:::-;2818:71;2882:6;2877:3;2818:71;:::i;:::-;2811:78;;2898:52;2943:6;2938:3;2931:4;2924:5;2920:16;2898:52;:::i;:::-;2975:29;2997:6;2975:29;:::i;:::-;2970:3;2966:39;2959:46;;2739:272;;;;;:::o;3017:366::-;3159:3;3180:67;3244:2;3239:3;3180:67;:::i;:::-;3173:74;;3256:93;3345:3;3256:93;:::i;:::-;3374:2;3369:3;3365:12;3358:19;;3163:220;;;:::o;3389:366::-;3531:3;3552:67;3616:2;3611:3;3552:67;:::i;:::-;3545:74;;3628:93;3717:3;3628:93;:::i;:::-;3746:2;3741:3;3737:12;3730:19;;3535:220;;;:::o;3761:366::-;3903:3;3924:67;3988:2;3983:3;3924:67;:::i;:::-;3917:74;;4000:93;4089:3;4000:93;:::i;:::-;4118:2;4113:3;4109:12;4102:19;;3907:220;;;:::o;4133:366::-;4275:3;4296:67;4360:2;4355:3;4296:67;:::i;:::-;4289:74;;4372:93;4461:3;4372:93;:::i;:::-;4490:2;4485:3;4481:12;4474:19;;4279:220;;;:::o;4505:366::-;4647:3;4668:67;4732:2;4727:3;4668:67;:::i;:::-;4661:74;;4744:93;4833:3;4744:93;:::i;:::-;4862:2;4857:3;4853:12;4846:19;;4651:220;;;:::o;4877:366::-;5019:3;5040:67;5104:2;5099:3;5040:67;:::i;:::-;5033:74;;5116:93;5205:3;5116:93;:::i;:::-;5234:2;5229:3;5225:12;5218:19;;5023:220;;;:::o;5249:366::-;5391:3;5412:67;5476:2;5471:3;5412:67;:::i;:::-;5405:74;;5488:93;5577:3;5488:93;:::i;:::-;5606:2;5601:3;5597:12;5590:19;;5395:220;;;:::o;5621:366::-;5763:3;5784:67;5848:2;5843:3;5784:67;:::i;:::-;5777:74;;5860:93;5949:3;5860:93;:::i;:::-;5978:2;5973:3;5969:12;5962:19;;5767:220;;;:::o;5993:366::-;6135:3;6156:67;6220:2;6215:3;6156:67;:::i;:::-;6149:74;;6232:93;6321:3;6232:93;:::i;:::-;6350:2;6345:3;6341:12;6334:19;;6139:220;;;:::o;6365:118::-;6452:24;6470:5;6452:24;:::i;:::-;6447:3;6440:37;6430:53;;:::o;6489:112::-;6572:22;6588:5;6572:22;:::i;:::-;6567:3;6560:35;6550:51;;:::o;6607:222::-;6700:4;6738:2;6727:9;6723:18;6715:26;;6751:71;6819:1;6808:9;6804:17;6795:6;6751:71;:::i;:::-;6705:124;;;;:::o;6835:210::-;6922:4;6960:2;6949:9;6945:18;6937:26;;6973:65;7035:1;7024:9;7020:17;7011:6;6973:65;:::i;:::-;6927:118;;;;:::o;7051:276::-;7171:4;7209:2;7198:9;7194:18;7186:26;;7222:98;7317:1;7306:9;7302:17;7293:6;7222:98;:::i;:::-;7176:151;;;;:::o;7333:313::-;7446:4;7484:2;7473:9;7469:18;7461:26;;7533:9;7527:4;7523:20;7519:1;7508:9;7504:17;7497:47;7561:78;7634:4;7625:6;7561:78;:::i;:::-;7553:86;;7451:195;;;;:::o;7652:419::-;7818:4;7856:2;7845:9;7841:18;7833:26;;7905:9;7899:4;7895:20;7891:1;7880:9;7876:17;7869:47;7933:131;8059:4;7933:131;:::i;:::-;7925:139;;7823:248;;;:::o;8077:419::-;8243:4;8281:2;8270:9;8266:18;8258:26;;8330:9;8324:4;8320:20;8316:1;8305:9;8301:17;8294:47;8358:131;8484:4;8358:131;:::i;:::-;8350:139;;8248:248;;;:::o;8502:419::-;8668:4;8706:2;8695:9;8691:18;8683:26;;8755:9;8749:4;8745:20;8741:1;8730:9;8726:17;8719:47;8783:131;8909:4;8783:131;:::i;:::-;8775:139;;8673:248;;;:::o;8927:419::-;9093:4;9131:2;9120:9;9116:18;9108:26;;9180:9;9174:4;9170:20;9166:1;9155:9;9151:17;9144:47;9208:131;9334:4;9208:131;:::i;:::-;9200:139;;9098:248;;;:::o;9352:419::-;9518:4;9556:2;9545:9;9541:18;9533:26;;9605:9;9599:4;9595:20;9591:1;9580:9;9576:17;9569:47;9633:131;9759:4;9633:131;:::i;:::-;9625:139;;9523:248;;;:::o;9777:419::-;9943:4;9981:2;9970:9;9966:18;9958:26;;10030:9;10024:4;10020:20;10016:1;10005:9;10001:17;9994:47;10058:131;10184:4;10058:131;:::i;:::-;10050:139;;9948:248;;;:::o;10202:419::-;10368:4;10406:2;10395:9;10391:18;10383:26;;10455:9;10449:4;10445:20;10441:1;10430:9;10426:17;10419:47;10483:131;10609:4;10483:131;:::i;:::-;10475:139;;10373:248;;;:::o;10627:419::-;10793:4;10831:2;10820:9;10816:18;10808:26;;10880:9;10874:4;10870:20;10866:1;10855:9;10851:17;10844:47;10908:131;11034:4;10908:131;:::i;:::-;10900:139;;10798:248;;;:::o;11052:419::-;11218:4;11256:2;11245:9;11241:18;11233:26;;11305:9;11299:4;11295:20;11291:1;11280:9;11276:17;11269:47;11333:131;11459:4;11333:131;:::i;:::-;11325:139;;11223:248;;;:::o;11477:222::-;11570:4;11608:2;11597:9;11593:18;11585:26;;11621:71;11689:1;11678:9;11674:17;11665:6;11621:71;:::i;:::-;11575:124;;;;:::o;11705:214::-;11794:4;11832:2;11821:9;11817:18;11809:26;;11845:67;11909:1;11898:9;11894:17;11885:6;11845:67;:::i;:::-;11799:120;;;;:::o;11925:99::-;11977:6;12011:5;12005:12;11995:22;;11984:40;;;:::o;12030:169::-;12114:11;12148:6;12143:3;12136:19;12188:4;12183:3;12179:14;12164:29;;12126:73;;;;:::o;12205:305::-;12245:3;12264:20;12282:1;12264:20;:::i;:::-;12259:25;;12298:20;12316:1;12298:20;:::i;:::-;12293:25;;12452:1;12384:66;12380:74;12377:1;12374:81;12371:2;;;12458:18;;:::i;:::-;12371:2;12502:1;12499;12495:9;12488:16;;12249:261;;;;:::o;12516:185::-;12556:1;12573:20;12591:1;12573:20;:::i;:::-;12568:25;;12607:20;12625:1;12607:20;:::i;:::-;12602:25;;12646:1;12636:2;;12651:18;;:::i;:::-;12636:2;12693:1;12690;12686:9;12681:14;;12558:143;;;;:::o;12707:348::-;12747:7;12770:20;12788:1;12770:20;:::i;:::-;12765:25;;12804:20;12822:1;12804:20;:::i;:::-;12799:25;;12992:1;12924:66;12920:74;12917:1;12914:81;12909:1;12902:9;12895:17;12891:105;12888:2;;;12999:18;;:::i;:::-;12888:2;13047:1;13044;13040:9;13029:20;;12755:300;;;;:::o;13061:191::-;13101:4;13121:20;13139:1;13121:20;:::i;:::-;13116:25;;13155:20;13173:1;13155:20;:::i;:::-;13150:25;;13194:1;13191;13188:8;13185:2;;;13199:18;;:::i;:::-;13185:2;13244:1;13241;13237:9;13229:17;;13106:146;;;;:::o;13258:96::-;13295:7;13324:24;13342:5;13324:24;:::i;:::-;13313:35;;13303:51;;;:::o;13360:90::-;13394:7;13437:5;13430:13;13423:21;13412:32;;13402:48;;;:::o;13456:126::-;13493:7;13533:42;13526:5;13522:54;13511:65;;13501:81;;;:::o;13588:77::-;13625:7;13654:5;13643:16;;13633:32;;;:::o;13671:86::-;13706:7;13746:4;13739:5;13735:16;13724:27;;13714:43;;;:::o;13763:180::-;13840:9;13873:64;13931:5;13873:64;:::i;:::-;13860:77;;13850:93;;;:::o;13949:140::-;14026:9;14059:24;14077:5;14059:24;:::i;:::-;14046:37;;14036:53;;;:::o;14095:307::-;14163:1;14173:113;14187:6;14184:1;14181:13;14173:113;;;14272:1;14267:3;14263:11;14257:18;14253:1;14248:3;14244:11;14237:39;14209:2;14206:1;14202:10;14197:15;;14173:113;;;14304:6;14301:1;14298:13;14295:2;;;14384:1;14375:6;14370:3;14366:16;14359:27;14295:2;14144:258;;;;:::o;14408:320::-;14452:6;14489:1;14483:4;14479:12;14469:22;;14536:1;14530:4;14526:12;14557:18;14547:2;;14613:4;14605:6;14601:17;14591:27;;14547:2;14675;14667:6;14664:14;14644:18;14641:38;14638:2;;;14694:18;;:::i;:::-;14638:2;14459:269;;;;:::o;14734:180::-;14782:77;14779:1;14772:88;14879:4;14876:1;14869:15;14903:4;14900:1;14893:15;14920:180;14968:77;14965:1;14958:88;15065:4;15062:1;15055:15;15089:4;15086:1;15079:15;15106:180;15154:77;15151:1;15144:88;15251:4;15248:1;15241:15;15275:4;15272:1;15265:15;15292:102;15333:6;15384:2;15380:7;15375:2;15368:5;15364:14;15360:28;15350:38;;15340:54;;;:::o;15400:222::-;15540:34;15536:1;15528:6;15524:14;15517:58;15609:5;15604:2;15596:6;15592:15;15585:30;15506:116;:::o;15628:225::-;15768:34;15764:1;15756:6;15752:14;15745:58;15837:8;15832:2;15824:6;15820:15;15813:33;15734:119;:::o;15859:221::-;15999:34;15995:1;15987:6;15983:14;15976:58;16068:4;16063:2;16055:6;16051:15;16044:29;15965:115;:::o;16086:177::-;16226:29;16222:1;16214:6;16210:14;16203:53;16192:71;:::o;16269:220::-;16409:34;16405:1;16397:6;16393:14;16386:58;16478:3;16473:2;16465:6;16461:15;16454:28;16375:114;:::o;16495:182::-;16635:34;16631:1;16623:6;16619:14;16612:58;16601:76;:::o;16683:228::-;16823:34;16819:1;16811:6;16807:14;16800:58;16892:11;16887:2;16879:6;16875:15;16868:36;16789:122;:::o;16917:224::-;17057:34;17053:1;17045:6;17041:14;17034:58;17126:7;17121:2;17113:6;17109:15;17102:32;17023:118;:::o;17147:223::-;17287:34;17283:1;17275:6;17271:14;17264:58;17356:6;17351:2;17343:6;17339:15;17332:31;17253:117;:::o;17376:122::-;17449:24;17467:5;17449:24;:::i;:::-;17442:5;17439:35;17429:2;;17488:1;17485;17478:12;17429:2;17419:79;:::o;17504:122::-;17577:24;17595:5;17577:24;:::i;:::-;17570:5;17567:35;17557:2;;17616:1;17613;17606:12;17557:2;17547:79;:::o
Swarm Source
ipfs://73da3289112173224c3788ce6f2bc13c7c73f152b98e6519b745f4034dfe3b10
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.