ETH Price: $3,456.10 (-0.78%)
Gas: 2 Gwei

Token

BANGER (BANGER)
 

Overview

Max Total Supply

1,000,000,000,000 BANGER

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.562497651458755789 BANGER

Value
$0.00
0x51dd1e3917941ea5102fa7f0bc806ece3e1049bb
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BANGER

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-04
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

/*
BOOOOOOM! This is going to be a $BANGER.

https://banger.money/
https://t.me/BANGEReth
https://twitter.com/bangererc20
*/ 

abstract contract Context {
	function _msgSender() internal view virtual returns (address) {
		return msg.sender;
	}

	function _msgData() internal view virtual returns (bytes calldata) {
		this;
		return msg.data;
	}
}

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 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 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 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 IERC20 {
	function totalSupply() external view returns (uint256);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(
		address sender,
		address recipient,
		uint256 amount
	) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
	function name() external view returns (string memory);
	function symbol() external view returns (string memory);
	function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
	using SafeMath for uint256;
	mapping(address => uint256) private _balances;
	mapping(address => mapping(address => uint256)) private _allowances;
	uint256 private _totalSupply;
	string private _name;

	string private _symbol;

	constructor(string memory name_, string memory symbol_) {
		_name = name_;
		_symbol = symbol_;
	}

	function name() public view virtual override returns (string memory) {
		return _name;
	}

	function symbol() public view virtual override returns (string memory) {
		return _symbol;
	}

	function decimals() public view virtual override returns (uint8) {
		return 18;
	}

	function totalSupply() public view virtual override returns (uint256) {
		return _totalSupply;
	}

	function balanceOf(address account) public view virtual override returns (uint256) {
		return _balances[account];
	}

	function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
		_transfer(_msgSender(), recipient, amount);
		return true;
	}


	function allowance(address owner, address spender) public view virtual override returns (uint256) {
		return _allowances[owner][spender];
	}

	function approve(address spender, uint256 amount) public virtual override returns (bool) {
		_approve(_msgSender(), spender, amount);
		return true;
	}

	function transferFrom(
		address sender,
		address recipient,
		uint256 amount
	) public virtual 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 _transfer(

		address sender,
		address recipient,
		uint256 amount
		) internal virtual {
		require(sender != address(0), "ERC20: transfer from the zero address");
		require(recipient != address(0), "ERC20: transfer to the zero address");
		_beforeTokenTransfer(sender, recipient, amount);
		_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
		_balances[recipient] = _balances[recipient].add(amount);
		emit Transfer(sender, recipient, amount);
	}

	function _mint(address account, uint256 amount) internal virtual {
		require(account != address(0), "ERC20: mint to the zero address");

		_beforeTokenTransfer(address(0), account, amount);

		_totalSupply = _totalSupply.add(amount);
		_balances[account] = _balances[account].add(amount);

		emit Transfer(address(0), account, amount);
	}

	function _approve(
		address owner,

		address spender,
		uint256 amount
	) internal virtual {
		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 _beforeTokenTransfer(
		address from,
		address to,
		uint256 amount
	) internal virtual {}

}

library SafeMath {
	
	function add(uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		require(c >= a, "SafeMath: addition overflow");

		return c;
	}

	function sub(uint256 a, uint256 b) internal pure returns (uint256) {
		return sub(a, b, "SafeMath: subtraction overflow");
	}


	function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b <= a, errorMessage);
		uint256 c = a - b;

		return c;

	}

	function mul(uint256 a, uint256 b) internal pure returns (uint256) {
		if (a == 0) {
			return 0;
		}
		uint256 c = a * b;
		require(c / a == b, "SafeMath: multiplication overflow");

		return c;
	}

	function div(uint256 a, uint256 b) internal pure returns (uint256) {
		return div(a, b, "SafeMath: division by zero");
	}

	function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b > 0, errorMessage);
		uint256 c = a / b;
		return c;
	}

	function mod(uint256 a, uint256 b) internal pure returns (uint256) {
		return mod(a, b, "SafeMath: modulo by zero");
	}
	function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b != 0, errorMessage);
		return a % b;
	}
}

contract Ownable is Context {
	address private _owner;

	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

	constructor () {
		address msgSender = _msgSender();
		_owner = msgSender;
		emit OwnershipTransferred(address(0), msgSender);
	}

	function owner() public view returns (address) {
		return _owner;
	}

	modifier onlyOwner() {
		require(_owner == _msgSender(), "Ownable: caller is not the owner");
		_;
	}

	function renounceOwnership() public virtual onlyOwner {
		emit OwnershipTransferred(_owner, address(0));
		_owner = address(0);
	}
	function transferOwnership(address newOwner) public virtual onlyOwner {
		require(newOwner != address(0), "Ownable: new owner is the zero address");
		emit OwnershipTransferred(_owner, newOwner);
		_owner = newOwner;
	}
}

library SafeMathInt {
	int256 private constant MIN_INT256 = int256(1) << 255;
	int256 private constant MAX_INT256 = ~(int256(1) << 255);

	function mul(int256 a, int256 b) internal pure returns (int256) {
		int256 c = a * b;
		require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
		require((b == 0) || (c / b == a));
		return c;
	}

	function div(int256 a, int256 b) internal pure returns (int256) {
		require(b != -1 || a != MIN_INT256);
		return a / b;
	}

	function sub(int256 a, int256 b) internal pure returns (int256) {
		int256 c = a - b;
		require((b >= 0 && c <= a) || (b < 0 && c > a));
		return c;
	}

	function add(int256 a, int256 b) internal pure returns (int256) {
		int256 c = a + b;
		require((b >= 0 && c >= a) || (b < 0 && c < a));
		return c;
	}

	function abs(int256 a) internal pure returns (int256) {
		require(a != MIN_INT256);
		return a < 0 ? -a : a;
	}
	function toUint256Safe(int256 a) internal pure returns (uint256) {
		require(a >= 0);
		return uint256(a);
	}
}

library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
	int256 b = int256(a);
	require(b >= 0);
	return b;
}
}

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 BANGER is ERC20, Ownable {
	using SafeMath for uint256;

	IUniswapV2Router02 public immutable uniswapV2Router;

	address public immutable uniswapV2Pair;

	bool private swapping;

	address public marketingWallet;
	
	uint256 public maxTransactionAmount;
	uint256 public swapTokensAtAmount;

	uint256 public maxWallet;

	bool public swapEnabled = true;

	uint256 public buyTotalFees;
	uint256 public buyMarketingFee;
	
	uint256 public sellTotalFees;
	uint256 public sellMarketingFee;
	
	uint256 public tokensForMarketing;

	mapping (address => bool) private _isExcludedFromFees;
	mapping (address => bool) public _isExcludedMaxTransactionAmount;

	mapping (address => bool) public automatedMarketMakerPairs;
	event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
	event ExcludeFromFees(address indexed account, bool isExcluded);
	event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
	event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
	event BuyBackTriggered(uint256 amount);

	constructor() ERC20("BANGER", "BANGER") {
		address newOwner = address(owner());
		IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
		excludeFromMaxTransaction(address(_uniswapV2Router), true);
		uniswapV2Router = _uniswapV2Router;
		uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
		excludeFromMaxTransaction(address(uniswapV2Pair), true);
		_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
		
		uint256 _buyMarketingFee = 15;
	
		uint256 _sellMarketingFee = 25;
		
		uint256 totalSupply = 1 * 1e12 * 1e18;
		
		maxTransactionAmount = (totalSupply * 2 / 100) + (1 * 1e18);
		maxWallet = (totalSupply * 3 / 100) + (1 * 1e18);
        swapTokensAtAmount = totalSupply * 10 / 10000;

		buyMarketingFee = _buyMarketingFee;
		buyTotalFees = buyMarketingFee;
		
		sellMarketingFee = _sellMarketingFee;
		sellTotalFees = sellMarketingFee;
		
		marketingWallet = address(0x26C24B4C38aaEe42439F0d160c55B4E973287070);

		excludeFromFees(newOwner, true);
		excludeFromFees(address(this), true);
		excludeFromFees(address(0xdead), true);
		excludeFromFees(marketingWallet, true);
		
		excludeFromMaxTransaction(newOwner, true);
		excludeFromMaxTransaction(address(this), true);
		excludeFromMaxTransaction(address(0xdead), true);
		excludeFromMaxTransaction(marketingWallet, true);

		_mint(newOwner, totalSupply);

		transferOwnership(newOwner);
	}

	receive() external payable {
	}

	function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
		require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
		require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
		swapTokensAtAmount = newAmount;
		return true;
		}
	
	function updateMaxTxAmount(uint256 newNum) external onlyOwner {
		require(newNum >= (totalSupply() * 2 / 100)/1e18, "Cannot set maxTransactionAmount lower than 2%");
		maxTransactionAmount = (newNum * 1e18) + (1 * 1e18) ;
	}
	
	function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
		require(newNum >= (totalSupply() * 3 / 100)/1e18, "Cannot set maxWalletAmount lower than 3%");
		maxWallet = (newNum * 1e18) + (1 * 1e18);
	}

	function removeLimits() external onlyOwner {
		maxTransactionAmount = totalSupply();
		maxWallet = totalSupply();
	}
	
	function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
		_isExcludedMaxTransactionAmount[updAds] = isEx;
	}

	function updateSwapEnabled(bool enabled) external onlyOwner(){
		swapEnabled = enabled;
	}

	function updateBuyFees(uint256 _marketingFee) external onlyOwner {
		buyMarketingFee = _marketingFee;
		buyTotalFees = buyMarketingFee;
		require(buyTotalFees <= 15, "Must keep buy fees at 15% or less");
	}

	function updateSellFees(uint256 _marketingFee) external onlyOwner {
		sellMarketingFee = _marketingFee;
		sellTotalFees = sellMarketingFee;
		require(sellTotalFees <= 25, "Must keep sell fees at 25% or less");
	}

	function excludeFromFees(address account, bool excluded) public onlyOwner {
		_isExcludedFromFees[account] = excluded;
		emit ExcludeFromFees(account, excluded);
	}

	function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
		require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
		_setAutomatedMarketMakerPair(pair, value);
	}

	function _setAutomatedMarketMakerPair(address pair, bool value) private {
		automatedMarketMakerPairs[pair] = value;
		emit SetAutomatedMarketMakerPair(pair, value);
	}

	function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
		emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
		marketingWallet = newMarketingWallet;
	}

	function isExcludedFromFees(address account) public view returns(bool) {
		return _isExcludedFromFees[account];
	}

	function _transfer(
		address from,
		address to,
		uint256 amount
	) internal override {
		require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
		
		if(amount == 0) {
			super._transfer(from, to, 0);
			return;
		}
			if (
				from != owner() &&

				to != owner() &&
				to != address(0) &&
				to != address(0xdead) &&
				!swapping
			){
				// buy transaction
				if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
						require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
						require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");

				}
				
				//sell transaction
				else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
						require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
				}
			}
		uint256 contractTokenBalance = balanceOf(address(this));
		bool canSwap = contractTokenBalance >= swapTokensAtAmount;

		if( 
			canSwap &&
			swapEnabled &&
			!swapping &&
			!automatedMarketMakerPairs[from] &&
			!_isExcludedFromFees[from] &&
			!_isExcludedFromFees[to]
		) {
			swapping = true; 
			swapBack();
			swapping = false;
		}
		bool takeFee = !swapping;


		if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
			takeFee = false;
		}
		uint256 fees = 0;
		if(takeFee){
			if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
				fees = amount.mul(sellTotalFees).div(100);
				tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
			}
			else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
				fees = amount.mul(buyTotalFees).div(100);
				tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
			}
			
			if(fees > 0){    
				super._transfer(from, address(this), (fees));
			}
			amount -= fees;
		}
		super._transfer(from, to, amount);
	}

	function swapTokensForEth(uint256 tokenAmount) private {
		address[] memory path = new address[](2);
		path[0] = address(this);

		path[1] = uniswapV2Router.WETH();
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0,
			path,
			address(this),
			block.timestamp
		);
	}

	function swapBack() private {
		uint256 contractBalance = balanceOf(address(this));
		uint256 totalTokensToSwap = tokensForMarketing;
		
		if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
		uint256 amountToSwapForETH = contractBalance;
		uint256 initialETHBalance = address(this).balance;
		swapTokensForEth(amountToSwapForETH); 
		uint256 ethBalance = address(this).balance.sub(initialETHBalance);
		uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

		tokensForMarketing = 0;
		
		(bool success,) = address(marketingWallet).call{value: ethForMarketing}("");
		(success,) = address(marketingWallet).call{value: address(this).balance}("");
	}
	
}

Contract Security Audit

Contract ABI

[{"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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","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"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805460ff191660011790553480156200001e57600080fd5b506040805180820182526006808252652120a723a2a960d11b602080840182815285518087019096529285528401528151919291620000609160039162000809565b5080516200007690600490602084019062000809565b50505060006200008b6200042a60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062002c7a833981519152908290a3506000620000dd6005546001600160a01b031690565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d620001018160016200042e565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200014757600080fd5b505afa1580156200015c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001829190620008af565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001cb57600080fd5b505afa158015620001e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002069190620008af565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a9190620008af565b6001600160a01b031660a0819052620002a59060016200042e565b60a051620002b5906001620004a8565b600f60196c0c9f2c9cd04674edea400000006064620002d6826002620008f0565b620002e2919062000912565b620002f690670de0b6b3a764000062000935565b600755606462000308826003620008f0565b62000314919062000912565b6200032890670de0b6b3a764000062000935565b6009556127106200033b82600a620008f0565b62000347919062000912565b600855600c839055600b839055600e829055600d829055600680546001600160a01b0319167326c24b4c38aaee42439f0d160c55b4e97328707017905562000391856001620004fc565b6200039e306001620004fc565b620003ad61dead6001620004fc565b600654620003c6906001600160a01b03166001620004fc565b620003d38560016200042e565b620003e03060016200042e565b620003ef61dead60016200042e565b60065462000408906001600160a01b031660016200042e565b620004148582620005a6565b6200041f85620006a2565b50505050506200098d565b3390565b6005546001600160a01b031633146200047d5760405162461bcd60e51b8152602060048201819052602482015260008051602062002c5a83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005475760405162461bcd60e51b8152602060048201819052602482015260008051602062002c5a833981519152604482015260640162000474565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005fe5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000474565b6200061a816002546200079f60201b620011c01790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200064d918390620011c06200079f821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620006ed5760405162461bcd60e51b8152602060048201819052602482015260008051602062002c5a833981519152604482015260640162000474565b6001600160a01b038116620007545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000474565b6005546040516001600160a01b0380841692169060008051602062002c7a83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080620007ae838562000935565b905083811015620008025760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000474565b9392505050565b828054620008179062000950565b90600052602060002090601f0160209004810192826200083b576000855562000886565b82601f106200085657805160ff191683800117855562000886565b8280016001018555821562000886579182015b828111156200088657825182559160200191906001019062000869565b506200089492915062000898565b5090565b5b8082111562000894576000815560010162000899565b600060208284031215620008c257600080fd5b81516001600160a01b03811681146200080257600080fd5b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200090d576200090d620008da565b500290565b6000826200093057634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200094b576200094b620008da565b500190565b600181811c908216806200096557607f821691505b602082108114156200098757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161228b620009cf600039600081816103c50152610be70152600081816102e801528181611c3201528181611cfa0152611d36015261228b6000f3fe60806040526004361061023f5760003560e01c80637bce5a041161012e578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e146106ed578063e2f4560514610733578063eba4c33314610749578063f2fde38b14610769578063f8b45b051461078957600080fd5b8063c024666814610661578063c18bc19514610681578063c8c8ebe4146106a1578063d257b34f146106b7578063d85ba063146106d757600080fd5b80639a7a23d6116100f25780639a7a23d6146105b1578063a457c2d7146105d1578063a9059cbb146105f1578063aacebbe314610611578063b62496f51461063157600080fd5b80637bce5a04146105325780638da5cb5b146105485780639213691314610566578063924de9b71461057c57806395d89b411461059c57600080fd5b80634fbee193116101bc578063715018a611610180578063715018a6146104a857806371fc4688146104bd578063751039fc146104dd5780637571336a146104f257806375f0a8741461051257600080fd5b80634fbee193146103e75780636256d181146104205780636a486a8e146104425780636ddd17131461045857806370a082311461047257600080fd5b80631f3fed8f116102035780631f3fed8f1461034157806323b872dd14610357578063313ce56714610377578063395093511461039357806349bd5a5e146103b357600080fd5b806306fdde031461024b578063095ea7b31461027657806310d5de53146102a65780631694505e146102d657806318160ddd1461032257600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026061079f565b60405161026d9190611e1a565b60405180910390f35b34801561028257600080fd5b50610296610291366004611e84565b610831565b604051901515815260200161026d565b3480156102b257600080fd5b506102966102c1366004611eb0565b60116020526000908152604090205460ff1681565b3480156102e257600080fd5b5061030a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026d565b34801561032e57600080fd5b506002545b60405190815260200161026d565b34801561034d57600080fd5b50610333600f5481565b34801561036357600080fd5b50610296610372366004611ecd565b610848565b34801561038357600080fd5b506040516012815260200161026d565b34801561039f57600080fd5b506102966103ae366004611e84565b6108b1565b3480156103bf57600080fd5b5061030a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f357600080fd5b50610296610402366004611eb0565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561042c57600080fd5b5061044061043b366004611f0e565b6108e7565b005b34801561044e57600080fd5b50610333600d5481565b34801561046457600080fd5b50600a546102969060ff1681565b34801561047e57600080fd5b5061033361048d366004611eb0565b6001600160a01b031660009081526020819052604090205490565b3480156104b457600080fd5b506104406109dc565b3480156104c957600080fd5b506104406104d8366004611f0e565b610a50565b3480156104e957600080fd5b50610440610ae2565b3480156104fe57600080fd5b5061044061050d366004611f37565b610b1a565b34801561051e57600080fd5b5060065461030a906001600160a01b031681565b34801561053e57600080fd5b50610333600c5481565b34801561055457600080fd5b506005546001600160a01b031661030a565b34801561057257600080fd5b50610333600e5481565b34801561058857600080fd5b50610440610597366004611f6c565b610b6f565b3480156105a857600080fd5b50610260610bac565b3480156105bd57600080fd5b506104406105cc366004611f37565b610bbb565b3480156105dd57600080fd5b506102966105ec366004611e84565b610c9b565b3480156105fd57600080fd5b5061029661060c366004611e84565b610cea565b34801561061d57600080fd5b5061044061062c366004611eb0565b610cf7565b34801561063d57600080fd5b5061029661064c366004611eb0565b60126020526000908152604090205460ff1681565b34801561066d57600080fd5b5061044061067c366004611f37565b610d7e565b34801561068d57600080fd5b5061044061069c366004611f0e565b610e07565b3480156106ad57600080fd5b5061033360075481565b3480156106c357600080fd5b506102966106d2366004611f0e565b610eee565b3480156106e357600080fd5b50610333600b5481565b3480156106f957600080fd5b50610333610708366004611f87565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073f57600080fd5b5061033360085481565b34801561075557600080fd5b50610440610764366004611f0e565b611045565b34801561077557600080fd5b50610440610784366004611eb0565b6110d5565b34801561079557600080fd5b5061033360095481565b6060600380546107ae90611fc0565b80601f01602080910402602001604051908101604052809291908181526020018280546107da90611fc0565b80156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b5050505050905090565b600061083e338484611226565b5060015b92915050565b600061085584848461134b565b6108a784336108a285604051806060016040528060288152602001612209602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061186a565b611226565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161083e9185906108a290866111c0565b6005546001600160a01b0316331461091a5760405162461bcd60e51b815260040161091190611ffb565b60405180910390fd5b670de0b6b3a7640000606461092e60025490565b610939906002612046565b6109439190612065565b61094d9190612065565b8110156109b25760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526c6c6f776572207468616e20322560981b6064820152608401610911565b6109c481670de0b6b3a7640000612046565b6109d690670de0b6b3a7640000612087565b60075550565b6005546001600160a01b03163314610a065760405162461bcd60e51b815260040161091190611ffb565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161091190611ffb565b600c819055600b819055600f811115610adf5760405162461bcd60e51b815260206004820152602160248201527f4d757374206b65657020627579206665657320617420313525206f72206c65736044820152607360f81b6064820152608401610911565b50565b6005546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161091190611ffb565b600254600755600254600955565b6005546001600160a01b03163314610b445760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610b995760405162461bcd60e51b815260040161091190611ffb565b600a805460ff1916911515919091179055565b6060600480546107ae90611fc0565b6005546001600160a01b03163314610be55760405162461bcd60e51b815260040161091190611ffb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610c8d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610911565b610c9782826118a4565b5050565b600061083e33846108a285604051806060016040528060258152602001612231602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061186a565b600061083e33848461134b565b6005546001600160a01b03163314610d215760405162461bcd60e51b815260040161091190611ffb565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610da85760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610e315760405162461bcd60e51b815260040161091190611ffb565b670de0b6b3a76400006064610e4560025490565b610e50906003612046565b610e5a9190612065565b610e649190612065565b811015610ec45760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015267207468616e20332560c01b6064820152608401610911565b610ed681670de0b6b3a7640000612046565b610ee890670de0b6b3a7640000612087565b60095550565b6005546000906001600160a01b03163314610f1b5760405162461bcd60e51b815260040161091190611ffb565b620186a0610f2860025490565b610f33906001612046565b610f3d9190612065565b821015610faa5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610911565b6103e8610fb660025490565b610fc1906005612046565b610fcb9190612065565b8211156110375760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610911565b50600881905560015b919050565b6005546001600160a01b0316331461106f5760405162461bcd60e51b815260040161091190611ffb565b600e819055600d8190556019811115610adf5760405162461bcd60e51b815260206004820152602260248201527f4d757374206b6565702073656c6c206665657320617420323525206f72206c65604482015261737360f01b6064820152608401610911565b6005546001600160a01b031633146110ff5760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b0381166111645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610911565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806111cd8385612087565b90508381101561121f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610911565b9392505050565b6001600160a01b0383166112885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610911565b6001600160a01b0382166112e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610911565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113715760405162461bcd60e51b81526004016109119061209f565b6001600160a01b0382166113975760405162461bcd60e51b8152600401610911906120e4565b806113ad576113a8838360006118f8565b505050565b6005546001600160a01b038481169116148015906113d957506005546001600160a01b03838116911614155b80156113ed57506001600160a01b03821615155b801561140457506001600160a01b03821661dead14155b801561141a5750600554600160a01b900460ff16155b156115fb576001600160a01b03831660009081526012602052604090205460ff16801561146057506001600160a01b03821660009081526011602052604090205460ff16155b15611544576007548111156114d55760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610911565b6009546001600160a01b0383166000908152602081905260409020546114fb9083612087565b111561153f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610911565b6115fb565b6001600160a01b03821660009081526012602052604090205460ff16801561158557506001600160a01b03831660009081526011602052604090205460ff16155b156115fb576007548111156115fb5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610911565b30600090815260208190526040902054600854811080159081906116215750600a5460ff165b80156116375750600554600160a01b900460ff16155b801561165c57506001600160a01b03851660009081526012602052604090205460ff16155b801561168157506001600160a01b03851660009081526010602052604090205460ff16155b80156116a657506001600160a01b03841660009081526010602052604090205460ff16155b156116d4576005805460ff60a01b1916600160a01b1790556116c6611a01565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526010602052604090205460ff600160a01b90920482161591168061172257506001600160a01b03851660009081526010602052604090205460ff165b1561172b575060005b60008115611856576001600160a01b03861660009081526012602052604090205460ff16801561175d57506000600d54115b156117bb57611782606461177c600d5488611b1a90919063ffffffff16565b90611b99565b9050600d54600e54826117959190612046565b61179f9190612065565b600f60008282546117b09190612087565b909155506118389050565b6001600160a01b03871660009081526012602052604090205460ff1680156117e557506000600b54115b1561183857611804606461177c600b5488611b1a90919063ffffffff16565b9050600b54600c54826118179190612046565b6118219190612065565b600f60008282546118329190612087565b90915550505b8015611849576118498730836118f8565b6118538186612127565b94505b6118618787876118f8565b50505050505050565b6000818484111561188e5760405162461bcd60e51b81526004016109119190611e1a565b50600061189b8486612127565b95945050505050565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661191e5760405162461bcd60e51b81526004016109119061209f565b6001600160a01b0382166119445760405162461bcd60e51b8152600401610911906120e4565b611981816040518060600160405280602681526020016121e3602691396001600160a01b038616600090815260208190526040902054919061186a565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546119b090826111c0565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161133e565b30600090815260208190526040902054600f54811580611a1f575080155b15611a28575050565b8147611a3382611bdb565b6000611a3f4783611daa565b90506000611a5c8561177c600f5485611b1a90919063ffffffff16565b6000600f81905560065460405192935090916001600160a01b039091169083908381818185875af1925050503d8060008114611ab4576040519150601f19603f3d011682016040523d82523d6000602084013e611ab9565b606091505b50506006546040519192506001600160a01b0316904790600081818185875af1925050503d8060008114611b09576040519150601f19603f3d011682016040523d82523d6000602084013e611b0e565b606091505b50505050505050505050565b600082611b2957506000610842565b6000611b358385612046565b905082611b428583612065565b1461121f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610911565b600061121f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dec565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1057611c1061213e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8957600080fd5b505afa158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc19190612154565b81600181518110611cd457611cd461213e565b60200260200101906001600160a01b031690816001600160a01b031681525050611d1f307f000000000000000000000000000000000000000000000000000000000000000084611226565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611d74908590600090869030904290600401612171565b600060405180830381600087803b158015611d8e57600080fd5b505af1158015611da2573d6000803e3d6000fd5b505050505050565b600061121f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061186a565b60008183611e0d5760405162461bcd60e51b81526004016109119190611e1a565b50600061189b8486612065565b600060208083528351808285015260005b81811015611e4757858101830151858201604001528201611e2b565b81811115611e59576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610adf57600080fd5b60008060408385031215611e9757600080fd5b8235611ea281611e6f565b946020939093013593505050565b600060208284031215611ec257600080fd5b813561121f81611e6f565b600080600060608486031215611ee257600080fd5b8335611eed81611e6f565b92506020840135611efd81611e6f565b929592945050506040919091013590565b600060208284031215611f2057600080fd5b5035919050565b8035801515811461104057600080fd5b60008060408385031215611f4a57600080fd5b8235611f5581611e6f565b9150611f6360208401611f27565b90509250929050565b600060208284031215611f7e57600080fd5b61121f82611f27565b60008060408385031215611f9a57600080fd5b8235611fa581611e6f565b91506020830135611fb581611e6f565b809150509250929050565b600181811c90821680611fd457607f821691505b60208210811415611ff557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561206057612060612030565b500290565b60008261208257634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561209a5761209a612030565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561213957612139612030565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561216657600080fd5b815161121f81611e6f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121c15784516001600160a01b03168352938301939183019160010161219c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207bf500b13bbfb35d357ccb5f28e2157025d0ca3eecd500cb730a3bbb88fd5d2a64736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80637bce5a041161012e578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e146106ed578063e2f4560514610733578063eba4c33314610749578063f2fde38b14610769578063f8b45b051461078957600080fd5b8063c024666814610661578063c18bc19514610681578063c8c8ebe4146106a1578063d257b34f146106b7578063d85ba063146106d757600080fd5b80639a7a23d6116100f25780639a7a23d6146105b1578063a457c2d7146105d1578063a9059cbb146105f1578063aacebbe314610611578063b62496f51461063157600080fd5b80637bce5a04146105325780638da5cb5b146105485780639213691314610566578063924de9b71461057c57806395d89b411461059c57600080fd5b80634fbee193116101bc578063715018a611610180578063715018a6146104a857806371fc4688146104bd578063751039fc146104dd5780637571336a146104f257806375f0a8741461051257600080fd5b80634fbee193146103e75780636256d181146104205780636a486a8e146104425780636ddd17131461045857806370a082311461047257600080fd5b80631f3fed8f116102035780631f3fed8f1461034157806323b872dd14610357578063313ce56714610377578063395093511461039357806349bd5a5e146103b357600080fd5b806306fdde031461024b578063095ea7b31461027657806310d5de53146102a65780631694505e146102d657806318160ddd1461032257600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026061079f565b60405161026d9190611e1a565b60405180910390f35b34801561028257600080fd5b50610296610291366004611e84565b610831565b604051901515815260200161026d565b3480156102b257600080fd5b506102966102c1366004611eb0565b60116020526000908152604090205460ff1681565b3480156102e257600080fd5b5061030a7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161026d565b34801561032e57600080fd5b506002545b60405190815260200161026d565b34801561034d57600080fd5b50610333600f5481565b34801561036357600080fd5b50610296610372366004611ecd565b610848565b34801561038357600080fd5b506040516012815260200161026d565b34801561039f57600080fd5b506102966103ae366004611e84565b6108b1565b3480156103bf57600080fd5b5061030a7f00000000000000000000000094ff01fce8ab83eed2248efca0c1cb4a1e59ff5f81565b3480156103f357600080fd5b50610296610402366004611eb0565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561042c57600080fd5b5061044061043b366004611f0e565b6108e7565b005b34801561044e57600080fd5b50610333600d5481565b34801561046457600080fd5b50600a546102969060ff1681565b34801561047e57600080fd5b5061033361048d366004611eb0565b6001600160a01b031660009081526020819052604090205490565b3480156104b457600080fd5b506104406109dc565b3480156104c957600080fd5b506104406104d8366004611f0e565b610a50565b3480156104e957600080fd5b50610440610ae2565b3480156104fe57600080fd5b5061044061050d366004611f37565b610b1a565b34801561051e57600080fd5b5060065461030a906001600160a01b031681565b34801561053e57600080fd5b50610333600c5481565b34801561055457600080fd5b506005546001600160a01b031661030a565b34801561057257600080fd5b50610333600e5481565b34801561058857600080fd5b50610440610597366004611f6c565b610b6f565b3480156105a857600080fd5b50610260610bac565b3480156105bd57600080fd5b506104406105cc366004611f37565b610bbb565b3480156105dd57600080fd5b506102966105ec366004611e84565b610c9b565b3480156105fd57600080fd5b5061029661060c366004611e84565b610cea565b34801561061d57600080fd5b5061044061062c366004611eb0565b610cf7565b34801561063d57600080fd5b5061029661064c366004611eb0565b60126020526000908152604090205460ff1681565b34801561066d57600080fd5b5061044061067c366004611f37565b610d7e565b34801561068d57600080fd5b5061044061069c366004611f0e565b610e07565b3480156106ad57600080fd5b5061033360075481565b3480156106c357600080fd5b506102966106d2366004611f0e565b610eee565b3480156106e357600080fd5b50610333600b5481565b3480156106f957600080fd5b50610333610708366004611f87565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073f57600080fd5b5061033360085481565b34801561075557600080fd5b50610440610764366004611f0e565b611045565b34801561077557600080fd5b50610440610784366004611eb0565b6110d5565b34801561079557600080fd5b5061033360095481565b6060600380546107ae90611fc0565b80601f01602080910402602001604051908101604052809291908181526020018280546107da90611fc0565b80156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b5050505050905090565b600061083e338484611226565b5060015b92915050565b600061085584848461134b565b6108a784336108a285604051806060016040528060288152602001612209602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061186a565b611226565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161083e9185906108a290866111c0565b6005546001600160a01b0316331461091a5760405162461bcd60e51b815260040161091190611ffb565b60405180910390fd5b670de0b6b3a7640000606461092e60025490565b610939906002612046565b6109439190612065565b61094d9190612065565b8110156109b25760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526c6c6f776572207468616e20322560981b6064820152608401610911565b6109c481670de0b6b3a7640000612046565b6109d690670de0b6b3a7640000612087565b60075550565b6005546001600160a01b03163314610a065760405162461bcd60e51b815260040161091190611ffb565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161091190611ffb565b600c819055600b819055600f811115610adf5760405162461bcd60e51b815260206004820152602160248201527f4d757374206b65657020627579206665657320617420313525206f72206c65736044820152607360f81b6064820152608401610911565b50565b6005546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161091190611ffb565b600254600755600254600955565b6005546001600160a01b03163314610b445760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610b995760405162461bcd60e51b815260040161091190611ffb565b600a805460ff1916911515919091179055565b6060600480546107ae90611fc0565b6005546001600160a01b03163314610be55760405162461bcd60e51b815260040161091190611ffb565b7f00000000000000000000000094ff01fce8ab83eed2248efca0c1cb4a1e59ff5f6001600160a01b0316826001600160a01b03161415610c8d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610911565b610c9782826118a4565b5050565b600061083e33846108a285604051806060016040528060258152602001612231602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061186a565b600061083e33848461134b565b6005546001600160a01b03163314610d215760405162461bcd60e51b815260040161091190611ffb565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610da85760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610e315760405162461bcd60e51b815260040161091190611ffb565b670de0b6b3a76400006064610e4560025490565b610e50906003612046565b610e5a9190612065565b610e649190612065565b811015610ec45760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015267207468616e20332560c01b6064820152608401610911565b610ed681670de0b6b3a7640000612046565b610ee890670de0b6b3a7640000612087565b60095550565b6005546000906001600160a01b03163314610f1b5760405162461bcd60e51b815260040161091190611ffb565b620186a0610f2860025490565b610f33906001612046565b610f3d9190612065565b821015610faa5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610911565b6103e8610fb660025490565b610fc1906005612046565b610fcb9190612065565b8211156110375760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610911565b50600881905560015b919050565b6005546001600160a01b0316331461106f5760405162461bcd60e51b815260040161091190611ffb565b600e819055600d8190556019811115610adf5760405162461bcd60e51b815260206004820152602260248201527f4d757374206b6565702073656c6c206665657320617420323525206f72206c65604482015261737360f01b6064820152608401610911565b6005546001600160a01b031633146110ff5760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b0381166111645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610911565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806111cd8385612087565b90508381101561121f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610911565b9392505050565b6001600160a01b0383166112885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610911565b6001600160a01b0382166112e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610911565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113715760405162461bcd60e51b81526004016109119061209f565b6001600160a01b0382166113975760405162461bcd60e51b8152600401610911906120e4565b806113ad576113a8838360006118f8565b505050565b6005546001600160a01b038481169116148015906113d957506005546001600160a01b03838116911614155b80156113ed57506001600160a01b03821615155b801561140457506001600160a01b03821661dead14155b801561141a5750600554600160a01b900460ff16155b156115fb576001600160a01b03831660009081526012602052604090205460ff16801561146057506001600160a01b03821660009081526011602052604090205460ff16155b15611544576007548111156114d55760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610911565b6009546001600160a01b0383166000908152602081905260409020546114fb9083612087565b111561153f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610911565b6115fb565b6001600160a01b03821660009081526012602052604090205460ff16801561158557506001600160a01b03831660009081526011602052604090205460ff16155b156115fb576007548111156115fb5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610911565b30600090815260208190526040902054600854811080159081906116215750600a5460ff165b80156116375750600554600160a01b900460ff16155b801561165c57506001600160a01b03851660009081526012602052604090205460ff16155b801561168157506001600160a01b03851660009081526010602052604090205460ff16155b80156116a657506001600160a01b03841660009081526010602052604090205460ff16155b156116d4576005805460ff60a01b1916600160a01b1790556116c6611a01565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526010602052604090205460ff600160a01b90920482161591168061172257506001600160a01b03851660009081526010602052604090205460ff165b1561172b575060005b60008115611856576001600160a01b03861660009081526012602052604090205460ff16801561175d57506000600d54115b156117bb57611782606461177c600d5488611b1a90919063ffffffff16565b90611b99565b9050600d54600e54826117959190612046565b61179f9190612065565b600f60008282546117b09190612087565b909155506118389050565b6001600160a01b03871660009081526012602052604090205460ff1680156117e557506000600b54115b1561183857611804606461177c600b5488611b1a90919063ffffffff16565b9050600b54600c54826118179190612046565b6118219190612065565b600f60008282546118329190612087565b90915550505b8015611849576118498730836118f8565b6118538186612127565b94505b6118618787876118f8565b50505050505050565b6000818484111561188e5760405162461bcd60e51b81526004016109119190611e1a565b50600061189b8486612127565b95945050505050565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661191e5760405162461bcd60e51b81526004016109119061209f565b6001600160a01b0382166119445760405162461bcd60e51b8152600401610911906120e4565b611981816040518060600160405280602681526020016121e3602691396001600160a01b038616600090815260208190526040902054919061186a565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546119b090826111c0565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161133e565b30600090815260208190526040902054600f54811580611a1f575080155b15611a28575050565b8147611a3382611bdb565b6000611a3f4783611daa565b90506000611a5c8561177c600f5485611b1a90919063ffffffff16565b6000600f81905560065460405192935090916001600160a01b039091169083908381818185875af1925050503d8060008114611ab4576040519150601f19603f3d011682016040523d82523d6000602084013e611ab9565b606091505b50506006546040519192506001600160a01b0316904790600081818185875af1925050503d8060008114611b09576040519150601f19603f3d011682016040523d82523d6000602084013e611b0e565b606091505b50505050505050505050565b600082611b2957506000610842565b6000611b358385612046565b905082611b428583612065565b1461121f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610911565b600061121f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dec565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1057611c1061213e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8957600080fd5b505afa158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc19190612154565b81600181518110611cd457611cd461213e565b60200260200101906001600160a01b031690816001600160a01b031681525050611d1f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611226565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611d74908590600090869030904290600401612171565b600060405180830381600087803b158015611d8e57600080fd5b505af1158015611da2573d6000803e3d6000fd5b505050505050565b600061121f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061186a565b60008183611e0d5760405162461bcd60e51b81526004016109119190611e1a565b50600061189b8486612065565b600060208083528351808285015260005b81811015611e4757858101830151858201604001528201611e2b565b81811115611e59576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610adf57600080fd5b60008060408385031215611e9757600080fd5b8235611ea281611e6f565b946020939093013593505050565b600060208284031215611ec257600080fd5b813561121f81611e6f565b600080600060608486031215611ee257600080fd5b8335611eed81611e6f565b92506020840135611efd81611e6f565b929592945050506040919091013590565b600060208284031215611f2057600080fd5b5035919050565b8035801515811461104057600080fd5b60008060408385031215611f4a57600080fd5b8235611f5581611e6f565b9150611f6360208401611f27565b90509250929050565b600060208284031215611f7e57600080fd5b61121f82611f27565b60008060408385031215611f9a57600080fd5b8235611fa581611e6f565b91506020830135611fb581611e6f565b809150509250929050565b600181811c90821680611fd457607f821691505b60208210811415611ff557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561206057612060612030565b500290565b60008261208257634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561209a5761209a612030565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561213957612139612030565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561216657600080fd5b815161121f81611e6f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121c15784516001600160a01b03168352938301939183019160010161219c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207bf500b13bbfb35d357ccb5f28e2157025d0ca3eecd500cb730a3bbb88fd5d2a64736f6c63430008090033

Deployed Bytecode Sourcemap

15100:8299:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4456:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5282:154;;;;;;;;;;-1:-1:-1;5282:154:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;5282:154:0;1072:187:1;15713:64:0;;;;;;;;;;-1:-1:-1;15713:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15170:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1707:32:1;;;1689:51;;1677:2;1662:18;15170:51:0;1516:230:1;4741:99:0;;;;;;;;;;-1:-1:-1;4823:12:0;;4741:99;;;1897:25:1;;;1885:2;1870:18;4741:99:0;1751:177:1;15617:33:0;;;;;;;;;;;;;;;;5441:313;;;;;;;;;;-1:-1:-1;5441:313:0;;;;;:::i;:::-;;:::i;4652:84::-;;;;;;;;;;-1:-1:-1;4652:84:0;;4729:2;2536:36:1;;2524:2;2509:18;4652:84:0;2394:184:1;5759:203:0;;;;;;;;;;-1:-1:-1;5759:203:0;;;;;:::i;:::-;;:::i;15227:38::-;;;;;;;;;;;;;;;20152:116;;;;;;;;;;-1:-1:-1;20152:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;20235:28:0;20217:4;20235:28;;;:19;:28;;;;;;;;;20152:116;18124:227;;;;;;;;;;-1:-1:-1;18124:227:0;;;;;:::i;:::-;;:::i;:::-;;15547:28;;;;;;;;;;;;;;;;15443:30;;;;;;;;;;-1:-1:-1;15443:30:0;;;;;;;;4845:118;;;;;;;;;;-1:-1:-1;4845:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;4940:18:0;4919:7;4940:18;;;;;;;;;;;;4845:118;9315:133;;;;;;;;;;;;;:::i;18938:210::-;;;;;;;;;;-1:-1:-1;18938:210:0;;;;;:::i;:::-;;:::i;18576:119::-;;;;;;;;;;;;;:::i;18701:135::-;;;;;;;;;;-1:-1:-1;18701:135:0;;;;;:::i;:::-;;:::i;15298:30::-;;;;;;;;;;-1:-1:-1;15298:30:0;;;;-1:-1:-1;;;;;15298:30:0;;;15510;;;;;;;;;;;;;;;;9131:70;;;;;;;;;;-1:-1:-1;9190:6:0;;-1:-1:-1;;;;;9190:6:0;9131:70;;15579:31;;;;;;;;;;;;;;;;18841:92;;;;;;;;;;-1:-1:-1;18841:92:0;;;;;:::i;:::-;;:::i;4552:95::-;;;;;;;;;;;;;:::i;19546:227::-;;;;;;;;;;-1:-1:-1;19546:227:0;;;;;:::i;:::-;;:::i;5967:256::-;;;;;;;;;;-1:-1:-1;5967:256:0;;;;;:::i;:::-;;:::i;4968:160::-;;;;;;;;;;-1:-1:-1;4968:160:0;;;;;:::i;:::-;;:::i;19954:193::-;;;;;;;;;;-1:-1:-1;19954:193:0;;;;;:::i;:::-;;:::i;15783:58::-;;;;;;;;;;-1:-1:-1;15783:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19374:167;;;;;;;;;;-1:-1:-1;19374:167:0;;;;;:::i;:::-;;:::i;18357:214::-;;;;;;;;;;-1:-1:-1;18357:214:0;;;;;:::i;:::-;;:::i;15335:35::-;;;;;;;;;;;;;;;;17758:360;;;;;;;;;;-1:-1:-1;17758:360:0;;;;;:::i;:::-;;:::i;15479:27::-;;;;;;;;;;;;;;;;5135:142;;;;;;;;;;-1:-1:-1;5135:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;5245:18:0;;;5224:7;5245:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5135:142;15374:33;;;;;;;;;;;;;;;;19153:216;;;;;;;;;;-1:-1:-1;19153:216:0;;;;;:::i;:::-;;:::i;9451:223::-;;;;;;;;;;-1:-1:-1;9451:223:0;;;;;:::i;:::-;;:::i;15413:24::-;;;;;;;;;;;;;;;;4456:91;4510:13;4537:5;4530:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4456:91;:::o;5282:154::-;5365:4;5376:39;297:10;5399:7;5408:6;5376:8;:39::i;:::-;-1:-1:-1;5427:4:0;5282:154;;;;;:::o;5441:313::-;5560:4;5571:36;5581:6;5589:9;5600:6;5571:9;:36::i;:::-;5612:121;5621:6;297:10;5643:89;5681:6;5643:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5643:19:0;;;;;;:11;:19;;;;;;;;297:10;5643:33;;;;;;;;;;:37;:89::i;:::-;5612:8;:121::i;:::-;-1:-1:-1;5745:4:0;5441:313;;;;;:::o;5759:203::-;297:10;5847:4;5890:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5890:34:0;;;;;;;;;;5847:4;;5858:83;;5881:7;;5890:50;;5929:10;5890:38;:50::i;18124:227::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;;;;;;;;;18235:4:::1;18230:3;18210:13;4823:12:::0;;;4741:99;18210:13:::1;:17;::::0;18226:1:::1;18210:17;:::i;:::-;:23;;;;:::i;:::-;18209:30;;;;:::i;:::-;18199:6;:40;;18191:98;;;::::0;-1:-1:-1;;;18191:98:0;;5514:2:1;18191:98:0::1;::::0;::::1;5496:21:1::0;5553:2;5533:18;;;5526:30;5592:34;5572:18;;;5565:62;-1:-1:-1;;;5643:18:1;;;5636:43;5696:19;;18191:98:0::1;5312:409:1::0;18191:98:0::1;18318:13;:6:::0;18327:4:::1;18318:13;:::i;:::-;18317:28;::::0;18336:8:::1;18317:28;:::i;:::-;18294:20;:51:::0;-1:-1:-1;18124:227:0:o;9315:133::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;9400:6:::1;::::0;9379:40:::1;::::0;9416:1:::1;::::0;-1:-1:-1;;;;;9400:6:0::1;::::0;9379:40:::1;::::0;9416:1;;9379:40:::1;9424:6;:19:::0;;-1:-1:-1;;;;;;9424:19:0::1;::::0;;9315:133::o;18938:210::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;19008:15:::1;:31:::0;;;19044:12:::1;:30:::0;;;19103:2:::1;19087:18:::0;::::1;;19079:64;;;::::0;-1:-1:-1;;;19079:64:0;;6061:2:1;19079:64:0::1;::::0;::::1;6043:21:1::0;6100:2;6080:18;;;6073:30;6139:34;6119:18;;;6112:62;-1:-1:-1;;;6190:18:1;;;6183:31;6231:19;;19079:64:0::1;5859:397:1::0;19079:64:0::1;18938:210:::0;:::o;18576:119::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;4823:12;;18624:20:::1;:36:::0;4823:12;;18665:9:::1;:25:::0;18576:119::o;18701:135::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18785:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18785:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18701:135::o;18841:92::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;18907:11:::1;:21:::0;;-1:-1:-1;;18907:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18841:92::o;4552:95::-;4608:13;4635:7;4628:14;;;;;:::i;19546:227::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;19647:13:::1;-1:-1:-1::0;;;;;19639:21:0::1;:4;-1:-1:-1::0;;;;;19639:21:0::1;;;19631:91;;;::::0;-1:-1:-1;;;19631:91:0;;6463:2:1;19631:91:0::1;::::0;::::1;6445:21:1::0;6502:2;6482:18;;;6475:30;6541:34;6521:18;;;6514:62;6612:27;6592:18;;;6585:55;6657:19;;19631:91:0::1;6261:421:1::0;19631:91:0::1;19727:41;19756:4;19762:5;19727:28;:41::i;:::-;19546:227:::0;;:::o;5967:256::-;6060:4;6071:129;297:10;6094:7;6103:96;6142:15;6103:96;;;;;;;;;;;;;;;;;297:10;6103:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6103:34:0;;;;;;;;;;;;:38;:96::i;4968:160::-;5054:4;5065:42;297:10;5089:9;5100:6;5065:9;:42::i;19954:193::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;20085:15:::1;::::0;20042:59:::1;::::0;-1:-1:-1;;;;;20085:15:0;;::::1;::::0;20042:59;::::1;::::0;::::1;::::0;20085:15:::1;::::0;20042:59:::1;20106:15;:36:::0;;-1:-1:-1;;;;;;20106:36:0::1;-1:-1:-1::0;;;;;20106:36:0;;;::::1;::::0;;;::::1;::::0;;19954:193::o;19374:167::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19453:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19453:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19502:34;;1212:41:1;;;19502:34:0::1;::::0;1185:18:1;19502:34:0::1;;;;;;;19374:167:::0;;:::o;18357:214::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;18472:4:::1;18467:3;18447:13;4823:12:::0;;;4741:99;18447:13:::1;:17;::::0;18463:1:::1;18447:17;:::i;:::-;:23;;;;:::i;:::-;18446:30;;;;:::i;:::-;18436:6;:40;;18428:93;;;::::0;-1:-1:-1;;;18428:93:0;;6889:2:1;18428:93:0::1;::::0;::::1;6871:21:1::0;6928:2;6908:18;;;6901:30;6967:34;6947:18;;;6940:62;-1:-1:-1;;;7018:18:1;;;7011:38;7066:19;;18428:93:0::1;6687:404:1::0;18428:93:0::1;18539:13;:6:::0;18548:4:::1;18539:13;:::i;:::-;18538:28;::::0;18557:8:::1;18538:28;:::i;:::-;18526:9;:40:::0;-1:-1:-1;18357:214:0:o;17758:360::-;9240:6;;17839:4;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;17890:6:::1;17870:13;4823:12:::0;;;4741:99;17870:13:::1;:17;::::0;17886:1:::1;17870:17;:::i;:::-;:26;;;;:::i;:::-;17857:9;:39;;17849:105;;;::::0;-1:-1:-1;;;17849:105:0;;7298:2:1;17849:105:0::1;::::0;::::1;7280:21:1::0;7337:2;7317:18;;;7310:30;7376:34;7356:18;;;7349:62;-1:-1:-1;;;7427:18:1;;;7420:51;7488:19;;17849:105:0::1;7096:417:1::0;17849:105:0::1;18000:4;17980:13;4823:12:::0;;;4741:99;17980:13:::1;:17;::::0;17996:1:::1;17980:17;:::i;:::-;:24;;;;:::i;:::-;17967:9;:37;;17959:102;;;::::0;-1:-1:-1;;;17959:102:0;;7720:2:1;17959:102:0::1;::::0;::::1;7702:21:1::0;7759:2;7739:18;;;7732:30;7798:34;7778:18;;;7771:62;-1:-1:-1;;;7849:18:1;;;7842:50;7909:19;;17959:102:0::1;7518:416:1::0;17959:102:0::1;-1:-1:-1::0;18066:18:0::1;:30:::0;;;18108:4:::1;9304:1;17758:360:::0;;;:::o;19153:216::-;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;19224:16:::1;:32:::0;;;19261:13:::1;:32:::0;;;19323:2:::1;19306:19:::0;::::1;;19298:66;;;::::0;-1:-1:-1;;;19298:66:0;;8141:2:1;19298:66:0::1;::::0;::::1;8123:21:1::0;8180:2;8160:18;;;8153:30;8219:34;8199:18;;;8192:62;-1:-1:-1;;;8270:18:1;;;8263:32;8312:19;;19298:66:0::1;7939:398:1::0;9451:223:0;9240:6;;-1:-1:-1;;;;;9240:6:0;297:10;9240:22;9232:67;;;;-1:-1:-1;;;9232:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9534:22:0;::::1;9526:73;;;::::0;-1:-1:-1;;;9526:73:0;;8544:2:1;9526:73:0::1;::::0;::::1;8526:21:1::0;8583:2;8563:18;;;8556:30;8622:34;8602:18;;;8595:62;-1:-1:-1;;;8673:18:1;;;8666:36;8719:19;;9526:73:0::1;8342:402:1::0;9526:73:0::1;9630:6;::::0;9609:38:::1;::::0;-1:-1:-1;;;;;9609:38:0;;::::1;::::0;9630:6:::1;::::0;9609:38:::1;::::0;9630:6:::1;::::0;9609:38:::1;9652:6;:17:::0;;-1:-1:-1;;;;;;9652:17:0::1;-1:-1:-1::0;;;;;9652:17:0;;;::::1;::::0;;;::::1;::::0;;9451:223::o;7573:160::-;7631:7;;7657:5;7661:1;7657;:5;:::i;:::-;7645:17;;7680:1;7675;:6;;7667:46;;;;-1:-1:-1;;;7667:46:0;;8951:2:1;7667:46:0;;;8933:21:1;8990:2;8970:18;;;8963:30;9029:29;9009:18;;;9002:57;9076:18;;7667:46:0;8749:351:1;7667:46:0;7727:1;7573:160;-1:-1:-1;;;7573:160:0:o;7097:334::-;-1:-1:-1;;;;;7208:19:0;;7200:68;;;;-1:-1:-1;;;7200:68:0;;9307:2:1;7200:68:0;;;9289:21:1;9346:2;9326:18;;;9319:30;9385:34;9365:18;;;9358:62;-1:-1:-1;;;9436:18:1;;;9429:34;9480:19;;7200:68:0;9105:400:1;7200:68:0;-1:-1:-1;;;;;7281:21:0;;7273:68;;;;-1:-1:-1;;;7273:68:0;;9712:2:1;7273:68:0;;;9694:21:1;9751:2;9731:18;;;9724:30;9790:34;9770:18;;;9763:62;-1:-1:-1;;;9841:18:1;;;9834:32;9883:19;;7273:68:0;9510:398:1;7273:68:0;-1:-1:-1;;;;;7348:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7394:32;;1897:25:1;;;7394:32:0;;1870:18:1;7394:32:0;;;;;;;;7097:334;;;:::o;20273:2017::-;-1:-1:-1;;;;;20378:18:0;;20370:68;;;;-1:-1:-1;;;20370:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20451:16:0;;20443:64;;;;-1:-1:-1;;;20443:64:0;;;;;;;:::i;:::-;20519:11;20516:68;;20538:28;20554:4;20560:2;20564:1;20538:15;:28::i;:::-;20273:2017;;;:::o;20516:68::-;9190:6;;-1:-1:-1;;;;;20599:15:0;;;9190:6;;20599:15;;;;:39;;-1:-1:-1;9190:6:0;;-1:-1:-1;;;;;20625:13:0;;;9190:6;;20625:13;;20599:39;:64;;;;-1:-1:-1;;;;;;20647:16:0;;;;20599:64;:94;;;;-1:-1:-1;;;;;;20672:21:0;;20686:6;20672:21;;20599:94;:112;;;;-1:-1:-1;20703:8:0;;-1:-1:-1;;;20703:8:0;;;;20702:9;20599:112;20589:665;;;-1:-1:-1;;;;;20752:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;20788:35:0;;;;;;:31;:35;;;;;;;;20787:36;20752:71;20748:500;;;20852:20;;20842:6;:30;;20834:96;;;;-1:-1:-1;;;20834:96:0;;10925:2:1;20834:96:0;;;10907:21:1;10964:2;10944:18;;;10937:30;11003:34;10983:18;;;10976:62;-1:-1:-1;;;11054:18:1;;;11047:51;11115:19;;20834:96:0;10723:417:1;20834:96:0;20973:9;;-1:-1:-1;;;;;4940:18:0;;4919:7;4940:18;;;;;;;;;;;20947:22;;:6;:22;:::i;:::-;:35;;20939:67;;;;-1:-1:-1;;;20939:67:0;;11347:2:1;20939:67:0;;;11329:21:1;11386:2;11366:18;;;11359:30;-1:-1:-1;;;11405:18:1;;;11398:49;11464:18;;20939:67:0;11145:343:1;20939:67:0;20748:500;;;-1:-1:-1;;;;;21061:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;21095:37:0;;;;;;:31;:37;;;;;;;;21094:38;21061:71;21057:191;;;21161:20;;21151:6;:30;;21143:97;;;;-1:-1:-1;;;21143:97:0;;11695:2:1;21143:97:0;;;11677:21:1;11734:2;11714:18;;;11707:30;11773:34;11753:18;;;11746:62;-1:-1:-1;;;11824:18:1;;;11817:52;11886:19;;21143:97:0;11493:418:1;21143:97:0;21307:4;21258:28;4940:18;;;;;;;;;;;21357;;21333:42;;;;;;;21391:26;;-1:-1:-1;21406:11:0;;;;21391:26;:43;;;;-1:-1:-1;21426:8:0;;-1:-1:-1;;;21426:8:0;;;;21425:9;21391:43;:83;;;;-1:-1:-1;;;;;;21443:31:0;;;;;;:25;:31;;;;;;;;21442:32;21391:83;:117;;;;-1:-1:-1;;;;;;21483:25:0;;;;;;:19;:25;;;;;;;;21482:26;21391:117;:149;;;;-1:-1:-1;;;;;;21517:23:0;;;;;;:19;:23;;;;;;;;21516:24;21391:149;21382:230;;;21552:8;:15;;-1:-1:-1;;;;21552:15:0;-1:-1:-1;;;21552:15:0;;;21574:10;:8;:10::i;:::-;21590:8;:16;;-1:-1:-1;;;;21590:16:0;;;21382:230;21632:8;;-1:-1:-1;;;;;21652:25:0;;21616:12;21652:25;;;:19;:25;;;;;;21632:8;-1:-1:-1;;;21632:8:0;;;;;21631:9;;21652:25;;:52;;-1:-1:-1;;;;;;21681:23:0;;;;;;:19;:23;;;;;;;;21652:52;21649:84;;;-1:-1:-1;21722:5:0;21649:84;21737:12;21761:7;21758:490;;;-1:-1:-1;;;;;21779:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;21828:1;21812:13;;:17;21779:50;21775:364;;;21844:34;21874:3;21844:25;21855:13;;21844:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;21837:41;;21933:13;;21914:16;;21907:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;21885:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;21775:364:0;;-1:-1:-1;21775:364:0;;-1:-1:-1;;;;;21966:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22016:1;22001:12;;:16;21966:51;21963:176;;;22033:33;22062:3;22033:24;22044:12;;22033:6;:10;;:24;;;;:::i;:33::-;22026:40;;22120:12;;22102:15;;22095:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22073:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21963:176:0;22152:8;;22149:74;;22172:44;22188:4;22202;22210;22172:15;:44::i;:::-;22228:14;22238:4;22228:14;;:::i;:::-;;;21758:490;22252:33;22268:4;22274:2;22278:6;22252:15;:33::i;:::-;20365:1925;;;;20273:2017;;;:::o;7872:173::-;7958:7;7988:12;7980:6;;;;7972:29;;;;-1:-1:-1;;;7972:29:0;;;;;;;;:::i;:::-;-1:-1:-1;8006:9:0;8018:5;8022:1;8018;:5;:::i;:::-;8006:17;7872:173;-1:-1:-1;;;;;7872:173:0:o;19778:171::-;-1:-1:-1;;;;;19855:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19855:39:0;;;;;;;;;;19904:40;;19855:39;;:31;19904:40;;;19778:171;;:::o;6228:512::-;-1:-1:-1;;;;;6344:20:0;;6336:70;;;;-1:-1:-1;;;6336:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6419:23:0;;6411:71;;;;-1:-1:-1;;;6411:71:0;;;;;;;:::i;:::-;6559;6581:6;6559:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6559:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;6539:17:0;;;:9;:17;;;;;;;;;;;:91;;;;6658:20;;;;;;;:32;;6683:6;6658:24;:32::i;:::-;-1:-1:-1;;;;;6635:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;6700:35;1897:25:1;;;6635:20:0;;6700:35;;;;;;1870:18:1;6700:35:0;1751:177:1;22689:704:0;22766:4;22722:23;4940:18;;;;;;;;;;;22805;;22835:20;;;:46;;-1:-1:-1;22859:22:0;;22835:46;22832:60;;;22884:7;;22689:704::o;22832:60::-;22925:15;22973:21;22999:36;22925:15;22999:16;:36::i;:::-;23041:18;23062:44;:21;23088:17;23062:25;:44::i;:::-;23041:65;;23111:23;23137:57;23176:17;23137:34;23152:18;;23137:10;:14;;:34;;;;:::i;:57::-;23222:1;23201:18;:22;;;23258:15;;23250:57;;23111:83;;-1:-1:-1;23222:1:0;;-1:-1:-1;;;;;23258:15:0;;;;23111:83;;23222:1;23250:57;23222:1;23250:57;23111:83;23258:15;23250:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23333:15:0;;23325:63;;23232:75;;-1:-1:-1;;;;;;23333:15:0;;23362:21;;23325:63;;;;23362:21;23333:15;23325:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;22689:704:0:o;8050:206::-;8108:7;8126:6;8122:32;;-1:-1:-1;8147:1:0;8140:8;;8122:32;8158:9;8170:5;8174:1;8170;:5;:::i;:::-;8158:17;-1:-1:-1;8197:1:0;8188:5;8192:1;8158:17;8188:5;:::i;:::-;:10;8180:56;;;;-1:-1:-1;;;8180:56:0;;12458:2:1;8180:56:0;;;12440:21:1;12497:2;12477:18;;;12470:30;12536:34;12516:18;;;12509:62;-1:-1:-1;;;12587:18:1;;;12580:31;12628:19;;8180:56:0;12256:397:1;8261:123:0;8319:7;8340:39;8344:1;8347;8340:39;;;;;;;;;;;;;;;;;:3;:39::i;22295:389::-;22379:16;;;22393:1;22379:16;;;;;;;;22355:21;;22379:16;;;;;;;;;;-1:-1:-1;22379:16:0;22355:40;;22418:4;22400;22405:1;22400:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22400:23:0;;;-1:-1:-1;;;;;22400:23:0;;;;;22440:15;-1:-1:-1;;;;;22440:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22430:4;22435:1;22430:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;22430:32:0;;;-1:-1:-1;;;;;22430:32:0;;;;;22467:62;22484:4;22499:15;22517:11;22467:8;:62::i;:::-;22534:145;;-1:-1:-1;;;22534:145:0;;-1:-1:-1;;;;;22534:15:0;:66;;;;:145;;22606:11;;22623:1;;22630:4;;22648;;22659:15;;22534:145;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22350:334;22295:389;:::o;7738:127::-;7796:7;7817:43;7821:1;7824;7817:43;;;;;;;;;;;;;;;;;:3;:43::i;8389:168::-;8475:7;8504:12;8497:5;8489:28;;;;-1:-1:-1;;;8489:28:0;;;;;;;;:::i;:::-;-1:-1:-1;8522:9:0;8534:5;8538:1;8534;:5;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:247::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1431:9;1418:23;1450:31;1475:5;1450:31;:::i;1933:456::-;2010:6;2018;2026;2079:2;2067:9;2058:7;2054:23;2050:32;2047:52;;;2095:1;2092;2085:12;2047:52;2134:9;2121:23;2153:31;2178:5;2153:31;:::i;:::-;2203:5;-1:-1:-1;2260:2:1;2245:18;;2232:32;2273:33;2232:32;2273:33;:::i;:::-;1933:456;;2325:7;;-1:-1:-1;;;2379:2:1;2364:18;;;;2351:32;;1933:456::o;2791:180::-;2850:6;2903:2;2891:9;2882:7;2878:23;2874:32;2871:52;;;2919:1;2916;2909:12;2871:52;-1:-1:-1;2942:23:1;;2791:180;-1:-1:-1;2791:180:1:o;2976:160::-;3041:20;;3097:13;;3090:21;3080:32;;3070:60;;3126:1;3123;3116:12;3141:315;3206:6;3214;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:31;3366:5;3341:31;:::i;:::-;3391:5;-1:-1:-1;3415:35:1;3446:2;3431:18;;3415:35;:::i;:::-;3405:45;;3141:315;;;;;:::o;3461:180::-;3517:6;3570:2;3558:9;3549:7;3545:23;3541:32;3538:52;;;3586:1;3583;3576:12;3538:52;3609:26;3625:9;3609:26;:::i;3646:388::-;3714:6;3722;3775:2;3763:9;3754:7;3750:23;3746:32;3743:52;;;3791:1;3788;3781:12;3743:52;3830:9;3817:23;3849:31;3874:5;3849:31;:::i;:::-;3899:5;-1:-1:-1;3956:2:1;3941:18;;3928:32;3969:33;3928:32;3969:33;:::i;:::-;4021:7;4011:17;;;3646:388;;;;;:::o;4039:380::-;4118:1;4114:12;;;;4161;;;4182:61;;4236:4;4228:6;4224:17;4214:27;;4182:61;4289:2;4281:6;4278:14;4258:18;4255:38;4252:161;;;4335:10;4330:3;4326:20;4323:1;4316:31;4370:4;4367:1;4360:15;4398:4;4395:1;4388:15;4252:161;;4039:380;;;:::o;4424:356::-;4626:2;4608:21;;;4645:18;;;4638:30;4704:34;4699:2;4684:18;;4677:62;4771:2;4756:18;;4424:356::o;4785:127::-;4846:10;4841:3;4837:20;4834:1;4827:31;4877:4;4874:1;4867:15;4901:4;4898:1;4891:15;4917:168;4957:7;5023:1;5019;5015:6;5011:14;5008:1;5005:21;5000:1;4993:9;4986:17;4982:45;4979:71;;;5030:18;;:::i;:::-;-1:-1:-1;5070:9:1;;4917:168::o;5090:217::-;5130:1;5156;5146:132;;5200:10;5195:3;5191:20;5188:1;5181:31;5235:4;5232:1;5225:15;5263:4;5260:1;5253:15;5146:132;-1:-1:-1;5292:9:1;;5090:217::o;5726:128::-;5766:3;5797:1;5793:6;5790:1;5787:13;5784:39;;;5803:18;;:::i;:::-;-1:-1:-1;5839:9:1;;5726:128::o;9913:401::-;10115:2;10097:21;;;10154:2;10134:18;;;10127:30;10193:34;10188:2;10173:18;;10166:62;-1:-1:-1;;;10259:2:1;10244:18;;10237:35;10304:3;10289:19;;9913:401::o;10319:399::-;10521:2;10503:21;;;10560:2;10540:18;;;10533:30;10599:34;10594:2;10579:18;;10572:62;-1:-1:-1;;;10665:2:1;10650:18;;10643:33;10708:3;10693:19;;10319:399::o;11916:125::-;11956:4;11984:1;11981;11978:8;11975:34;;;11989:18;;:::i;:::-;-1:-1:-1;12026:9:1;;11916:125::o;12790:127::-;12851:10;12846:3;12842:20;12839:1;12832:31;12882:4;12879:1;12872:15;12906:4;12903:1;12896:15;12922:251;12992:6;13045:2;13033:9;13024:7;13020:23;13016:32;13013:52;;;13061:1;13058;13051:12;13013:52;13093:9;13087:16;13112:31;13137:5;13112:31;:::i;13178:980::-;13440:4;13488:3;13477:9;13473:19;13519:6;13508:9;13501:25;13545:2;13583:6;13578:2;13567:9;13563:18;13556:34;13626:3;13621:2;13610:9;13606:18;13599:31;13650:6;13685;13679:13;13716:6;13708;13701:22;13754:3;13743:9;13739:19;13732:26;;13793:2;13785:6;13781:15;13767:29;;13814:1;13824:195;13838:6;13835:1;13832:13;13824:195;;;13903:13;;-1:-1:-1;;;;;13899:39:1;13887:52;;13994:15;;;;13959:12;;;;13935:1;13853:9;13824:195;;;-1:-1:-1;;;;;;;14075:32:1;;;;14070:2;14055:18;;14048:60;-1:-1:-1;;;14139:3:1;14124:19;14117:35;14036:3;13178:980;-1:-1:-1;;;13178:980:1:o

Swarm Source

ipfs://7bf500b13bbfb35d357ccb5f28e2157025d0ca3eecd500cb730a3bbb88fd5d2a
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.