ERC-20
Overview
Max Total Supply
100,000,000 TF
Holders
117
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.00000000004873371 TFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
TuneForge
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-18 */ // SPDX-License-Identifier: MIT /* ♩♩♩♩♩♩♩♩♩♩♩\ ♩♩♩♩♩♩♩♩♩\ \__♩♩ __| ♩♩ _____| ♩♩ |♩♩\ ♩♩\ ♩♩♩♩♩♩♩\ ♩♩♩♩♩♩\ ♩♩ | ♩♩♩♩♩♩\ ♩♩♩♩♩♩\ ♩♩♩♩♩♩\ ♩♩♩♩♩♩\ ♩♩ |♩♩ | ♩♩ |♩♩ __♩♩\ ♩♩ __♩♩\ ♩♩♩♩♩\ ♩♩ __♩♩\ ♩♩ __♩♩\ ♩♩ __♩♩\ ♩♩ __♩♩\ ♩♩ |♩♩ | ♩♩ |♩♩ | ♩♩ |♩♩♩♩♩♩♩♩ |♩♩ __|♩♩ / ♩♩ |♩♩ | \__|♩♩ / ♩♩ |♩♩♩♩♩♩♩♩ | ♩♩ |♩♩ | ♩♩ |♩♩ | ♩♩ |♩♩ ____|♩♩ | ♩♩ | ♩♩ |♩♩ | ♩♩ | ♩♩ |♩♩ ____| ♩♩ |\♩♩♩♩♩♩ |♩♩ | ♩♩ |\♩♩♩♩♩♩♩\ ♩♩ | \♩♩♩♩♩♩ |♩♩ | \♩♩♩♩♩♩♩ |\♩♩♩♩♩♩♩\ \__| \______/ \__| \__| \_______|\__| \______/ \__| \____♩♩ | \_______| ♩♩\ ♩♩ | \♩♩♩♩♩♩ | \______/ Twitter: https://x.com/TuneForgeTF Telegram: https://t.me/TuneForge Website: https://TuneForge.co */ pragma solidity ^0.8.25; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { require(owner() == _msgSender(), "Invalid owner"); _; } function owner() public view virtual returns (address) { return _owner; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "New owner is ZERO"); _transferOwnership(newOwner); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, 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 IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } contract ERC20 is IERC20, Context { string private _name; string private _symbol; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; 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 approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: Not owner != address(0)"); require(spender != address(0), "ERC20: Not spender != address(0)"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { _transfer(from, to, amount); uint256 curAllow = _allowances[from][_msgSender()]; require(curAllow >= amount, "ERC20: Not curAllow >= amount"); unchecked { _approve(from, _msgSender(), curAllow - amount); } return true; } function transfer(address to, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), to, amount); return true; } function increaseAllowance(address spender, uint256 addValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addValue); return true; } function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) { uint256 curAllow = _allowances[_msgSender()][spender]; require(curAllow >= subValue, "ERC20: Not curAllow >= subValue"); unchecked { _approve(_msgSender(), spender, curAllow - subValue); } return true; } function _mint( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: Not account != address(0)"); _beforeTokenTransfer(account, address(0), amount); uint256 kBalance = _balances[account]; require(kBalance >= amount, "ERC20: kBalance >= amount"); unchecked { _balances[account] = kBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _beforeTokenTransfer( address from, address to, uint256 amount) internal virtual { } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: Not from != address(0)"); require(to != address(0), "ERC20: Not to != address(0)"); _beforeTokenTransfer(from, to, amount); uint256 balanceFrom = _balances[from]; require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount"); unchecked { _balances[from] = balanceFrom - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _afterTokenTransfer( address from, address to, uint256 amount) internal virtual { // Nothing } } contract TuneForge is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public swapRouter; address public swapPair; uint256 public minSwapTokenAmount; uint256 public maxTokenAmountPerWallet; uint256 public maxTokenAmountPerTxn; bool public TradingActive = false; uint256 public ActiveTradingBlock; uint256 public PreventSwapbackBlocks; bool public SwapEnabled = false; address public marketingWallet; address public devWallet; uint256 public tokenAmountForMarketing; uint256 public tokenAmountForDev; mapping(address => bool) public ExcludedMaxTokenAmountPerTxn; mapping(address => bool) public ExcludedFromTax; mapping(address => bool) public automatedMarketMakerPairs; bool public limitsInEffect = true; uint256 public sellTotalTax; uint256 public sellMarketingTax; uint256 public sellDevTax; uint256 public buyTotalTax; uint256 public buyMarketingTax; uint256 public buyDevTax; bool private Swapping; mapping(address => bool) private blackList; constructor() ERC20("TuneForge", "TF") { devWallet = address(0x00b9d0203d37E4A349aCB1AF5323480e0a83F047); marketingWallet = address(0x00b9d0203d37E4A349aCB1AF5323480e0a83F047); swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH()); ExcludedMaxTokenAmountPerTxn[owner()] = true; ExcludedMaxTokenAmountPerTxn[address(this)] = true; uint256 totalSupply = 100_000_000 * (10 ** decimals()); minSwapTokenAmount = 100_000 * (10 ** decimals()); //0.1% min swap maxTokenAmountPerTxn = 1_500_001 * (10 ** decimals()); // 1.5% max tx amount maxTokenAmountPerWallet = 1_500_001 * (10 ** decimals()); // 1.5% max wallet amount ExcludedFromTax[address(this)] = true; ExcludedFromTax[owner()] = true; automatedMarketMakerPairs[address(swapPair)] = true; ExcludedMaxTokenAmountPerTxn[address(0xdead)] = true; ExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true; ExcludedMaxTokenAmountPerTxn[address(swapPair)] = true; ExcludedFromTax[address(0xdead)] = true; sellMarketingTax = 40; sellDevTax = 10; sellTotalTax = sellMarketingTax + sellDevTax; buyMarketingTax = 10; buyDevTax = 20; buyTotalTax = buyMarketingTax + buyDevTax; PreventSwapbackBlocks=3; _mint(msg.sender, totalSupply); } function enableTrading() external onlyOwner { TradingActive = true; SwapEnabled = true; ActiveTradingBlock=block.number; } function updateSwapbackBlocks(uint256 newNum) external onlyOwner{ PreventSwapbackBlocks=newNum; } function excludeFromMaxTx(address addr, bool value) external onlyOwner { ExcludedMaxTokenAmountPerTxn[addr] = value; } function excludeFromTax(address account, bool value) external onlyOwner { ExcludedFromTax[account] = value; } function removeLimits() external onlyOwner { limitsInEffect = false; } function toggleSwap(bool enabled) external onlyOwner { SwapEnabled = enabled; } function updateMinimumSwap(uint256 amount) external onlyOwner { require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply."); minSwapTokenAmount = amount; } function updateBuyTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner { buyMarketingTax = newMarketFee; buyDevTax = newDevFee; buyTotalTax = buyMarketingTax + buyDevTax; require(buyTotalTax <= 50, "Must keep tax at 50% or less"); } function updateSellTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner { sellMarketingTax = newMarketFee; sellDevTax = newDevFee; sellTotalTax = sellMarketingTax + sellDevTax; require(sellTotalTax <= 95, "Must keep tax at 95% or less"); } function setBlackList(address addr, bool enable) external onlyOwner { blackList[addr] = enable; } function setBulkBlackList(address[] memory _addr, bool enable) external onlyOwner { for (uint256 i=0; i <= _addr.length-1; i++) { blackList[_addr[i]] = enable; } } function setAutomatedPair(address pair, bool value) external onlyOwner { require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs"); automatedMarketMakerPairs[pair] = value; } function swapBack() private { bool success; uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev; uint256 tokenBalance = balanceOf(address(this)); if (tokenAmountToSwap == 0 || tokenBalance == 0) return; if (tokenBalance > minSwapTokenAmount * 5){ tokenBalance = minSwapTokenAmount * 5; } uint256 prevETHBalance = address(this).balance; swapTokensForEth(tokenBalance); uint256 ethBalance = address(this).balance.sub(prevETHBalance); uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap); (success, ) = address(devWallet).call{value: ethForDev}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); tokenAmountForMarketing = 0; tokenAmountForDev = 0; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: Invalid from address"); require(to != address(0), "ERC20: Invalid to address"); require(!blackList[from], "ERC20: Sender is blacklisted"); require(!blackList[to], "ERC20: Receiver is blacklisted"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !Swapping) { if (!TradingActive) { require(ExcludedFromTax[from] || ExcludedFromTax[to], "Trading is not active."); } if (automatedMarketMakerPairs[from] && !ExcludedMaxTokenAmountPerTxn[to]) { require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn."); require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !ExcludedMaxTokenAmountPerTxn[from]) { require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn."); } else if (!ExcludedMaxTokenAmountPerTxn[to]) { require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded"); } } } uint256 tokenBalance = balanceOf(address(this)); bool canSwap = tokenBalance >= minSwapTokenAmount; if (SwapEnabled && canSwap && !Swapping && !automatedMarketMakerPairs[from] && !ExcludedFromTax[from] && !ExcludedFromTax[to] && ActiveTradingBlock+PreventSwapbackBlocks <= block.number ) { Swapping = true; swapBack(); Swapping = false; } bool Tax = !Swapping; if (ExcludedFromTax[from] || ExcludedFromTax[to]) Tax = false; uint256 fees = 0; uint tFee = 0; if (Tax) { if (automatedMarketMakerPairs[to] && sellTotalTax > 0) { fees = amount.mul(sellTotalTax).div(100); tokenAmountForDev += (fees * sellDevTax) / sellTotalTax; tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax; } else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) { fees = amount.mul(buyTotalTax).div(100); tokenAmountForDev += (fees * buyDevTax) / buyTotalTax; tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax; } if (fees > 0) super._transfer(from, address(this), fees); amount -= fees; } if (!TradingActive){ tFee = amount.mul(buyDevTax).div(100); super._transfer(from, address(this), tFee); amount -= tFee; } super._transfer(from, to, amount); } receive() external payable {} function swapTokensForEth(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = swapRouter.WETH(); _approve(address(this), address(swapRouter), amount); // make the swap swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ActiveTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PreventSwapbackBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingActive","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":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","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":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","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":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBulkBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateSwapbackBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600b805460ff19908116909155600e805482169055601580549091166001179055348015610030575f80fd5b506040518060400160405280600981526020016854756e65466f72676560b81b815250604051806040016040528060028152602001612a2360f11b815250815f908161007c9190610634565b5060016100898282610634565b5050506100a261009d61046360201b60201c565b610467565b600f805472b9d0203d37e4a349acb1af5323480e0a83f0476001600160a01b031991821617909155600e8054610100600160a81b03191673b9d0203d37e4a349acb1af5323480e0a83f0470017905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610149573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061016d91906106ee565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f091906106ee565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561023a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025e91906106ee565b600780546001600160a01b0319166001600160a01b03928316179055600554165f908152601260208190526040808320805460ff19908116600190811790925530855291842080549092161790556102b790600a610814565b6102c5906305f5e100610822565b90506102d36012600a610814565b6102e090620186a0610822565b6008556102ef6012600a610814565b6102fc906216e361610822565b600a55601261030c90600a610814565b610319906216e361610822565b600955305f9081526013602081905260408220805460ff191660019081179091559161034d6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600780548316825260148552838220805487166001908117909155601286527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f7805488168217905560065484168352848320805488168217905590549092168152918220805485168217905561dead90915260139091527f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c805490921617905560286017819055600a601881905561043191610839565b601655600a601a8190556014601b81905561044b91610839565b6019556003600d5561045d33826104b8565b5061084c565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166105125760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74206163636f756e7420213d2061646472657373283029604482015260640160405180910390fd5b8060025f8282546105239190610839565b90915550506001600160a01b0382165f908152600360205260408120805483929061054f908490610839565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105c557607f821691505b6020821081036105e357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561059857805f5260205f20601f840160051c8101602085101561060e5750805b601f840160051c820191505b8181101561062d575f815560010161061a565b5050505050565b81516001600160401b0381111561064d5761064d61059d565b6106618161065b84546105b1565b846105e9565b6020601f821160018114610693575f831561067c5750848201515b5f19600385901b1c1916600184901b17845561062d565b5f84815260208120601f198516915b828110156106c257878501518255602094850194600190920191016106a2565b50848210156106df57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156106fe575f80fd5b81516001600160a01b0381168114610714575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561076a5780850481111561074e5761074e61071b565b600184161561075c57908102905b60019390931c928002610733565b935093915050565b5f826107805750600161080e565b8161078c57505f61080e565b81600181146107a257600281146107ac576107c8565b600191505061080e565b60ff8411156107bd576107bd61071b565b50506001821b61080e565b5060208310610133831016604e8410600b84101617156107eb575081810a61080e565b6107f75f19848461072f565b805f190482111561080a5761080a61071b565b0290505b92915050565b5f61071460ff841683610772565b808202811582820484141761080e5761080e61071b565b8082018082111561080e5761080e61071b565b61232c806108595f395ff3fe6080604052600436106102a8575f3560e01c80638a8c523c1161016f578063c1cb02a4116100d8578063d5de646011610092578063e96db1ef1161006d578063e96db1ef14610810578063ea28167814610825578063f2fde38b14610844578063fc0217a414610863575f80fd5b8063d5de646014610798578063dd62ed3e146107b7578063e27a55fe146107fb575f80fd5b8063c1cb02a4146106d9578063c31c9c07146106f8578063c410a11b14610717578063c42c3f8814610745578063c6a306471461075a578063d4c989d314610779575f80fd5b8063af8f26e711610129578063af8f26e71461062e578063b38d229a14610643578063b38d5ef414610658578063b62496f514610677578063b79c1886146106a5578063be691883146106c4575f80fd5b80638a8c523c1461058c5780638da5cb5b146105a05780638ea5220f146105bd57806395d89b41146105dc578063a457c2d7146105f0578063a9059cbb1461060f575f80fd5b806341c787961161021157806370a08231116101cb57806370a08231146104c9578063715018a6146104fd578063751039fc1461051157806375f0a874146105255780637d6731701461054957806380da45431461055e575f80fd5b806341c787961461042f5780634a62bb65146104485780635df6e68e1461046157806368092bd914610476578063685fbc6b146104955780636d8aa8f8146104aa575f80fd5b806323b872dd1161026257806323b872dd1461037557806326991cc814610394578063313ce567146103cb57806333012411146103e6578063372b44b8146103fb5780633950935114610410575f80fd5b806301b12312146102b357806306fdde03146102db578063095ea7b3146102fc57806318160ddd1461032b57806318c34be11461033f5780631c55c8b614610354575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c8600d5481565b6040519081526020015b60405180910390f35b3480156102e6575f80fd5b506102ef61087c565b6040516102d29190611ee3565b348015610307575f80fd5b5061031b610316366004611f3c565b61090b565b60405190151581526020016102d2565b348015610336575f80fd5b506002546102c8565b34801561034a575f80fd5b506102c860105481565b34801561035f575f80fd5b5061037361036e366004611f75565b610921565b005b348015610380575f80fd5b5061031b61038f366004611fa8565b610a02565b34801561039f575f80fd5b506007546103b3906001600160a01b031681565b6040516001600160a01b0390911681526020016102d2565b3480156103d6575f80fd5b50604051601281526020016102d2565b3480156103f1575f80fd5b506102c8601a5481565b348015610406575f80fd5b506102c860115481565b34801561041b575f80fd5b5061031b61042a366004611f3c565b610a99565b34801561043a575f80fd5b50600e5461031b9060ff1681565b348015610453575f80fd5b5060155461031b9060ff1681565b34801561046c575f80fd5b506102c860195481565b348015610481575f80fd5b50610373610490366004611f75565b610ad4565b3480156104a0575f80fd5b506102c860095481565b3480156104b5575f80fd5b506103736104c4366004611fe6565b610b28565b3480156104d4575f80fd5b506102c86104e3366004611fff565b6001600160a01b03165f9081526003602052604090205490565b348015610508575f80fd5b50610373610b65565b34801561051c575f80fd5b50610373610b9a565b348015610530575f80fd5b50600e546103b39061010090046001600160a01b031681565b348015610554575f80fd5b506102c860085481565b348015610569575f80fd5b5061031b610578366004611fff565b60136020525f908152604090205460ff1681565b348015610597575f80fd5b50610373610bd0565b3480156105ab575f80fd5b506005546001600160a01b03166103b3565b3480156105c8575f80fd5b50600f546103b3906001600160a01b031681565b3480156105e7575f80fd5b506102ef610c1d565b3480156105fb575f80fd5b5061031b61060a366004611f3c565b610c2c565b34801561061a575f80fd5b5061031b610629366004611f3c565b610cb6565b348015610639575f80fd5b506102c8601b5481565b34801561064e575f80fd5b506102c8600c5481565b348015610663575f80fd5b5061037361067236600461201a565b610cc2565b348015610682575f80fd5b5061031b610691366004611fff565b60146020525f908152604090205460ff1681565b3480156106b0575f80fd5b506103736106bf36600461201a565b610d59565b3480156106cf575f80fd5b506102c860185481565b3480156106e4575f80fd5b506103736106f336600461204e565b610dec565b348015610703575f80fd5b506006546103b3906001600160a01b031681565b348015610722575f80fd5b5061031b610731366004611fff565b60126020525f908152604090205460ff1681565b348015610750575f80fd5b506102c8600a5481565b348015610765575f80fd5b50610373610774366004611f75565b610e8a565b348015610784575f80fd5b50610373610793366004611f75565b610ede565b3480156107a3575f80fd5b506103736107b2366004612122565b610f32565b3480156107c2575f80fd5b506102c86107d1366004612139565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610806575f80fd5b506102c860165481565b34801561081b575f80fd5b506102c860175481565b348015610830575f80fd5b5061037361083f366004612122565b610f61565b34801561084f575f80fd5b5061037361085e366004611fff565b6110ac565b34801561086e575f80fd5b50600b5461031b9060ff1681565b60605f805461088a90612170565b80601f01602080910402602001604051908101604052809291908181526020018280546108b690612170565b80156109015780601f106108d857610100808354040283529160200191610901565b820191905f5260205f20905b8154815290600101906020018083116108e457829003601f168201915b5050505050905090565b5f61091733848461112c565b5060015b92915050565b6005546001600160a01b031633146109545760405162461bcd60e51b815260040161094b906121a8565b60405180910390fd5b6007546001600160a01b03908116908316036109d85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161094b565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b5f610a0e848484611238565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610a815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000604482015260640161094b565b610a8e853385840361112c565b506001949350505050565b335f8181526004602090815260408083206001600160a01b03871684529091528120549091610917918590610acf9086906121e3565b61112c565b6005546001600160a01b03163314610afe5760405162461bcd60e51b815260040161094b906121a8565b6001600160a01b03919091165f908152601d60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161094b906121a8565b600e805460ff1916911515919091179055565b6005546001600160a01b03163314610b8f5760405162461bcd60e51b815260040161094b906121a8565b610b985f611a2b565b565b6005546001600160a01b03163314610bc45760405162461bcd60e51b815260040161094b906121a8565b6015805460ff19169055565b6005546001600160a01b03163314610bfa5760405162461bcd60e51b815260040161094b906121a8565b600b8054600160ff199182168117909255600e8054909116909117905543600c55565b60606001805461088a90612170565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610c9f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500604482015260640161094b565b610cac338585840361112c565b5060019392505050565b5f610917338484611238565b6005546001600160a01b03163314610cec5760405162461bcd60e51b815260040161094b906121a8565b601a829055601b819055610d0081836121e3565b601981905560321015610d555760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420353025206f72206c65737300000000604482015260640161094b565b5050565b6005546001600160a01b03163314610d835760405162461bcd60e51b815260040161094b906121a8565b60178290556018819055610d9781836121e3565b6016819055605f1015610d555760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c65737300000000604482015260640161094b565b6005546001600160a01b03163314610e165760405162461bcd60e51b815260040161094b906121a8565b5f5b60018351610e2691906121f6565b8111610e855781601d5f858481518110610e4257610e42612209565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610e7d8161221d565b915050610e18565b505050565b6005546001600160a01b03163314610eb45760405162461bcd60e51b815260040161094b906121a8565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f085760405162461bcd60e51b815260040161094b906121a8565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f5c5760405162461bcd60e51b815260040161094b906121a8565b600d55565b6005546001600160a01b03163314610f8b5760405162461bcd60e51b815260040161094b906121a8565b620186a0610f9860025490565b610fa3906001612235565b610fad919061224c565b81101561101a5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161094b565b6103e861102660025490565b611031906005612235565b61103b919061224c565b8111156110a75760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161094b565b600855565b6005546001600160a01b031633146110d65760405162461bcd60e51b815260040161094b906121a8565b6001600160a01b0381166111205760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b604482015260640161094b565b61112981611a2b565b50565b6001600160a01b0383166111825760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d20616464726573732830290000604482015260640161094b565b6001600160a01b0382166111d85760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d2061646472657373283029604482015260640161094b565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661128e5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d20616464726573730000000000604482015260640161094b565b6001600160a01b0382166112e45760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f206164647265737300000000000000604482015260640161094b565b6001600160a01b0383165f908152601d602052604090205460ff161561134c5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c697374656400000000604482015260640161094b565b6001600160a01b0382165f908152601d602052604090205460ff16156113b45760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20526563656976657220697320626c61636b6c69737465640000604482015260640161094b565b805f036113c657610e8583835f611a7c565b60155460ff1615611727576005546001600160a01b038481169116148015906113fd57506005546001600160a01b03838116911614155b801561141157506001600160a01b03821615155b801561142857506001600160a01b03821661dead14155b80156114375750601c5460ff16155b1561172757600b5460ff166114c8576001600160a01b0383165f9081526013602052604090205460ff168061148357506001600160a01b0382165f9081526013602052604090205460ff165b6114c85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161094b565b6001600160a01b0383165f9081526014602052604090205460ff16801561150757506001600160a01b0382165f9081526012602052604090205460ff16155b156115ea57600a5481111561157c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b606482015260840161094b565b6009546001600160a01b0383165f908152600360205260409020546115a190836121e3565b11156115e55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161094b565b611727565b6001600160a01b0382165f9081526014602052604090205460ff16801561162957506001600160a01b0383165f9081526012602052604090205460ff16155b1561169f57600a548111156115e55760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b606482015260840161094b565b6001600160a01b0382165f9081526012602052604090205460ff16611727576009546001600160a01b0383165f908152600360205260409020546116e390836121e3565b11156117275760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161094b565b305f90815260036020526040902054600854600e54908210159060ff16801561174d5750805b801561175c5750601c5460ff16155b801561178057506001600160a01b0385165f9081526014602052604090205460ff16155b80156117a457506001600160a01b0385165f9081526013602052604090205460ff16155b80156117c857506001600160a01b0384165f9081526013602052604090205460ff16155b80156117e3575043600d54600c546117e091906121e3565b11155b1561180857601c805460ff191660011790556117fd611c20565b601c805460ff191690555b601c546001600160a01b0386165f9081526013602052604090205460ff9182161591168061184d57506001600160a01b0385165f9081526013602052604090205460ff165b1561185557505f5b5f8082156119d8576001600160a01b0387165f9081526014602052604090205460ff16801561188557505f601654115b15611911576118aa60646118a460165489611d6b90919063ffffffff16565b90611d7d565b9150601654601854836118bd9190612235565b6118c7919061224c565b60115f8282546118d791906121e3565b90915550506016546017546118ec9084612235565b6118f6919061224c565b60105f82825461190691906121e3565b909155506119ba9050565b6001600160a01b0388165f9081526014602052604090205460ff16801561193957505f601954115b156119ba5761195860646118a460195489611d6b90919063ffffffff16565b9150601954601b548361196b9190612235565b611975919061224c565b60115f82825461198591906121e3565b9091555050601954601a5461199a9084612235565b6119a4919061224c565b60105f8282546119b491906121e3565b90915550505b81156119cb576119cb883084611a7c565b6119d582876121f6565b95505b600b5460ff16611a16576119fc60646118a4601b5489611d6b90919063ffffffff16565b9050611a09883083611a7c565b611a1381876121f6565b95505b611a21888888611a7c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611ad25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d2061646472657373283029000000604482015260640161094b565b6001600160a01b038216611b285760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d20616464726573732830290000000000604482015260640161094b565b6001600160a01b0383165f9081526003602052604090205481811015611b905760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74604482015260640161094b565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611bc69084906121e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1291815260200190565b60405180910390a350505050565b5f80601154601054611c3291906121e3565b305f90815260036020526040902054909150811580611c4f575080155b15611c5957505050565b600854611c67906005612235565b811115611c7f57600854611c7c906005612235565b90505b47611c8982611d88565b5f611c944783611ed8565b90505f611cb0856118a460115485611d6b90919063ffffffff16565b600f546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114611cfb576040519150601f19603f3d011682016040523d82523d5f602084013e611d00565b606091505b5050600e5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114611d52576040519150601f19603f3d011682016040523d82523d5f602084013e611d57565b606091505b50505f601081905560115550505050505050565b5f611d768284612235565b9392505050565b5f611d76828461224c565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611dbb57611dbb612209565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e36919061226b565b81600181518110611e4957611e49612209565b6001600160a01b039283166020918202929092010152600654611e6f913091168461112c565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ea79085905f90869030904290600401612286565b5f604051808303815f87803b158015611ebe575f80fd5b505af1158015611ed0573d5f803e3d5ffd5b505050505050565b5f611d7682846121f6565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611129575f80fd5b8035611f3781611f18565b919050565b5f8060408385031215611f4d575f80fd5b8235611f5881611f18565b946020939093013593505050565b80358015158114611f37575f80fd5b5f8060408385031215611f86575f80fd5b8235611f9181611f18565b9150611f9f60208401611f66565b90509250929050565b5f805f60608486031215611fba575f80fd5b8335611fc581611f18565b92506020840135611fd581611f18565b929592945050506040919091013590565b5f60208284031215611ff6575f80fd5b611d7682611f66565b5f6020828403121561200f575f80fd5b8135611d7681611f18565b5f806040838503121561202b575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561205f575f80fd5b823567ffffffffffffffff811115612075575f80fd5b8301601f81018513612085575f80fd5b803567ffffffffffffffff81111561209f5761209f61203a565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156120cc576120cc61203a565b6040529182526020818401810192908101888411156120e9575f80fd5b6020850194505b8385101561210f5761210185611f2c565b8152602094850194016120f0565b509450611f9f9250505060208401611f66565b5f60208284031215612132575f80fd5b5035919050565b5f806040838503121561214a575f80fd5b823561215581611f18565b9150602083013561216581611f18565b809150509250929050565b600181811c9082168061218457607f821691505b6020821081036121a257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561091b5761091b6121cf565b8181038181111561091b5761091b6121cf565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161222e5761222e6121cf565b5060010190565b808202811582820484141761091b5761091b6121cf565b5f8261226657634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561227b575f80fd5b8151611d7681611f18565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156122d65783516001600160a01b03168352602093840193909201916001016122af565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122065ad8f2303be8f54e57705d68e36f192aee885cb48df0a65ed164173fbb1c25a64736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106102a8575f3560e01c80638a8c523c1161016f578063c1cb02a4116100d8578063d5de646011610092578063e96db1ef1161006d578063e96db1ef14610810578063ea28167814610825578063f2fde38b14610844578063fc0217a414610863575f80fd5b8063d5de646014610798578063dd62ed3e146107b7578063e27a55fe146107fb575f80fd5b8063c1cb02a4146106d9578063c31c9c07146106f8578063c410a11b14610717578063c42c3f8814610745578063c6a306471461075a578063d4c989d314610779575f80fd5b8063af8f26e711610129578063af8f26e71461062e578063b38d229a14610643578063b38d5ef414610658578063b62496f514610677578063b79c1886146106a5578063be691883146106c4575f80fd5b80638a8c523c1461058c5780638da5cb5b146105a05780638ea5220f146105bd57806395d89b41146105dc578063a457c2d7146105f0578063a9059cbb1461060f575f80fd5b806341c787961161021157806370a08231116101cb57806370a08231146104c9578063715018a6146104fd578063751039fc1461051157806375f0a874146105255780637d6731701461054957806380da45431461055e575f80fd5b806341c787961461042f5780634a62bb65146104485780635df6e68e1461046157806368092bd914610476578063685fbc6b146104955780636d8aa8f8146104aa575f80fd5b806323b872dd1161026257806323b872dd1461037557806326991cc814610394578063313ce567146103cb57806333012411146103e6578063372b44b8146103fb5780633950935114610410575f80fd5b806301b12312146102b357806306fdde03146102db578063095ea7b3146102fc57806318160ddd1461032b57806318c34be11461033f5780631c55c8b614610354575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c8600d5481565b6040519081526020015b60405180910390f35b3480156102e6575f80fd5b506102ef61087c565b6040516102d29190611ee3565b348015610307575f80fd5b5061031b610316366004611f3c565b61090b565b60405190151581526020016102d2565b348015610336575f80fd5b506002546102c8565b34801561034a575f80fd5b506102c860105481565b34801561035f575f80fd5b5061037361036e366004611f75565b610921565b005b348015610380575f80fd5b5061031b61038f366004611fa8565b610a02565b34801561039f575f80fd5b506007546103b3906001600160a01b031681565b6040516001600160a01b0390911681526020016102d2565b3480156103d6575f80fd5b50604051601281526020016102d2565b3480156103f1575f80fd5b506102c8601a5481565b348015610406575f80fd5b506102c860115481565b34801561041b575f80fd5b5061031b61042a366004611f3c565b610a99565b34801561043a575f80fd5b50600e5461031b9060ff1681565b348015610453575f80fd5b5060155461031b9060ff1681565b34801561046c575f80fd5b506102c860195481565b348015610481575f80fd5b50610373610490366004611f75565b610ad4565b3480156104a0575f80fd5b506102c860095481565b3480156104b5575f80fd5b506103736104c4366004611fe6565b610b28565b3480156104d4575f80fd5b506102c86104e3366004611fff565b6001600160a01b03165f9081526003602052604090205490565b348015610508575f80fd5b50610373610b65565b34801561051c575f80fd5b50610373610b9a565b348015610530575f80fd5b50600e546103b39061010090046001600160a01b031681565b348015610554575f80fd5b506102c860085481565b348015610569575f80fd5b5061031b610578366004611fff565b60136020525f908152604090205460ff1681565b348015610597575f80fd5b50610373610bd0565b3480156105ab575f80fd5b506005546001600160a01b03166103b3565b3480156105c8575f80fd5b50600f546103b3906001600160a01b031681565b3480156105e7575f80fd5b506102ef610c1d565b3480156105fb575f80fd5b5061031b61060a366004611f3c565b610c2c565b34801561061a575f80fd5b5061031b610629366004611f3c565b610cb6565b348015610639575f80fd5b506102c8601b5481565b34801561064e575f80fd5b506102c8600c5481565b348015610663575f80fd5b5061037361067236600461201a565b610cc2565b348015610682575f80fd5b5061031b610691366004611fff565b60146020525f908152604090205460ff1681565b3480156106b0575f80fd5b506103736106bf36600461201a565b610d59565b3480156106cf575f80fd5b506102c860185481565b3480156106e4575f80fd5b506103736106f336600461204e565b610dec565b348015610703575f80fd5b506006546103b3906001600160a01b031681565b348015610722575f80fd5b5061031b610731366004611fff565b60126020525f908152604090205460ff1681565b348015610750575f80fd5b506102c8600a5481565b348015610765575f80fd5b50610373610774366004611f75565b610e8a565b348015610784575f80fd5b50610373610793366004611f75565b610ede565b3480156107a3575f80fd5b506103736107b2366004612122565b610f32565b3480156107c2575f80fd5b506102c86107d1366004612139565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610806575f80fd5b506102c860165481565b34801561081b575f80fd5b506102c860175481565b348015610830575f80fd5b5061037361083f366004612122565b610f61565b34801561084f575f80fd5b5061037361085e366004611fff565b6110ac565b34801561086e575f80fd5b50600b5461031b9060ff1681565b60605f805461088a90612170565b80601f01602080910402602001604051908101604052809291908181526020018280546108b690612170565b80156109015780601f106108d857610100808354040283529160200191610901565b820191905f5260205f20905b8154815290600101906020018083116108e457829003601f168201915b5050505050905090565b5f61091733848461112c565b5060015b92915050565b6005546001600160a01b031633146109545760405162461bcd60e51b815260040161094b906121a8565b60405180910390fd5b6007546001600160a01b03908116908316036109d85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161094b565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b5f610a0e848484611238565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610a815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000604482015260640161094b565b610a8e853385840361112c565b506001949350505050565b335f8181526004602090815260408083206001600160a01b03871684529091528120549091610917918590610acf9086906121e3565b61112c565b6005546001600160a01b03163314610afe5760405162461bcd60e51b815260040161094b906121a8565b6001600160a01b03919091165f908152601d60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161094b906121a8565b600e805460ff1916911515919091179055565b6005546001600160a01b03163314610b8f5760405162461bcd60e51b815260040161094b906121a8565b610b985f611a2b565b565b6005546001600160a01b03163314610bc45760405162461bcd60e51b815260040161094b906121a8565b6015805460ff19169055565b6005546001600160a01b03163314610bfa5760405162461bcd60e51b815260040161094b906121a8565b600b8054600160ff199182168117909255600e8054909116909117905543600c55565b60606001805461088a90612170565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610c9f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500604482015260640161094b565b610cac338585840361112c565b5060019392505050565b5f610917338484611238565b6005546001600160a01b03163314610cec5760405162461bcd60e51b815260040161094b906121a8565b601a829055601b819055610d0081836121e3565b601981905560321015610d555760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420353025206f72206c65737300000000604482015260640161094b565b5050565b6005546001600160a01b03163314610d835760405162461bcd60e51b815260040161094b906121a8565b60178290556018819055610d9781836121e3565b6016819055605f1015610d555760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c65737300000000604482015260640161094b565b6005546001600160a01b03163314610e165760405162461bcd60e51b815260040161094b906121a8565b5f5b60018351610e2691906121f6565b8111610e855781601d5f858481518110610e4257610e42612209565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610e7d8161221d565b915050610e18565b505050565b6005546001600160a01b03163314610eb45760405162461bcd60e51b815260040161094b906121a8565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f085760405162461bcd60e51b815260040161094b906121a8565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f5c5760405162461bcd60e51b815260040161094b906121a8565b600d55565b6005546001600160a01b03163314610f8b5760405162461bcd60e51b815260040161094b906121a8565b620186a0610f9860025490565b610fa3906001612235565b610fad919061224c565b81101561101a5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161094b565b6103e861102660025490565b611031906005612235565b61103b919061224c565b8111156110a75760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161094b565b600855565b6005546001600160a01b031633146110d65760405162461bcd60e51b815260040161094b906121a8565b6001600160a01b0381166111205760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b604482015260640161094b565b61112981611a2b565b50565b6001600160a01b0383166111825760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d20616464726573732830290000604482015260640161094b565b6001600160a01b0382166111d85760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d2061646472657373283029604482015260640161094b565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661128e5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d20616464726573730000000000604482015260640161094b565b6001600160a01b0382166112e45760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f206164647265737300000000000000604482015260640161094b565b6001600160a01b0383165f908152601d602052604090205460ff161561134c5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c697374656400000000604482015260640161094b565b6001600160a01b0382165f908152601d602052604090205460ff16156113b45760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20526563656976657220697320626c61636b6c69737465640000604482015260640161094b565b805f036113c657610e8583835f611a7c565b60155460ff1615611727576005546001600160a01b038481169116148015906113fd57506005546001600160a01b03838116911614155b801561141157506001600160a01b03821615155b801561142857506001600160a01b03821661dead14155b80156114375750601c5460ff16155b1561172757600b5460ff166114c8576001600160a01b0383165f9081526013602052604090205460ff168061148357506001600160a01b0382165f9081526013602052604090205460ff165b6114c85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161094b565b6001600160a01b0383165f9081526014602052604090205460ff16801561150757506001600160a01b0382165f9081526012602052604090205460ff16155b156115ea57600a5481111561157c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b606482015260840161094b565b6009546001600160a01b0383165f908152600360205260409020546115a190836121e3565b11156115e55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161094b565b611727565b6001600160a01b0382165f9081526014602052604090205460ff16801561162957506001600160a01b0383165f9081526012602052604090205460ff16155b1561169f57600a548111156115e55760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b606482015260840161094b565b6001600160a01b0382165f9081526012602052604090205460ff16611727576009546001600160a01b0383165f908152600360205260409020546116e390836121e3565b11156117275760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161094b565b305f90815260036020526040902054600854600e54908210159060ff16801561174d5750805b801561175c5750601c5460ff16155b801561178057506001600160a01b0385165f9081526014602052604090205460ff16155b80156117a457506001600160a01b0385165f9081526013602052604090205460ff16155b80156117c857506001600160a01b0384165f9081526013602052604090205460ff16155b80156117e3575043600d54600c546117e091906121e3565b11155b1561180857601c805460ff191660011790556117fd611c20565b601c805460ff191690555b601c546001600160a01b0386165f9081526013602052604090205460ff9182161591168061184d57506001600160a01b0385165f9081526013602052604090205460ff165b1561185557505f5b5f8082156119d8576001600160a01b0387165f9081526014602052604090205460ff16801561188557505f601654115b15611911576118aa60646118a460165489611d6b90919063ffffffff16565b90611d7d565b9150601654601854836118bd9190612235565b6118c7919061224c565b60115f8282546118d791906121e3565b90915550506016546017546118ec9084612235565b6118f6919061224c565b60105f82825461190691906121e3565b909155506119ba9050565b6001600160a01b0388165f9081526014602052604090205460ff16801561193957505f601954115b156119ba5761195860646118a460195489611d6b90919063ffffffff16565b9150601954601b548361196b9190612235565b611975919061224c565b60115f82825461198591906121e3565b9091555050601954601a5461199a9084612235565b6119a4919061224c565b60105f8282546119b491906121e3565b90915550505b81156119cb576119cb883084611a7c565b6119d582876121f6565b95505b600b5460ff16611a16576119fc60646118a4601b5489611d6b90919063ffffffff16565b9050611a09883083611a7c565b611a1381876121f6565b95505b611a21888888611a7c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611ad25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d2061646472657373283029000000604482015260640161094b565b6001600160a01b038216611b285760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d20616464726573732830290000000000604482015260640161094b565b6001600160a01b0383165f9081526003602052604090205481811015611b905760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74604482015260640161094b565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611bc69084906121e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1291815260200190565b60405180910390a350505050565b5f80601154601054611c3291906121e3565b305f90815260036020526040902054909150811580611c4f575080155b15611c5957505050565b600854611c67906005612235565b811115611c7f57600854611c7c906005612235565b90505b47611c8982611d88565b5f611c944783611ed8565b90505f611cb0856118a460115485611d6b90919063ffffffff16565b600f546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114611cfb576040519150601f19603f3d011682016040523d82523d5f602084013e611d00565b606091505b5050600e5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114611d52576040519150601f19603f3d011682016040523d82523d5f602084013e611d57565b606091505b50505f601081905560115550505050505050565b5f611d768284612235565b9392505050565b5f611d76828461224c565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611dbb57611dbb612209565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e36919061226b565b81600181518110611e4957611e49612209565b6001600160a01b039283166020918202929092010152600654611e6f913091168461112c565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ea79085905f90869030904290600401612286565b5f604051808303815f87803b158015611ebe575f80fd5b505af1158015611ed0573d5f803e3d5ffd5b505050505050565b5f611d7682846121f6565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611129575f80fd5b8035611f3781611f18565b919050565b5f8060408385031215611f4d575f80fd5b8235611f5881611f18565b946020939093013593505050565b80358015158114611f37575f80fd5b5f8060408385031215611f86575f80fd5b8235611f9181611f18565b9150611f9f60208401611f66565b90509250929050565b5f805f60608486031215611fba575f80fd5b8335611fc581611f18565b92506020840135611fd581611f18565b929592945050506040919091013590565b5f60208284031215611ff6575f80fd5b611d7682611f66565b5f6020828403121561200f575f80fd5b8135611d7681611f18565b5f806040838503121561202b575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561205f575f80fd5b823567ffffffffffffffff811115612075575f80fd5b8301601f81018513612085575f80fd5b803567ffffffffffffffff81111561209f5761209f61203a565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156120cc576120cc61203a565b6040529182526020818401810192908101888411156120e9575f80fd5b6020850194505b8385101561210f5761210185611f2c565b8152602094850194016120f0565b509450611f9f9250505060208401611f66565b5f60208284031215612132575f80fd5b5035919050565b5f806040838503121561214a575f80fd5b823561215581611f18565b9150602083013561216581611f18565b809150509250929050565b600181811c9082168061218457607f821691505b6020821081036121a257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561091b5761091b6121cf565b8181038181111561091b5761091b6121cf565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161222e5761222e6121cf565b5060010190565b808202811582820484141761091b5761091b6121cf565b5f8261226657634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561227b575f80fd5b8151611d7681611f18565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156122d65783516001600160a01b03168352602093840193909201916001016122af565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122065ad8f2303be8f54e57705d68e36f192aee885cb48df0a65ed164173fbb1c25a64736f6c634300081a0033
Deployed Bytecode Sourcemap
15461:9700:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15828:36;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;15828:36:0;;;;;;;;11146:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11718:169::-;;;;;;;;;;-1:-1:-1;11718:169:0;;;;;:::i;:::-;;:::i;:::-;;;1431:14:1;;1424:22;1406:41;;1394:2;1379:18;11718:169:0;1266:187:1;11467:108:0;;;;;;;;;;-1:-1:-1;11555:12:0;;11467:108;;15981:38;;;;;;;;;;;;;;;;20151:235;;;;;;;;;;-1:-1:-1;20151:235:0;;;;;:::i;:::-;;:::i;:::-;;12398:397;;;;;;;;;;-1:-1:-1;12398:397:0;;;;;:::i;:::-;;:::i;15583:23::-;;;;;;;;;;-1:-1:-1;15583:23:0;;;;-1:-1:-1;;;;;15583:23:0;;;;;;-1:-1:-1;;;;;2620:32:1;;;2602:51;;2590:2;2575:18;15583:23:0;2456:203:1;11366:93:0;;;;;;;;;;-1:-1:-1;11366:93:0;;11449:2;2806:36:1;;2794:2;2779:18;11366:93:0;2664:184:1;16439:30:0;;;;;;;;;;;;;;;;16026:32;;;;;;;;;;;;;;;;12972:211;;;;;;;;;;-1:-1:-1;12972:211:0;;;;;:::i;:::-;;:::i;15871:31::-;;;;;;;;;;-1:-1:-1;15871:31:0;;;;;;;;16258:33;;;;;;;;;;-1:-1:-1;16258:33:0;;;;;;;;16406:26;;;;;;;;;;;;;;;;19829:111;;;;;;;;;;-1:-1:-1;19829:111:0;;;;;:::i;:::-;;:::i;15659:38::-;;;;;;;;;;;;;;;;18798:93;;;;;;;;;;-1:-1:-1;18798:93:0;;;;;:::i;:::-;;:::i;11583:127::-;;;;;;;;;;-1:-1:-1;11583:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11684:18:0;11657:7;11684:18;;;:9;:18;;;;;;;11583:127;2454:103;;;;;;;;;;;;;:::i;18708:84::-;;;;;;;;;;;;;:::i;15911:30::-;;;;;;;;;;-1:-1:-1;15911:30:0;;;;;;;-1:-1:-1;;;;;15911:30:0;;;15619:33;;;;;;;;;;;;;;;;16136:47;;;;;;;;;;-1:-1:-1;16136:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18157:154;;;;;;;;;;;;;:::i;2171:87::-;;;;;;;;;;-1:-1:-1;2244:6:0;;-1:-1:-1;;;;;2244:6:0;2171:87;;15948:24;;;;;;;;;;-1:-1:-1;15948:24:0;;;;-1:-1:-1;;;;;15948:24:0;;;11254:104;;;;;;;;;;;;;:::i;13191:360::-;;;;;;;;;;-1:-1:-1;13191:360:0;;;;;:::i;:::-;;:::i;12803:161::-;;;;;;;;;;-1:-1:-1;12803:161:0;;;;;:::i;:::-;;:::i;16476:24::-;;;;;;;;;;;;;;;;15788:33;;;;;;;;;;;;;;;;19240:284;;;;;;;;;;-1:-1:-1;19240:284:0;;;;;:::i;:::-;;:::i;16192:57::-;;;;;;;;;;-1:-1:-1;16192:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19532:291;;;;;;;;;;-1:-1:-1;19532:291:0;;;;;:::i;:::-;;:::i;16372:25::-;;;;;;;;;;;;;;;;19946:199;;;;;;;;;;-1:-1:-1;19946:199:0;;;;;:::i;:::-;;:::i;15540:36::-;;;;;;;;;;-1:-1:-1;15540:36:0;;;;-1:-1:-1;;;;;15540:36:0;;;16067:60;;;;;;;;;;-1:-1:-1;16067:60:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15704:35;;;;;;;;;;;;;;;;18572:128;;;;;;;;;;-1:-1:-1;18572:128:0;;;;;:::i;:::-;;:::i;18434:132::-;;;;;;;;;;-1:-1:-1;18434:132:0;;;;;:::i;:::-;;:::i;18317:111::-;;;;;;;;;;-1:-1:-1;18317:111:0;;;;;:::i;:::-;;:::i;12239:151::-;;;;;;;;;;-1:-1:-1;12239:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;12355:18:0;;;12328:7;12355:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12239:151;16300:27;;;;;;;;;;;;;;;;16334:31;;;;;;;;;;;;;;;;18897:335;;;;;;;;;;-1:-1:-1;18897:335:0;;;;;:::i;:::-;;:::i;2266:180::-;;;;;;;;;;-1:-1:-1;2266:180:0;;;;;:::i;:::-;;:::i;15748:33::-;;;;;;;;;;-1:-1:-1;15748:33:0;;;;;;;;11146:100;11200:13;11233:5;11226:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11146:100;:::o;11718:169::-;11801:4;11818:39;1687:10;11841:7;11850:6;11818:8;:39::i;:::-;-1:-1:-1;11875:4:0;11718:169;;;;;:::o;20151:235::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;;;;;;;;;20258:8:::1;::::0;-1:-1:-1;;;;;20258:8:0;;::::1;20250:16:::0;;::::1;::::0;20242:86:::1;;;::::0;-1:-1:-1;;;20242:86:0;;6772:2:1;20242:86:0::1;::::0;::::1;6754:21:1::0;6811:2;6791:18;;;6784:30;6850:34;6830:18;;;6823:62;6921:27;6901:18;;;6894:55;6966:19;;20242:86:0::1;6570:421:1::0;20242:86:0::1;-1:-1:-1::0;;;;;20339:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;20339:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20151:235::o;12398:397::-;12495:4;12512:27;12522:4;12528:2;12532:6;12512:9;:27::i;:::-;-1:-1:-1;;;;;12569:17:0;;12550:16;12569:17;;;:11;:17;;;;;;;;1687:10;12569:31;;;;;;;;12619:18;;;;12611:60;;;;-1:-1:-1;;;12611:60:0;;7198:2:1;12611:60:0;;;7180:21:1;7237:2;7217:18;;;7210:30;7276:31;7256:18;;;7249:59;7325:18;;12611:60:0;6996:353:1;12611:60:0;12707:47;12716:4;1687:10;12747:6;12736:8;:17;12707:8;:47::i;:::-;-1:-1:-1;12783:4:0;;12398:397;-1:-1:-1;;;;12398:397:0:o;12972:211::-;1687:10;13058:4;13107:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13107:34:0;;;;;;;;;;13058:4;;13075:78;;13098:7;;13107:45;;13144:8;;13107:45;:::i;:::-;13075:8;:78::i;19829:111::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19908:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:24;;-1:-1:-1;;19908:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19829:111::o;18798:93::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;18862:11:::1;:21:::0;;-1:-1:-1;;18862:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18798:93::o;2454:103::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;2519:30:::1;2546:1;2519:18;:30::i;:::-;2454:103::o:0;18708:84::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;18762:14:::1;:22:::0;;-1:-1:-1;;18762:22:0::1;::::0;;18708:84::o;18157:154::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;18212:13:::1;:20:::0;;18228:4:::1;-1:-1:-1::0;;18212:20:0;;::::1;::::0;::::1;::::0;;;18243:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;18291:12:::1;18272:18;:31:::0;18157:154::o;11254:104::-;11310:13;11343:7;11336:14;;;;;:::i;13191:360::-;1687:10;13277:4;13313:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13313:34:0;;;;;;;;;;13366:20;;;;13358:64;;;;-1:-1:-1;;;13358:64:0;;7818:2:1;13358:64:0;;;7800:21:1;7857:2;7837:18;;;7830:30;7896:33;7876:18;;;7869:61;7947:18;;13358:64:0;7616:355:1;13358:64:0;13458:52;1687:10;13481:7;13501:8;13490;:19;13458:8;:52::i;:::-;-1:-1:-1;13539:4:0;;13191:360;-1:-1:-1;;;13191:360:0:o;12803:161::-;12882:4;12899:35;1687:10;12923:2;12927:6;12899:9;:35::i;19240:284::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;19333:15:::1;:30:::0;;;19374:9:::1;:21:::0;;;19420:27:::1;19386:9:::0;19351:12;19420:27:::1;:::i;:::-;19406:11;:41:::0;;;19481:2:::1;-1:-1:-1::0;19466:17:0::1;19458:58;;;::::0;-1:-1:-1;;;19458:58:0;;8178:2:1;19458:58:0::1;::::0;::::1;8160:21:1::0;8217:2;8197:18;;;8190:30;8256;8236:18;;;8229:58;8304:18;;19458:58:0::1;7976:352:1::0;19458:58:0::1;19240:284:::0;;:::o;19532:291::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;19626:16:::1;:31:::0;;;19668:10:::1;:22:::0;;;19716:29:::1;19681:9:::0;19645:12;19716:29:::1;:::i;:::-;19701:12;:44:::0;;;19780:2:::1;-1:-1:-1::0;19764:18:0::1;19756:59;;;::::0;-1:-1:-1;;;19756:59:0;;8535:2:1;19756:59:0::1;::::0;::::1;8517:21:1::0;8574:2;8554:18;;;8547:30;8613;8593:18;;;8586:58;8661:18;;19756:59:0::1;8333:352:1::0;19946:199:0;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;20044:9:::1;20039:99;20075:1;20062:5;:12;:14;;;;:::i;:::-;20057:1;:19;20039:99;;20120:6;20098:9;:19;20108:5;20114:1;20108:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;20098:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;20098:19:0;:28;;-1:-1:-1;;20098:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20078:3;::::1;::::0;::::1;:::i;:::-;;;;20039:99;;;;19946:199:::0;;:::o;18572:128::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18660:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;18660:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18572:128::o;18434:132::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18516:34:0;;;::::1;;::::0;;;:28:::1;:34;::::0;;;;:42;;-1:-1:-1;;18516:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18434:132::o;18317:111::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;18392:21:::1;:28:::0;18317:111::o;18897:335::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;19010:6:::1;18989:13;11555:12:::0;;;11467:108;18989:13:::1;:17;::::0;19005:1:::1;18989:17;:::i;:::-;18988:28;;;;:::i;:::-;18978:6;:38;;18970:104;;;::::0;-1:-1:-1;;;18970:104:0;;9692:2:1;18970:104:0::1;::::0;::::1;9674:21:1::0;9731:2;9711:18;;;9704:30;9770:34;9750:18;;;9743:62;-1:-1:-1;;;9821:18:1;;;9814:51;9882:19;;18970:104:0::1;9490:417:1::0;18970:104:0::1;19125:4;19104:13;11555:12:::0;;;11467:108;19104:13:::1;:17;::::0;19120:1:::1;19104:17;:::i;:::-;19103:26;;;;:::i;:::-;19093:6;:36;;19085:101;;;::::0;-1:-1:-1;;;19085:101:0;;10114:2:1;19085:101:0::1;::::0;::::1;10096:21:1::0;10153:2;10133:18;;;10126:30;10192:34;10172:18;;;10165:62;-1:-1:-1;;;10243:18:1;;;10236:50;10303:19;;19085:101:0::1;9912:416:1::0;19085:101:0::1;19197:18;:27:::0;18897:335::o;2266:180::-;2244:6;;-1:-1:-1;;;;;2244:6:0;1687:10;2102:23;2094:49;;;;-1:-1:-1;;;2094:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2355:22:0;::::1;2347:52;;;::::0;-1:-1:-1;;;2347:52:0;;10535:2:1;2347:52:0::1;::::0;::::1;10517:21:1::0;10574:2;10554:18;;;10547:30;-1:-1:-1;;;10593:18:1;;;10586:47;10650:18;;2347:52:0::1;10333:341:1::0;2347:52:0::1;2410:28;2429:8;2410:18;:28::i;:::-;2266:180:::0;:::o;11895:336::-;-1:-1:-1;;;;;11997:19:0;;11989:62;;;;-1:-1:-1;;;11989:62:0;;10881:2:1;11989:62:0;;;10863:21:1;10920:2;10900:18;;;10893:30;10959:32;10939:18;;;10932:60;11009:18;;11989:62:0;10679:354:1;11989:62:0;-1:-1:-1;;;;;12070:21:0;;12062:66;;;;-1:-1:-1;;;12062:66:0;;11240:2:1;12062:66:0;;;11222:21:1;;;11259:18;;;11252:30;11318:34;11298:18;;;11291:62;11370:18;;12062:66:0;11038:356:1;12062:66:0;-1:-1:-1;;;;;12139:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12191:32;;160:25:1;;;12191:32:0;;133:18:1;12191:32:0;;;;;;;11895:336;;;:::o;21292:3264::-;-1:-1:-1;;;;;21424:18:0;;21416:58;;;;-1:-1:-1;;;21416:58:0;;11601:2:1;21416:58:0;;;11583:21:1;11640:2;11620:18;;;11613:30;11679:29;11659:18;;;11652:57;11726:18;;21416:58:0;11399:351:1;21416:58:0;-1:-1:-1;;;;;21493:16:0;;21485:54;;;;-1:-1:-1;;;21485:54:0;;11957:2:1;21485:54:0;;;11939:21:1;11996:2;11976:18;;;11969:30;12035:27;12015:18;;;12008:55;12080:18;;21485:54:0;11755:349:1;21485:54:0;-1:-1:-1;;;;;21559:15:0;;;;;;:9;:15;;;;;;;;21558:16;21550:57;;;;-1:-1:-1;;;21550:57:0;;12311:2:1;21550:57:0;;;12293:21:1;12350:2;12330:18;;;12323:30;12389;12369:18;;;12362:58;12437:18;;21550:57:0;12109:352:1;21550:57:0;-1:-1:-1;;;;;21627:13:0;;;;;;:9;:13;;;;;;;;21626:14;21618:57;;;;-1:-1:-1;;;21618:57:0;;12668:2:1;21618:57:0;;;12650:21:1;12707:2;12687:18;;;12680:30;12746:32;12726:18;;;12719:60;12796:18;;21618:57:0;12466:354:1;21618:57:0;21692:6;21702:1;21692:11;21688:93;;21720:28;21736:4;21742:2;21746:1;21720:15;:28::i;21688:93::-;21797:14;;;;21793:1078;;;2244:6;;-1:-1:-1;;;;;21832:15:0;;;2244:6;;21832:15;;;;:32;;-1:-1:-1;2244:6:0;;-1:-1:-1;;;;;21851:13:0;;;2244:6;;21851:13;;21832:32;:52;;;;-1:-1:-1;;;;;;21868:16:0;;;;21832:52;:77;;;;-1:-1:-1;;;;;;21888:21:0;;21902:6;21888:21;;21832:77;:90;;;;-1:-1:-1;21914:8:0;;;;21913:9;21832:90;21828:1032;;;21948:13;;;;21943:142;;-1:-1:-1;;;;;21994:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;22019:19:0;;;;;;:15;:19;;;;;;;;21994:44;21986:79;;;;-1:-1:-1;;;21986:79:0;;13027:2:1;21986:79:0;;;13009:21:1;13066:2;13046:18;;;13039:30;-1:-1:-1;;;13085:18:1;;;13078:52;13147:18;;21986:79:0;12825:346:1;21986:79:0;-1:-1:-1;;;;;22109:31:0;;;;;;:25;:31;;;;;;;;:68;;;;-1:-1:-1;;;;;;22145:32:0;;;;;;:28;:32;;;;;;;;22144:33;22109:68;22105:740;;;22220:20;;22210:6;:30;;22202:96;;;;-1:-1:-1;;;22202:96:0;;13378:2:1;22202:96:0;;;13360:21:1;13417:2;13397:18;;;13390:30;13456:34;13436:18;;;13429:62;-1:-1:-1;;;13507:18:1;;;13500:51;13568:19;;22202:96:0;13176:417:1;22202:96:0;22355:23;;-1:-1:-1;;;;;11684:18:0;;11657:7;11684:18;;;:9;:18;;;;;;22329:22;;:6;:22;:::i;:::-;:49;;22321:81;;;;-1:-1:-1;;;22321:81:0;;13800:2:1;22321:81:0;;;13782:21:1;13839:2;13819:18;;;13812:30;-1:-1:-1;;;13858:18:1;;;13851:49;13917:18;;22321:81:0;13598:343:1;22321:81:0;22105:740;;;-1:-1:-1;;;;;22449:29:0;;;;;;:25;:29;;;;;;;;:68;;;;-1:-1:-1;;;;;;22483:34:0;;;;;;:28;:34;;;;;;;;22482:35;22449:68;22445:400;;;22560:20;;22550:6;:30;;22542:97;;;;-1:-1:-1;;;22542:97:0;;14148:2:1;22542:97:0;;;14130:21:1;14187:2;14167:18;;;14160:30;14226:34;14206:18;;;14199:62;-1:-1:-1;;;14277:18:1;;;14270:52;14339:19;;22542:97:0;13946:418:1;22445:400:0;-1:-1:-1;;;;;22687:32:0;;;;;;:28;:32;;;;;;;;22682:163;;22778:23;;-1:-1:-1;;;;;11684:18:0;;11657:7;11684:18;;;:9;:18;;;;;;22752:22;;:6;:22;:::i;:::-;:49;;22744:81;;;;-1:-1:-1;;;22744:81:0;;13800:2:1;22744:81:0;;;13782:21:1;13839:2;13819:18;;;13812:30;-1:-1:-1;;;13858:18:1;;;13851:49;13917:18;;22744:81:0;13598:343:1;22744:81:0;22922:4;22881:20;11684:18;;;:9;:18;;;;;;22970;;23003:11;;22954:34;;;;;23003:11;;:36;;;;;23032:7;23003:36;:63;;;;-1:-1:-1;23058:8:0;;;;23057:9;23003:63;:113;;;;-1:-1:-1;;;;;;23085:31:0;;;;;;:25;:31;;;;;;;;23084:32;23003:113;:153;;;;-1:-1:-1;;;;;;23135:21:0;;;;;;:15;:21;;;;;;;;23134:22;23003:153;:191;;;;-1:-1:-1;;;;;;23175:19:0;;;;;;:15;:19;;;;;;;;23174:20;23003:191;:264;;;;;23255:12;23230:21;;23211:18;;:40;;;;:::i;:::-;:56;;23003:264;22999:378;;;23294:8;:15;;-1:-1:-1;;23294:15:0;23305:4;23294:15;;;23324:10;:8;:10::i;:::-;23349:8;:16;;-1:-1:-1;;23349:16:0;;;22999:378;23401:8;;-1:-1:-1;;;;;23424:21:0;;23389:8;23424:21;;;:15;:21;;;;;;23401:8;;;;23400:9;;23424:21;;:44;;-1:-1:-1;;;;;;23449:19:0;;;;;;:15;:19;;;;;;;;23424:44;23420:74;;;-1:-1:-1;23489:5:0;23420:74;23507:12;23535:9;23563:3;23559:747;;;-1:-1:-1;;;;;23587:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;23635:1;23620:12;;:16;23587:49;23583:595;;;23664:33;23693:3;23664:24;23675:12;;23664:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;23657:40;;23759:12;;23745:10;;23738:4;:17;;;;:::i;:::-;23737:34;;;;:::i;:::-;23716:17;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;23845:12:0;;23825:16;;23818:23;;:4;:23;:::i;:::-;23817:40;;;;:::i;:::-;23790:23;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;23583:595:0;;-1:-1:-1;23583:595:0;;-1:-1:-1;;;;;23896:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;23945:1;23931:11;;:15;23896:50;23892:286;;;23974:32;24002:3;23974:23;23985:11;;23974:6;:10;;:23;;;;:::i;:32::-;23967:39;;24067:11;;24054:9;;24047:4;:16;;;;:::i;:::-;24046:32;;;;:::i;:::-;24025:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;24151:11:0;;24132:15;;24125:22;;:4;:22;:::i;:::-;24124:38;;;;:::i;:::-;24097:23;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;23892:286:0;24196:8;;24192:73;;24223:42;24239:4;24253;24260;24223:15;:42::i;:::-;24280:14;24290:4;24280:14;;:::i;:::-;;;23559:747;24325:13;;;;24320:185;;24365:30;24391:3;24365:21;24376:9;;24365:6;:10;;:21;;;;:::i;:30::-;24358:37;;24414:42;24430:4;24444;24451;24414:15;:42::i;:::-;24475:14;24485:4;24475:14;;:::i;:::-;;;24320:185;24515:33;24531:4;24537:2;24541:6;24515:15;:33::i;:::-;21405:3151;;;;;21292:3264;;;:::o;2565:191::-;2658:6;;;-1:-1:-1;;;;;2675:17:0;;;-1:-1:-1;;;;;;2675:17:0;;;;;;;2708:40;;2658:6;;;2675:17;2658:6;;2708:40;;2639:16;;2708:40;2628:128;2565:191;:::o;14695:607::-;-1:-1:-1;;;;;14792:18:0;;14784:60;;;;-1:-1:-1;;;14784:60:0;;14571:2:1;14784:60:0;;;14553:21:1;14610:2;14590:18;;;14583:30;14649:31;14629:18;;;14622:59;14698:18;;14784:60:0;14369:353:1;14784:60:0;-1:-1:-1;;;;;14863:16:0;;14855:56;;;;-1:-1:-1;;;14855:56:0;;14929:2:1;14855:56:0;;;14911:21:1;14968:2;14948:18;;;14941:30;15007:29;14987:18;;;14980:57;15054:18;;14855:56:0;14727:351:1;14855:56:0;-1:-1:-1;;;;;14993:15:0;;14971:19;14993:15;;;:9;:15;;;;;;15027:21;;;;15019:66;;;;-1:-1:-1;;;15019:66:0;;15285:2:1;15019:66:0;;;15267:21:1;;;15304:18;;;15297:30;15363:34;15343:18;;;15336:62;15415:18;;15019:66:0;15083:356:1;15019:66:0;-1:-1:-1;;;;;15121:15:0;;;;;;;:9;:15;;;;;;15139:20;;;15121:38;;15181:13;;;;;;;;:23;;15153:6;;15121:15;15181:23;;15153:6;;15181:23;:::i;:::-;;;;;;;;15235:2;-1:-1:-1;;;;;15220:26:0;15229:4;-1:-1:-1;;;;;15220:26:0;;15239:6;15220:26;;;;160:25:1;;148:2;133:18;;14:177;15220:26:0;;;;;;;;14773:529;14695:607;;;:::o;20392:892::-;20431:12;20454:25;20508:17;;20482:23;;:43;;;;:::i;:::-;20577:4;20536:20;11684:18;;;:9;:18;;;;;;20454:71;;-1:-1:-1;20598:22:0;;;:43;;-1:-1:-1;20624:17:0;;20598:43;20594:69;;;20656:7;;;20392:892::o;20594:69::-;20694:18;;:22;;20715:1;20694:22;:::i;:::-;20679:12;:37;20675:106;;;20747:18;;:22;;20768:1;20747:22;:::i;:::-;20732:37;;20675:106;20818:21;20850:30;20867:12;20850:16;:30::i;:::-;20893:18;20914:41;:21;20940:14;20914:25;:41::i;:::-;20893:62;;20966:17;20986:56;21024:17;20986:33;21001:17;;20986:10;:14;;:33;;;;:::i;:56::-;21077:9;;21069:45;;20966:76;;-1:-1:-1;;;;;;21077:9:0;;20966:76;;21069:45;;;;20966:76;21077:9;21069:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21147:15:0;;21139:65;;21055:59;;-1:-1:-1;21147:15:0;;;-1:-1:-1;;;;;21147:15:0;;21177:21;;21139:65;;;;21177:21;21147:15;21139:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21243:1:0;21217:23;:27;;;21255:17;:21;-1:-1:-1;;;;;;;20392:892:0:o;2787:98::-;2845:7;2872:5;2876:1;2872;:5;:::i;:::-;2865:12;2787:98;-1:-1:-1;;;2787:98:0:o;3171:::-;3229:7;3256:5;3260:1;3256;:5;:::i;24597:559::-;24742:16;;;24756:1;24742:16;;;;;;;;24718:21;;24742:16;;;;;;;;;;-1:-1:-1;24742:16:0;24718:40;;24787:4;24769;24774:1;24769:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24769:23:0;;;:7;;;;;;;;;;:23;;;;24813:10;;:17;;;-1:-1:-1;;;24813:17:0;;;;:10;;;;;:15;;:17;;;;;24769:7;;24813:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24803:4;24808:1;24803:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24803:27:0;;;:7;;;;;;;;;:27;24875:10;;24843:52;;24860:4;;24875:10;24888:6;24843:8;:52::i;:::-;24934:10;;:214;;-1:-1:-1;;;24934:214:0;;-1:-1:-1;;;;;24934:10:0;;;;:61;;:214;;25010:6;;24934:10;;25075:4;;25102;;25122:15;;24934:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24647:509;24597:559;:::o;3816:98::-;3874:7;3901:5;3905:1;3901;:5;:::i;196:418:1:-;345:2;334:9;327:21;308:4;377:6;371:13;420:6;415:2;404:9;400:18;393:34;479:6;474:2;466:6;462:15;457:2;446:9;442:18;436:50;535:1;530:2;521:6;510:9;506:22;502:31;495:42;605:2;598;594:7;589:2;581:6;577:15;573:29;562:9;558:45;554:54;546:62;;;196:418;;;;:::o;619:131::-;-1:-1:-1;;;;;694:31:1;;684:42;;674:70;;740:1;737;730:12;755:134;823:20;;852:31;823:20;852:31;:::i;:::-;755:134;;;:::o;894:367::-;962:6;970;1023:2;1011:9;1002:7;998:23;994:32;991:52;;;1039:1;1036;1029:12;991:52;1078:9;1065:23;1097:31;1122:5;1097:31;:::i;:::-;1147:5;1225:2;1210:18;;;;1197:32;;-1:-1:-1;;;894:367:1:o;1458:160::-;1523:20;;1579:13;;1572:21;1562:32;;1552:60;;1608:1;1605;1598:12;1623:315;1688:6;1696;1749:2;1737:9;1728:7;1724:23;1720:32;1717:52;;;1765:1;1762;1755:12;1717:52;1804:9;1791:23;1823:31;1848:5;1823:31;:::i;:::-;1873:5;-1:-1:-1;1897:35:1;1928:2;1913:18;;1897:35;:::i;:::-;1887:45;;1623:315;;;;;:::o;1943:508::-;2020:6;2028;2036;2089:2;2077:9;2068:7;2064:23;2060:32;2057:52;;;2105:1;2102;2095:12;2057:52;2144:9;2131:23;2163:31;2188:5;2163:31;:::i;:::-;2213:5;-1:-1:-1;2270:2:1;2255:18;;2242:32;2283:33;2242:32;2283:33;:::i;:::-;1943:508;;2335:7;;-1:-1:-1;;;2415:2:1;2400:18;;;;2387:32;;1943:508::o;2853:180::-;2909:6;2962:2;2950:9;2941:7;2937:23;2933:32;2930:52;;;2978:1;2975;2968:12;2930:52;3001:26;3017:9;3001:26;:::i;3038:247::-;3097:6;3150:2;3138:9;3129:7;3125:23;3121:32;3118:52;;;3166:1;3163;3156:12;3118:52;3205:9;3192:23;3224:31;3249:5;3224:31;:::i;3290:346::-;3358:6;3366;3419:2;3407:9;3398:7;3394:23;3390:32;3387:52;;;3435:1;3432;3425:12;3387:52;-1:-1:-1;;3480:23:1;;;3600:2;3585:18;;;3572:32;;-1:-1:-1;3290:346:1:o;3641:127::-;3702:10;3697:3;3693:20;3690:1;3683:31;3733:4;3730:1;3723:15;3757:4;3754:1;3747:15;3773:1207;3863:6;3871;3924:2;3912:9;3903:7;3899:23;3895:32;3892:52;;;3940:1;3937;3930:12;3892:52;3980:9;3967:23;4013:18;4005:6;4002:30;3999:50;;;4045:1;4042;4035:12;3999:50;4068:22;;4121:4;4113:13;;4109:27;-1:-1:-1;4099:55:1;;4150:1;4147;4140:12;4099:55;4190:2;4177:16;4216:18;4208:6;4205:30;4202:56;;;4238:18;;:::i;:::-;4284:6;4281:1;4277:14;4320:2;4314:9;4383:2;4379:7;4374:2;4370;4366:11;4362:25;4354:6;4350:38;4454:6;4442:10;4439:22;4418:18;4406:10;4403:34;4400:62;4397:88;;;4465:18;;:::i;:::-;4501:2;4494:22;4551;;;4601:4;4633:11;;;4629:22;;;4551;4589:17;;4663:19;;;4660:39;;;4695:1;4692;4685:12;4660:39;4727:4;4723:2;4719:13;4708:24;;4741:152;4757:6;4752:3;4749:15;4741:152;;;4825:23;4844:3;4825:23;:::i;:::-;4813:36;;4878:4;4774:14;;;;4869;4741:152;;;-1:-1:-1;4912:6:1;-1:-1:-1;4937:37:1;;-1:-1:-1;;;4968:4:1;4953:20;;4937:37;:::i;5219:226::-;5278:6;5331:2;5319:9;5310:7;5306:23;5302:32;5299:52;;;5347:1;5344;5337:12;5299:52;-1:-1:-1;5392:23:1;;5219:226;-1:-1:-1;5219:226:1:o;5450:388::-;5518:6;5526;5579:2;5567:9;5558:7;5554:23;5550:32;5547:52;;;5595:1;5592;5585:12;5547:52;5634:9;5621:23;5653:31;5678:5;5653:31;:::i;:::-;5703:5;-1:-1:-1;5760:2:1;5745:18;;5732:32;5773:33;5732:32;5773:33;:::i;:::-;5825:7;5815:17;;;5450:388;;;;;:::o;5843:380::-;5922:1;5918:12;;;;5965;;;5986:61;;6040:4;6032:6;6028:17;6018:27;;5986:61;6093:2;6085:6;6082:14;6062:18;6059:38;6056:161;;6139:10;6134:3;6130:20;6127:1;6120:31;6174:4;6171:1;6164:15;6202:4;6199:1;6192:15;6056:161;;5843:380;;;:::o;6228:337::-;6430:2;6412:21;;;6469:2;6449:18;;;6442:30;-1:-1:-1;;;6503:2:1;6488:18;;6481:43;6556:2;6541:18;;6228:337::o;7354:127::-;7415:10;7410:3;7406:20;7403:1;7396:31;7446:4;7443:1;7436:15;7470:4;7467:1;7460:15;7486:125;7551:9;;;7572:10;;;7569:36;;;7585:18;;:::i;8690:128::-;8757:9;;;8778:11;;;8775:37;;;8792:18;;:::i;8823:127::-;8884:10;8879:3;8875:20;8872:1;8865:31;8915:4;8912:1;8905:15;8939:4;8936:1;8929:15;8955:135;8994:3;9015:17;;;9012:43;;9035:18;;:::i;:::-;-1:-1:-1;9082:1:1;9071:13;;8955:135::o;9095:168::-;9168:9;;;9199;;9216:15;;;9210:22;;9196:37;9186:71;;9237:18;;:::i;9268:217::-;9308:1;9334;9324:132;;9378:10;9373:3;9369:20;9366:1;9359:31;9413:4;9410:1;9403:15;9441:4;9438:1;9431:15;9324:132;-1:-1:-1;9470:9:1;;9268:217::o;15654:251::-;15724:6;15777:2;15765:9;15756:7;15752:23;15748:32;15745:52;;;15793:1;15790;15783:12;15745:52;15825:9;15819:16;15844:31;15869:5;15844:31;:::i;15910:959::-;16172:4;16220:3;16209:9;16205:19;16251:6;16240:9;16233:25;16294:6;16289:2;16278:9;16274:18;16267:34;16337:3;16332:2;16321:9;16317:18;16310:31;16361:6;16396;16390:13;16427:6;16419;16412:22;16465:3;16454:9;16450:19;16443:26;;16504:2;16496:6;16492:15;16478:29;;16525:1;16535:195;16549:6;16546:1;16543:13;16535:195;;;16614:13;;-1:-1:-1;;;;;16610:39:1;16598:52;;16679:2;16705:15;;;;16670:12;;;;16646:1;16564:9;16535:195;;;-1:-1:-1;;;;;;;16786:32:1;;;;16781:2;16766:18;;16759:60;-1:-1:-1;;16850:3:1;16835:19;16828:35;16747:3;15910:959;-1:-1:-1;;;15910:959:1:o
Swarm Source
ipfs://65ad8f2303be8f54e57705d68e36f192aee885cb48df0a65ed164173fbb1c25a
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.