ERC-20
Overview
Max Total Supply
50,000,000 IVEIL
Holders
124
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
22,692.384838259943460965 IVEILValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
InfoVeil
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-12 */ // SPDX-License-Identifier: MIT /* Telegram: https://t.me/InfoVeil Twitter: https://x.com/InfoVeilEth Website: https://www.infoveil.net/ */ pragma solidity 0.8.26; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IliquidityPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] -= amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mintSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { _checkOwner(); _; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract InfoVeil is ERC20, Ownable { IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); address private _dexRouter; bool private swapping; address public marketingWallet; address public developmentWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public tokensForMarketing; uint256 public tokensForDevelopment; /******************/ // Anti-Bot uint256 public launchedAt; uint256 public protectedBlocks; // Struct For Fees - Optimize Storage struct TaxStructure { uint256 marketingFee; uint256 developmentFee; uint256 totalFees; } //Getter functions to get individual fees are provided TaxStructure public buyTax; TaxStructure public sellTax; uint256 private initialBuyDevelopmentFee; uint256 private initialBuyMarketingFee; // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event developmentWalletUpdated(address indexed newWallet, address indexed oldWallet); constructor() ERC20("InfoVeil", "IVEIL") { _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2 IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_dexRouter); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 5 * 1e7 * 1e18; maxTransactionAmount = totalSupply * 2 / 100; // 2% maxWallet = totalSupply * 2 / 100; //2% swapTokensAtAmount = totalSupply * 1 / 1000; //0.1% initialBuyDevelopmentFee = 5; initialBuyMarketingFee = 5; buyTax = TaxStructure({ marketingFee: initialBuyDevelopmentFee, developmentFee: initialBuyMarketingFee, totalFees: initialBuyDevelopmentFee + initialBuyMarketingFee }); sellTax = TaxStructure({ marketingFee: 10, developmentFee: 15, totalFees: 10 + 15 }); marketingWallet = address(0xa7F260Be6379bf39b03309926CC5F16112a9281a); developmentWallet = address(msg.sender); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(marketingWallet, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(marketingWallet, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mintSupply(msg.sender, totalSupply); } receive() external payable { } function enableTrading() external onlyOwner { require(protectedBlocks != 0, "Anti-Snipe block cannot be 0."); tradingActive = true; swapEnabled = true; launchedAt = block.number; } function initialize(uint256 _value) external onlyOwner { require(_value > 0, "Value must be greater than 0"); //If 1, block 0 require(_value <= 3, "Value must be less than or equal to 3"); //If 3, Block 0 to 2 require(protectedBlocks == 0, "Already initialized, not allowed to change again."); protectedBlocks = _value; // Set Anti-Snipe Block } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function updateTeamWallets(address newMarketingWallet, address newDevelopmentWallet) external onlyOwner { marketingWallet = newMarketingWallet; developmentWallet = newDevelopmentWallet; emit marketingWalletUpdated(newMarketingWallet, marketingWallet); emit developmentWalletUpdated(newDevelopmentWallet, developmentWallet); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 10000, "Swap amount cannot be lower than 0.01% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function bulkExcludeFromMaxTransaction(address [] calldata wallets) public onlyOwner { for(uint i = 0; i < wallets.length; i++) { _isExcludedMaxTransactionAmount[wallets[i]] = true; } } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _developmentFee ) external onlyOwner { initialBuyMarketingFee = _marketingFee; initialBuyDevelopmentFee = _developmentFee; buyTax.totalFees = initialBuyMarketingFee + initialBuyDevelopmentFee; } function updateSellFees( uint256 _marketingFee, uint256 _developmentFee ) external onlyOwner { sellTax.marketingFee = _marketingFee; sellTax.developmentFee = _developmentFee; sellTax.totalFees = _marketingFee + _developmentFee; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if (launchedAt + protectedBlocks > block.number) { buyTax.marketingFee = 10; buyTax.developmentFee = 10; buyTax.totalFees = buyTax.marketingFee + buyTax.developmentFee; } else { // Revert back to initial rate buyTax.marketingFee = initialBuyMarketingFee; buyTax.developmentFee = initialBuyDevelopmentFee; buyTax.totalFees = initialBuyMarketingFee + initialBuyDevelopmentFee; } if(!tradingActive){ require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } //Buying if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //Selling else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if(!_isExcludedMaxTransactionAmount[to]){ require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ if (automatedMarketMakerPairs[to] && sellTax.totalFees > 0){ fees = amount * sellTax.totalFees/100; tokensForDevelopment += fees * sellTax.developmentFee / sellTax.totalFees; tokensForMarketing += fees * sellTax.marketingFee / sellTax.totalFees; } else if(automatedMarketMakerPairs[from] && buyTax.totalFees > 0) { fees = amount * buyTax.totalFees/100; tokensForDevelopment += fees * buyTax.developmentFee / buyTax.totalFees; tokensForMarketing += fees * buyTax.marketingFee / buyTax.totalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function withdrawStuckNative() external { require(_msgSender() == developmentWallet); require(address(this).balance > 0, "Token: no ETH to clear"); payable(developmentWallet).transfer(address(this).balance); } function withdrawStuckForeign(address tokenAddress) external { require(_msgSender() == developmentWallet); IERC20 tokenContract = IERC20(tokenAddress); uint256 balance = tokenContract.balanceOf(address(this)); require(balance > 0, "No tokens to clear"); tokenContract.transfer(developmentWallet, balance); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokensForDevelopment; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) { return; } if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance - initialETHBalance; uint256 ethForDev = ethBalance * tokensForDevelopment/totalTokensToSwap; tokensForMarketing = 0; tokensForDevelopment = 0; (success,) = address(developmentWallet).call{value: ethForDev}(""); (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"bulkExcludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"developmentFee","type":"uint256"},{"internalType":"uint256","name":"totalFees","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectedBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"developmentFee","type":"uint256"},{"internalType":"uint256","name":"totalFees","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevelopmentWallet","type":"address"}],"name":"updateTeamWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawStuckForeign","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600c805462ffffff1916600117905534801561001e575f80fd5b5060405180604001604052806008815260200167125b999bd5995a5b60c21b81525060405180604001604052806005815260200164125591525360da1b815250816003908161006d91906106ed565b50600461007a82826106ed565b5050505f61008c61042560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561010d816001610429565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610155573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017991906107a7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e891906107a7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610232573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025691906107a7565b6001600160a01b031660a081905261026f906001610429565b60a05161027d90600161045b565b6a295be96e6406697200000060646102968260026107e8565b6102a09190610805565b60095560646102b08260026107e8565b6102ba9190610805565b600b556103e86102cb8260016107e8565b6102d59190610805565b600a55600560178190556018819055604080516060810182528281526020810183905291908201906103079080610824565b905280516011556020808201516012556040918201516013558151606081018352600a808252600f928201839052601991909301819052601492909255601555601655600780546001600160a01b031990811673a7f260be6379bf39b03309926cc5f16112a9281a17909155600880549091163317905561039a6103936005546001600160a01b031690565b60016104ae565b6007546103b1906001600160a01b031660016104ae565b6103bc3060016104ae565b6103c961dead60016104ae565b6103e56103de6005546001600160a01b031690565b6001610429565b6007546103fc906001600160a01b03166001610429565b610407306001610429565b61041461dead6001610429565b61041e3382610514565b5050610837565b3390565b6104316105f5565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6104b66105f5565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03821661056f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f8282546105809190610824565b90915550506001600160a01b0382165f90815260208190526040812080548392906105ac908490610824565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b0316331461064f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610566565b565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061067e57607f821691505b60208210810361069c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561065157805f5260205f20601f840160051c810160208510156106c75750805b601f840160051c820191505b818110156106e6575f81556001016106d3565b5050505050565b81516001600160401b0381111561070657610706610656565b61071a81610714845461066a565b846106a2565b6020601f82116001811461074c575f83156107355750848201515b5f19600385901b1c1916600184901b1784556106e6565b5f84815260208120601f198516915b8281101561077b578785015182556020948501946001909201910161075b565b508482101561079857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156107b7575f80fd5b81516001600160a01b03811681146107cd575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107ff576107ff6107d4565b92915050565b5f8261081f57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156107ff576107ff6107d4565b60805160a05161247f6108745f395f81816104720152610d9401525f818161035201528181611ee101528181611f980152611fd4015261247f5ff3fe60806040526004361061028e575f3560e01c806375f0a87411610155578063bf56b371116100be578063dd62ed3e11610078578063dd62ed3e146107f9578063e2f456051461083d578063ef8700e514610852578063f2fde38b14610867578063f8b45b0514610886578063fe4b84df1461089b575f80fd5b8063bf56b37114610754578063c024666814610769578063c04a541414610788578063c8c8ebe4146107a7578063cc1776d3146107bc578063d257b34f146107da575f80fd5b8063a292cade1161010f578063a292cade14610697578063a457c2d7146106b6578063a9059cbb146106d5578063b314cfd5146106f4578063b62496f514610708578063bbc0c74214610736575f80fd5b806375f0a874146105f55780638a8c523c146106145780638da5cb5b14610628578063924de9b71461064557806395d89b41146106645780639a7a23d614610678575f80fd5b8063448589f3116101f757806366ca9b83116101b157806366ca9b831461053c5780636ddd17131461055b57806370a082311461057a578063715018a6146105ae578063751039fc146105c25780637571336a146105d6575f80fd5b8063448589f31461044257806349bd5a5e146104615780634a62bb65146104945780634f7041a5146104ad5780634fbee193146104e6578063604bf4d51461051d575f80fd5b80631f3fed8f116102485780631f3fed8f146103aa57806323b872dd146103bf57806327c8f835146103de578063313ce567146103f357806333c776a01461040e5780633950935114610423575f80fd5b806302dbd8f81461029957806306fdde03146102ba578063095ea7b3146102e457806310d5de53146103135780631694505e1461034157806318160ddd1461038c575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102b86102b3366004612042565b6108ba565b005b3480156102c5575f80fd5b506102ce6108dd565b6040516102db9190612062565b60405180910390f35b3480156102ef575f80fd5b506103036102fe3660046120ab565b61096d565b60405190151581526020016102db565b34801561031e575f80fd5b5061030361032d3660046120d5565b601a6020525f908152604090205460ff1681565b34801561034c575f80fd5b506103747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102db565b348015610397575f80fd5b506002545b6040519081526020016102db565b3480156103b5575f80fd5b5061039c600d5481565b3480156103ca575f80fd5b506103036103d93660046120f7565b610983565b3480156103e9575f80fd5b5061037461dead81565b3480156103fe575f80fd5b50604051601281526020016102db565b348015610419575f80fd5b5061039c60105481565b34801561042e575f80fd5b5061030361043d3660046120ab565b610a37565b34801561044d575f80fd5b506102b861045c366004612135565b610a6d565b34801561046c575f80fd5b506103747f000000000000000000000000000000000000000000000000000000000000000081565b34801561049f575f80fd5b50600c546103039060ff1681565b3480156104b8575f80fd5b506011546012546013546104cb92919083565b604080519384526020840192909252908201526060016102db565b3480156104f1575f80fd5b506103036105003660046120d5565b6001600160a01b03165f9081526019602052604090205460ff1690565b348015610528575f80fd5b506102b86105373660046120d5565b610adf565b348015610547575f80fd5b506102b8610556366004612042565b610c28565b348015610566575f80fd5b50600c546103039062010000900460ff1681565b348015610585575f80fd5b5061039c6105943660046120d5565b6001600160a01b03165f9081526020819052604090205490565b3480156105b9575f80fd5b506102b8610c4b565b3480156105cd575f80fd5b50610303610c9c565b3480156105e1575f80fd5b506102b86105f03660046121b3565b610cb5565b348015610600575f80fd5b50600754610374906001600160a01b031681565b34801561061f575f80fd5b506102b8610ce7565b348015610633575f80fd5b506005546001600160a01b0316610374565b348015610650575f80fd5b506102b861065f3660046121ea565b610d57565b34801561066f575f80fd5b506102ce610d7b565b348015610683575f80fd5b506102b86106923660046121b3565b610d8a565b3480156106a2575f80fd5b506102b86106b1366004612205565b610e47565b3480156106c1575f80fd5b506103036106d03660046120ab565b610ee5565b3480156106e0575f80fd5b506103036106ef3660046120ab565b610f7d565b3480156106ff575f80fd5b506102b8610f89565b348015610713575f80fd5b506103036107223660046120d5565b601b6020525f908152604090205460ff1681565b348015610741575f80fd5b50600c5461030390610100900460ff1681565b34801561075f575f80fd5b5061039c600f5481565b348015610774575f80fd5b506102b86107833660046121b3565b611029565b348015610793575f80fd5b50600854610374906001600160a01b031681565b3480156107b2575f80fd5b5061039c60095481565b3480156107c7575f80fd5b506014546015546016546104cb92919083565b3480156107e5575f80fd5b506103036107f4366004612231565b61108f565b348015610804575f80fd5b5061039c610813366004612205565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610848575f80fd5b5061039c600a5481565b34801561085d575f80fd5b5061039c600e5481565b348015610872575f80fd5b506102b86108813660046120d5565b6111bb565b348015610891575f80fd5b5061039c600b5481565b3480156108a6575f80fd5b506102b86108b5366004612231565b611283565b6108c26113a8565b601482905560158190556108d6818361225c565b6016555050565b6060600380546108ec9061226f565b80601f01602080910402602001604051908101604052809291908181526020018280546109189061226f565b80156109635780601f1061093a57610100808354040283529160200191610963565b820191905f5260205f20905b81548152906001019060200180831161094657829003601f168201915b5050505050905090565b5f610979338484611404565b5060015b92915050565b5f61098f848484611528565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a185760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610a2c8533610a2786856122a7565b611404565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610979918590610a2790869061225c565b610a756113a8565b5f5b81811015610ada576001601a5f858585818110610a9657610a966122ba565b9050602002016020810190610aab91906120d5565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610a77565b505050565b6008546001600160a01b0316336001600160a01b031614610afe575f80fd5b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6891906122ce565b90505f8111610bae5760405162461bcd60e51b81526020600482015260126024820152712737903a37b5b2b739903a379031b632b0b960711b6044820152606401610a0f565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610bfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2291906122e5565b50505050565b610c306113a8565b60188290556017819055610c44818361225c565b6013555050565b610c536113a8565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b5f610ca56113a8565b50600c805460ff19169055600190565b610cbd6113a8565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b610cef6113a8565b6010545f03610d405760405162461bcd60e51b815260206004820152601d60248201527f416e74692d536e69706520626c6f636b2063616e6e6f7420626520302e0000006044820152606401610a0f565b600c805462ffff0019166201010017905543600f55565b610d5f6113a8565b600c8054911515620100000262ff000019909216919091179055565b6060600480546108ec9061226f565b610d926113a8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a0f565b610e438282611c06565b5050565b610e4f6113a8565b600780546001600160a01b038085166001600160a01b03199283168117909355600880549185169190921617905560405181907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a36008546040516001600160a01b03918216918316907ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df8703965905f90a35050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f665760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a0f565b610f733385858403611404565b5060019392505050565b5f610979338484611528565b6008546001600160a01b0316336001600160a01b031614610fa8575f80fd5b5f4711610ff05760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b6044820152606401610a0f565b6008546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611026573d5f803e3d5ffd5b50565b6110316113a8565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b5f6110986113a8565b6127106110a460025490565b6110af906001612300565b6110b99190612317565b8210156111255760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e604482015273101817181892903a37ba30b61039bab838363c9760611b6064820152608401610a0f565b6103e861113160025490565b61113c906005612300565b6111469190612317565b8211156111b25760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a0f565b50600a55600190565b6111c36113a8565b6001600160a01b0381166112285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a0f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b61128b6113a8565b5f81116112da5760405162461bcd60e51b815260206004820152601c60248201527f56616c7565206d7573742062652067726561746572207468616e2030000000006044820152606401610a0f565b60038111156113395760405162461bcd60e51b815260206004820152602560248201527f56616c7565206d757374206265206c657373207468616e206f7220657175616c60448201526420746f203360d81b6064820152608401610a0f565b601054156113a35760405162461bcd60e51b815260206004820152603160248201527f416c726561647920696e697469616c697a65642c206e6f7420616c6c6f776564604482015270103a379031b430b733b29030b3b0b4b71760791b6064820152608401610a0f565b601055565b6005546001600160a01b031633146114025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a0f565b565b6001600160a01b0383166114665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a0f565b6001600160a01b0382166114c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a0f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661154e5760405162461bcd60e51b8152600401610a0f90612336565b6001600160a01b0382166115745760405162461bcd60e51b8152600401610a0f9061237b565b805f0361158657610ada83835f611c59565b600c5460ff1615611945576005546001600160a01b038481169116148015906115bd57506005546001600160a01b03838116911614155b80156115d157506001600160a01b03821615155b80156115e857506001600160a01b03821661dead14155b80156115fe5750600654600160a01b900460ff16155b156119455743601054600f54611614919061225c565b111561163857600a60118190556012819055611630908061225c565b601355611655565b601854601181905560175460128190556116519161225c565b6013555b600c54610100900460ff166116e6576001600160a01b0383165f9081526019602052604090205460ff16806116a157506001600160a01b0382165f9081526019602052604090205460ff165b6116e65760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a0f565b6001600160a01b0383165f908152601b602052604090205460ff16801561172557506001600160a01b0382165f908152601a602052604090205460ff16155b156118085760095481111561179a5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a0f565b600b546001600160a01b0383165f908152602081905260409020546117bf908361225c565b11156118035760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a0f565b611945565b6001600160a01b0382165f908152601b602052604090205460ff16801561184757506001600160a01b0383165f908152601a602052604090205460ff16155b156118bd576009548111156118035760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a0f565b6001600160a01b0382165f908152601a602052604090205460ff1661194557600b546001600160a01b0383165f90815260208190526040902054611901908361225c565b11156119455760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a0f565b305f90815260208190526040902054600a54811080159081906119705750600c5462010000900460ff165b80156119865750600654600160a01b900460ff16155b80156119aa57506001600160a01b0385165f908152601b602052604090205460ff16155b80156119ce57506001600160a01b0385165f9081526019602052604090205460ff16155b80156119f257506001600160a01b0384165f9081526019602052604090205460ff16155b15611a20576006805460ff60a01b1916600160a01b179055611a12611d44565b6006805460ff60a01b191690555b6006546001600160a01b0386165f9081526019602052604090205460ff600160a01b909204821615911680611a6c57506001600160a01b0385165f9081526019602052604090205460ff165b15611a7457505f5b5f8115611bf2576001600160a01b0386165f908152601b602052604090205460ff168015611aa3575060165415155b15611b2a57601654606490611ab89087612300565b611ac29190612317565b60165460155491925090611ad69083612300565b611ae09190612317565b600e5f828254611af0919061225c565b9091555050601654601454611b059083612300565b611b0f9190612317565b600d5f828254611b1f919061225c565b90915550611bd49050565b6001600160a01b0387165f908152601b602052604090205460ff168015611b52575060135415155b15611bd457601354606490611b679087612300565b611b719190612317565b60135460125491925090611b859083612300565b611b8f9190612317565b600e5f828254611b9f919061225c565b9091555050601354601154611bb49083612300565b611bbe9190612317565b600d5f828254611bce919061225c565b90915550505b8015611be557611be5873083611c59565b611bef81866122a7565b94505b611bfd878787611c59565b50505050505050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611c7f5760405162461bcd60e51b8152600401610a0f90612336565b6001600160a01b038216611ca55760405162461bcd60e51b8152600401610a0f9061237b565b6001600160a01b0383165f9081526020819052604081208054839290611ccc9084906122a7565b90915550506001600160a01b0382165f9081526020819052604081208054839290611cf890849061225c565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161151b91815260200190565b305f9081526020819052604081205490505f600e54600d54611d66919061225c565b90505f821580611d74575081155b15611d7e57505050565b600a54611d8c906014612300565b831115611da457600a54611da1906014612300565b92505b47611dae84611e8c565b5f611db982476122a7565b90505f84600e5483611dcb9190612300565b611dd59190612317565b5f600d819055600e8190556008546040519293506001600160a01b031691839181818185875af1925050503d805f8114611e2a576040519150601f19603f3d011682016040523d82523d5f602084013e611e2f565b606091505b50506007546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611e7c576040519150601f19603f3d011682016040523d82523d5f602084013e611e81565b606091505b505050505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ebf57611ebf6122ba565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5f91906123be565b81600181518110611f7257611f726122ba565b60200260200101906001600160a01b031690816001600160a01b031681525050611fbd307f000000000000000000000000000000000000000000000000000000000000000084611404565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120119085905f908690309042906004016123d9565b5f604051808303815f87803b158015612028575f80fd5b505af115801561203a573d5f803e3d5ffd5b505050505050565b5f8060408385031215612053575f80fd5b50508035926020909101359150565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611026575f80fd5b5f80604083850312156120bc575f80fd5b82356120c781612097565b946020939093013593505050565b5f602082840312156120e5575f80fd5b81356120f081612097565b9392505050565b5f805f60608486031215612109575f80fd5b833561211481612097565b9250602084013561212481612097565b929592945050506040919091013590565b5f8060208385031215612146575f80fd5b823567ffffffffffffffff81111561215c575f80fd5b8301601f8101851361216c575f80fd5b803567ffffffffffffffff811115612182575f80fd5b8560208260051b8401011115612196575f80fd5b6020919091019590945092505050565b8015158114611026575f80fd5b5f80604083850312156121c4575f80fd5b82356121cf81612097565b915060208301356121df816121a6565b809150509250929050565b5f602082840312156121fa575f80fd5b81356120f0816121a6565b5f8060408385031215612216575f80fd5b823561222181612097565b915060208301356121df81612097565b5f60208284031215612241575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561097d5761097d612248565b600181811c9082168061228357607f821691505b6020821081036122a157634e487b7160e01b5f52602260045260245ffd5b50919050565b8181038181111561097d5761097d612248565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156122de575f80fd5b5051919050565b5f602082840312156122f5575f80fd5b81516120f0816121a6565b808202811582820484141761097d5761097d612248565b5f8261233157634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f602082840312156123ce575f80fd5b81516120f081612097565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156124295783516001600160a01b0316835260209384019390920191600101612402565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212201c6422b5ab69e2e294e0cb808115699ef4a91b7e289bf58e602b3ff3cf9894cf64736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061028e575f3560e01c806375f0a87411610155578063bf56b371116100be578063dd62ed3e11610078578063dd62ed3e146107f9578063e2f456051461083d578063ef8700e514610852578063f2fde38b14610867578063f8b45b0514610886578063fe4b84df1461089b575f80fd5b8063bf56b37114610754578063c024666814610769578063c04a541414610788578063c8c8ebe4146107a7578063cc1776d3146107bc578063d257b34f146107da575f80fd5b8063a292cade1161010f578063a292cade14610697578063a457c2d7146106b6578063a9059cbb146106d5578063b314cfd5146106f4578063b62496f514610708578063bbc0c74214610736575f80fd5b806375f0a874146105f55780638a8c523c146106145780638da5cb5b14610628578063924de9b71461064557806395d89b41146106645780639a7a23d614610678575f80fd5b8063448589f3116101f757806366ca9b83116101b157806366ca9b831461053c5780636ddd17131461055b57806370a082311461057a578063715018a6146105ae578063751039fc146105c25780637571336a146105d6575f80fd5b8063448589f31461044257806349bd5a5e146104615780634a62bb65146104945780634f7041a5146104ad5780634fbee193146104e6578063604bf4d51461051d575f80fd5b80631f3fed8f116102485780631f3fed8f146103aa57806323b872dd146103bf57806327c8f835146103de578063313ce567146103f357806333c776a01461040e5780633950935114610423575f80fd5b806302dbd8f81461029957806306fdde03146102ba578063095ea7b3146102e457806310d5de53146103135780631694505e1461034157806318160ddd1461038c575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102b86102b3366004612042565b6108ba565b005b3480156102c5575f80fd5b506102ce6108dd565b6040516102db9190612062565b60405180910390f35b3480156102ef575f80fd5b506103036102fe3660046120ab565b61096d565b60405190151581526020016102db565b34801561031e575f80fd5b5061030361032d3660046120d5565b601a6020525f908152604090205460ff1681565b34801561034c575f80fd5b506103747f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102db565b348015610397575f80fd5b506002545b6040519081526020016102db565b3480156103b5575f80fd5b5061039c600d5481565b3480156103ca575f80fd5b506103036103d93660046120f7565b610983565b3480156103e9575f80fd5b5061037461dead81565b3480156103fe575f80fd5b50604051601281526020016102db565b348015610419575f80fd5b5061039c60105481565b34801561042e575f80fd5b5061030361043d3660046120ab565b610a37565b34801561044d575f80fd5b506102b861045c366004612135565b610a6d565b34801561046c575f80fd5b506103747f0000000000000000000000001795f077c3b6d060ec0c0d9f108e5e71052e9eab81565b34801561049f575f80fd5b50600c546103039060ff1681565b3480156104b8575f80fd5b506011546012546013546104cb92919083565b604080519384526020840192909252908201526060016102db565b3480156104f1575f80fd5b506103036105003660046120d5565b6001600160a01b03165f9081526019602052604090205460ff1690565b348015610528575f80fd5b506102b86105373660046120d5565b610adf565b348015610547575f80fd5b506102b8610556366004612042565b610c28565b348015610566575f80fd5b50600c546103039062010000900460ff1681565b348015610585575f80fd5b5061039c6105943660046120d5565b6001600160a01b03165f9081526020819052604090205490565b3480156105b9575f80fd5b506102b8610c4b565b3480156105cd575f80fd5b50610303610c9c565b3480156105e1575f80fd5b506102b86105f03660046121b3565b610cb5565b348015610600575f80fd5b50600754610374906001600160a01b031681565b34801561061f575f80fd5b506102b8610ce7565b348015610633575f80fd5b506005546001600160a01b0316610374565b348015610650575f80fd5b506102b861065f3660046121ea565b610d57565b34801561066f575f80fd5b506102ce610d7b565b348015610683575f80fd5b506102b86106923660046121b3565b610d8a565b3480156106a2575f80fd5b506102b86106b1366004612205565b610e47565b3480156106c1575f80fd5b506103036106d03660046120ab565b610ee5565b3480156106e0575f80fd5b506103036106ef3660046120ab565b610f7d565b3480156106ff575f80fd5b506102b8610f89565b348015610713575f80fd5b506103036107223660046120d5565b601b6020525f908152604090205460ff1681565b348015610741575f80fd5b50600c5461030390610100900460ff1681565b34801561075f575f80fd5b5061039c600f5481565b348015610774575f80fd5b506102b86107833660046121b3565b611029565b348015610793575f80fd5b50600854610374906001600160a01b031681565b3480156107b2575f80fd5b5061039c60095481565b3480156107c7575f80fd5b506014546015546016546104cb92919083565b3480156107e5575f80fd5b506103036107f4366004612231565b61108f565b348015610804575f80fd5b5061039c610813366004612205565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610848575f80fd5b5061039c600a5481565b34801561085d575f80fd5b5061039c600e5481565b348015610872575f80fd5b506102b86108813660046120d5565b6111bb565b348015610891575f80fd5b5061039c600b5481565b3480156108a6575f80fd5b506102b86108b5366004612231565b611283565b6108c26113a8565b601482905560158190556108d6818361225c565b6016555050565b6060600380546108ec9061226f565b80601f01602080910402602001604051908101604052809291908181526020018280546109189061226f565b80156109635780601f1061093a57610100808354040283529160200191610963565b820191905f5260205f20905b81548152906001019060200180831161094657829003601f168201915b5050505050905090565b5f610979338484611404565b5060015b92915050565b5f61098f848484611528565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a185760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610a2c8533610a2786856122a7565b611404565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610979918590610a2790869061225c565b610a756113a8565b5f5b81811015610ada576001601a5f858585818110610a9657610a966122ba565b9050602002016020810190610aab91906120d5565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610a77565b505050565b6008546001600160a01b0316336001600160a01b031614610afe575f80fd5b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6891906122ce565b90505f8111610bae5760405162461bcd60e51b81526020600482015260126024820152712737903a37b5b2b739903a379031b632b0b960711b6044820152606401610a0f565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610bfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2291906122e5565b50505050565b610c306113a8565b60188290556017819055610c44818361225c565b6013555050565b610c536113a8565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b5f610ca56113a8565b50600c805460ff19169055600190565b610cbd6113a8565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b610cef6113a8565b6010545f03610d405760405162461bcd60e51b815260206004820152601d60248201527f416e74692d536e69706520626c6f636b2063616e6e6f7420626520302e0000006044820152606401610a0f565b600c805462ffff0019166201010017905543600f55565b610d5f6113a8565b600c8054911515620100000262ff000019909216919091179055565b6060600480546108ec9061226f565b610d926113a8565b7f0000000000000000000000001795f077c3b6d060ec0c0d9f108e5e71052e9eab6001600160a01b0316826001600160a01b031603610e395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a0f565b610e438282611c06565b5050565b610e4f6113a8565b600780546001600160a01b038085166001600160a01b03199283168117909355600880549185169190921617905560405181907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a36008546040516001600160a01b03918216918316907ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df8703965905f90a35050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f665760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a0f565b610f733385858403611404565b5060019392505050565b5f610979338484611528565b6008546001600160a01b0316336001600160a01b031614610fa8575f80fd5b5f4711610ff05760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b6044820152606401610a0f565b6008546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611026573d5f803e3d5ffd5b50565b6110316113a8565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b5f6110986113a8565b6127106110a460025490565b6110af906001612300565b6110b99190612317565b8210156111255760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e604482015273101817181892903a37ba30b61039bab838363c9760611b6064820152608401610a0f565b6103e861113160025490565b61113c906005612300565b6111469190612317565b8211156111b25760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a0f565b50600a55600190565b6111c36113a8565b6001600160a01b0381166112285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a0f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b61128b6113a8565b5f81116112da5760405162461bcd60e51b815260206004820152601c60248201527f56616c7565206d7573742062652067726561746572207468616e2030000000006044820152606401610a0f565b60038111156113395760405162461bcd60e51b815260206004820152602560248201527f56616c7565206d757374206265206c657373207468616e206f7220657175616c60448201526420746f203360d81b6064820152608401610a0f565b601054156113a35760405162461bcd60e51b815260206004820152603160248201527f416c726561647920696e697469616c697a65642c206e6f7420616c6c6f776564604482015270103a379031b430b733b29030b3b0b4b71760791b6064820152608401610a0f565b601055565b6005546001600160a01b031633146114025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a0f565b565b6001600160a01b0383166114665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a0f565b6001600160a01b0382166114c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a0f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661154e5760405162461bcd60e51b8152600401610a0f90612336565b6001600160a01b0382166115745760405162461bcd60e51b8152600401610a0f9061237b565b805f0361158657610ada83835f611c59565b600c5460ff1615611945576005546001600160a01b038481169116148015906115bd57506005546001600160a01b03838116911614155b80156115d157506001600160a01b03821615155b80156115e857506001600160a01b03821661dead14155b80156115fe5750600654600160a01b900460ff16155b156119455743601054600f54611614919061225c565b111561163857600a60118190556012819055611630908061225c565b601355611655565b601854601181905560175460128190556116519161225c565b6013555b600c54610100900460ff166116e6576001600160a01b0383165f9081526019602052604090205460ff16806116a157506001600160a01b0382165f9081526019602052604090205460ff165b6116e65760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a0f565b6001600160a01b0383165f908152601b602052604090205460ff16801561172557506001600160a01b0382165f908152601a602052604090205460ff16155b156118085760095481111561179a5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a0f565b600b546001600160a01b0383165f908152602081905260409020546117bf908361225c565b11156118035760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a0f565b611945565b6001600160a01b0382165f908152601b602052604090205460ff16801561184757506001600160a01b0383165f908152601a602052604090205460ff16155b156118bd576009548111156118035760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a0f565b6001600160a01b0382165f908152601a602052604090205460ff1661194557600b546001600160a01b0383165f90815260208190526040902054611901908361225c565b11156119455760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a0f565b305f90815260208190526040902054600a54811080159081906119705750600c5462010000900460ff165b80156119865750600654600160a01b900460ff16155b80156119aa57506001600160a01b0385165f908152601b602052604090205460ff16155b80156119ce57506001600160a01b0385165f9081526019602052604090205460ff16155b80156119f257506001600160a01b0384165f9081526019602052604090205460ff16155b15611a20576006805460ff60a01b1916600160a01b179055611a12611d44565b6006805460ff60a01b191690555b6006546001600160a01b0386165f9081526019602052604090205460ff600160a01b909204821615911680611a6c57506001600160a01b0385165f9081526019602052604090205460ff165b15611a7457505f5b5f8115611bf2576001600160a01b0386165f908152601b602052604090205460ff168015611aa3575060165415155b15611b2a57601654606490611ab89087612300565b611ac29190612317565b60165460155491925090611ad69083612300565b611ae09190612317565b600e5f828254611af0919061225c565b9091555050601654601454611b059083612300565b611b0f9190612317565b600d5f828254611b1f919061225c565b90915550611bd49050565b6001600160a01b0387165f908152601b602052604090205460ff168015611b52575060135415155b15611bd457601354606490611b679087612300565b611b719190612317565b60135460125491925090611b859083612300565b611b8f9190612317565b600e5f828254611b9f919061225c565b9091555050601354601154611bb49083612300565b611bbe9190612317565b600d5f828254611bce919061225c565b90915550505b8015611be557611be5873083611c59565b611bef81866122a7565b94505b611bfd878787611c59565b50505050505050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611c7f5760405162461bcd60e51b8152600401610a0f90612336565b6001600160a01b038216611ca55760405162461bcd60e51b8152600401610a0f9061237b565b6001600160a01b0383165f9081526020819052604081208054839290611ccc9084906122a7565b90915550506001600160a01b0382165f9081526020819052604081208054839290611cf890849061225c565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161151b91815260200190565b305f9081526020819052604081205490505f600e54600d54611d66919061225c565b90505f821580611d74575081155b15611d7e57505050565b600a54611d8c906014612300565b831115611da457600a54611da1906014612300565b92505b47611dae84611e8c565b5f611db982476122a7565b90505f84600e5483611dcb9190612300565b611dd59190612317565b5f600d819055600e8190556008546040519293506001600160a01b031691839181818185875af1925050503d805f8114611e2a576040519150601f19603f3d011682016040523d82523d5f602084013e611e2f565b606091505b50506007546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611e7c576040519150601f19603f3d011682016040523d82523d5f602084013e611e81565b606091505b505050505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ebf57611ebf6122ba565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5f91906123be565b81600181518110611f7257611f726122ba565b60200260200101906001600160a01b031690816001600160a01b031681525050611fbd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611404565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120119085905f908690309042906004016123d9565b5f604051808303815f87803b158015612028575f80fd5b505af115801561203a573d5f803e3d5ffd5b505050505050565b5f8060408385031215612053575f80fd5b50508035926020909101359150565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611026575f80fd5b5f80604083850312156120bc575f80fd5b82356120c781612097565b946020939093013593505050565b5f602082840312156120e5575f80fd5b81356120f081612097565b9392505050565b5f805f60608486031215612109575f80fd5b833561211481612097565b9250602084013561212481612097565b929592945050506040919091013590565b5f8060208385031215612146575f80fd5b823567ffffffffffffffff81111561215c575f80fd5b8301601f8101851361216c575f80fd5b803567ffffffffffffffff811115612182575f80fd5b8560208260051b8401011115612196575f80fd5b6020919091019590945092505050565b8015158114611026575f80fd5b5f80604083850312156121c4575f80fd5b82356121cf81612097565b915060208301356121df816121a6565b809150509250929050565b5f602082840312156121fa575f80fd5b81356120f0816121a6565b5f8060408385031215612216575f80fd5b823561222181612097565b915060208301356121df81612097565b5f60208284031215612241575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561097d5761097d612248565b600181811c9082168061228357607f821691505b6020821081036122a157634e487b7160e01b5f52602260045260245ffd5b50919050565b8181038181111561097d5761097d612248565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156122de575f80fd5b5051919050565b5f602082840312156122f5575f80fd5b81516120f0816121a6565b808202811582820484141761097d5761097d612248565b5f8261233157634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f602082840312156123ce575f80fd5b81516120f081612097565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156124295783516001600160a01b0316835260209384019390920191600101612402565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212201c6422b5ab69e2e294e0cb808115699ef4a91b7e289bf58e602b3ff3cf9894cf64736f6c634300081a0033
Deployed Bytecode Sourcemap
15833:14725:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22472:285;;;;;;;;;;-1:-1:-1;22472:285:0;;;;;:::i;:::-;;:::i;:::-;;4819:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5733:169;;;;;;;;;;-1:-1:-1;5733:169:0;;;;;:::i;:::-;;:::i;:::-;;;1461:14:1;;1454:22;1436:41;;1424:2;1409:18;5733:169:0;1296:187:1;17130:64:0;;;;;;;;;;-1:-1:-1;17130:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15878:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1931:32:1;;;1913:51;;1901:2;1886:18;15878:51:0;1740:230:1;5140:108:0;;;;;;;;;;-1:-1:-1;5228:12:0;;5140:108;;;2121:25:1;;;2109:2;2094:18;5140:108:0;1975:177:1;16423:33:0;;;;;;;;;;;;;;;;5910:513;;;;;;;;;;-1:-1:-1;5910:513:0;;;;;:::i;:::-;;:::i;15981:53::-;;;;;;;;;;;;16027:6;15981:53;;5039:93;;;;;;;;;;-1:-1:-1;5039:93:0;;5122:2;3020:36:1;;3008:2;2993:18;5039:93:0;2878:184:1;16582:30:0;;;;;;;;;;;;;;;;6431:297;;;;;;;;;;-1:-1:-1;6431:297:0;;;;;:::i;:::-;;:::i;21733:221::-;;;;;;;;;;-1:-1:-1;21733:221:0;;;;;:::i;:::-;;:::i;15936:38::-;;;;;;;;;;;;;;;16303:33;;;;;;;;;;-1:-1:-1;16303:33:0;;;;;;;;16854:26;;;;;;;;;;-1:-1:-1;16854:26:0;;;;;;;;;;;;;;;;3884:25:1;;;3940:2;3925:18;;3918:34;;;;3968:18;;;3961:34;3872:2;3857:18;16854:26:0;3682:319:1;23407:125:0;;;;;;;;;;-1:-1:-1;23407:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;23496:28:0;23472:4;23496:28;;;:19;:28;;;;;;;;;23407:125;28676:357;;;;;;;;;;-1:-1:-1;28676:357:0;;;;;:::i;:::-;;:::i;22159:305::-;;;;;;;;;;-1:-1:-1;22159:305:0;;;;;:::i;:::-;;:::i;16383:31::-;;;;;;;;;;-1:-1:-1;16383:31:0;;;;;;;;;;;5256:127;;;;;;;;;;-1:-1:-1;5256:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5357:18:0;5330:7;5357:18;;;;;;;;;;;;5256:127;10565:148;;;;;;;;;;;;;:::i;20625:120::-;;;;;;;;;;;;;:::i;21581:144::-;;;;;;;;;;-1:-1:-1;21581:144:0;;;;;:::i;:::-;;:::i;16106:30::-;;;;;;;;;;-1:-1:-1;16106:30:0;;;;-1:-1:-1;;;;;16106:30:0;;;19957:221;;;;;;;;;;;;;:::i;10261:79::-;;;;;;;;;;-1:-1:-1;10326:6:0;;-1:-1:-1;;;;;10326:6:0;10261:79;;22050:101;;;;;;;;;;-1:-1:-1;22050:101:0;;;;;:::i;:::-;;:::i;4927:104::-;;;;;;;;;;;;;:::i;22955:244::-;;;;;;;;;;-1:-1:-1;22955:244:0;;;;;:::i;:::-;;:::i;20753:366::-;;;;;;;;;;-1:-1:-1;20753:366:0;;;;;:::i;:::-;;:::i;6736:482::-;;;;;;;;;;-1:-1:-1;6736:482:0;;;;;:::i;:::-;;:::i;5391:175::-;;;;;;;;;;-1:-1:-1;5391:175:0;;;;;:::i;:::-;;:::i;28427:241::-;;;;;;;;;;;;;:::i;17352:58::-;;;;;;;;;;-1:-1:-1;17352:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16343:33;;;;;;;;;;-1:-1:-1;16343:33:0;;;;;;;;;;;16550:25;;;;;;;;;;;;;;;;22765:182;;;;;;;;;;-1:-1:-1;22765:182:0;;;;;:::i;:::-;;:::i;16143:32::-;;;;;;;;;;-1:-1:-1;16143:32:0;;;;-1:-1:-1;;;;;16143:32:0;;;16188:35;;;;;;;;;;;;;;;;16887:27;;;;;;;;;;-1:-1:-1;16887:27:0;;;;;;;;;;;;21194:379;;;;;;;;;;-1:-1:-1;21194:379:0;;;;;:::i;:::-;;:::i;5574:151::-;;;;;;;;;;-1:-1:-1;5574:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5690:18:0;;;5663:7;5690:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5574:151;16230:33;;;;;;;;;;;;;;;;16463:35;;;;;;;;;;;;;;;;10721:244;;;;;;;;;;-1:-1:-1;10721:244:0;;;;;:::i;:::-;;:::i;16270:24::-;;;;;;;;;;;;;;;;20186:387;;;;;;;;;;-1:-1:-1;20186:387:0;;;;;:::i;:::-;;:::i;22472:285::-;10384:13;:11;:13::i;:::-;22600:7:::1;:36:::0;;;22647:22;:40;;;22718:31:::1;22672:15:::0;22623:13;22718:31:::1;:::i;:::-;22698:17:::0;:51;-1:-1:-1;;22472:285:0:o;4819:100::-;4873:13;4906:5;4899:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4819:100;:::o;5733:169::-;5816:4;5833:39;325:10;5856:7;5865:6;5833:8;:39::i;:::-;-1:-1:-1;5890:4:0;5733:169;;;;;:::o;5910:513::-;6050:4;6067:36;6077:6;6085:9;6096:6;6067:9;:36::i;:::-;-1:-1:-1;;;;;6143:19:0;;6116:24;6143:19;;;:11;:19;;;;;;;;325:10;6143:33;;;;;;;;6209:26;;;;6187:116;;;;-1:-1:-1;;;6187:116:0;;6235:2:1;6187:116:0;;;6217:21:1;6274:2;6254:18;;;6247:30;6313:34;6293:18;;;6286:62;-1:-1:-1;;;6364:18:1;;;6357:38;6412:19;;6187:116:0;;;;;;;;;6324:57;6333:6;325:10;6355:25;6374:6;6355:16;:25;:::i;:::-;6324:8;:57::i;:::-;-1:-1:-1;6411:4:0;;5910:513;-1:-1:-1;;;;5910:513:0:o;6431:297::-;325:10;6546:4;6640:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6640:34:0;;;;;;;;;;6546:4;;6568:130;;6618:7;;6640:47;;6677:10;;6640:47;:::i;21733:221::-;10384:13;:11;:13::i;:::-;21833:6:::1;21829:118;21845:18:::0;;::::1;21829:118;;;21931:4;21885:31;:43;21917:7;;21925:1;21917:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21885:43:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21885:43:0;:50;;-1:-1:-1;;21885:50:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;21865:3:0::1;21829:118;;;;21733:221:::0;;:::o;28676:357::-;28772:17;;-1:-1:-1;;;;;28772:17:0;325:10;-1:-1:-1;;;;;28756:33:0;;28748:42;;;;;;28873:38;;-1:-1:-1;;;28873:38:0;;28905:4;28873:38;;;1913:51:1;28831:12:0;;28801:20;;-1:-1:-1;;;;;28873:23:0;;;;;1886:18:1;;28873:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28855:56;;28940:1;28930:7;:11;28922:42;;;;-1:-1:-1;;;28922:42:0;;7098:2:1;28922:42:0;;;7080:21:1;7137:2;7117:18;;;7110:30;-1:-1:-1;;;7156:18:1;;;7149:48;7214:18;;28922:42:0;6896:342:1;28922:42:0;28998:17;;28975:50;;-1:-1:-1;;;28975:50:0;;-1:-1:-1;;;;;28998:17:0;;;28975:50;;;7417:51:1;7484:18;;;7477:34;;;28975:22:0;;;;;;7390:18:1;;28975:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28737:296;;28676:357;:::o;22159:305::-;10384:13;:11;:13::i;:::-;22286:22:::1;:38:::0;;;22335:24:::1;:42:::0;;;22407:49:::1;22362:15:::0;22311:13;22407:49:::1;:::i;:::-;22388:16:::0;:68;-1:-1:-1;;22159:305:0:o;10565:148::-;10384:13;:11;:13::i;:::-;10656:6:::1;::::0;10635:40:::1;::::0;10672:1:::1;::::0;-1:-1:-1;;;;;10656:6:0::1;::::0;10635:40:::1;::::0;10672:1;;10635:40:::1;10686:6;:19:::0;;-1:-1:-1;;;;;;10686:19:0::1;::::0;;10565:148::o;20625:120::-;20677:4;10384:13;:11;:13::i;:::-;-1:-1:-1;20693:14:0::1;:22:::0;;-1:-1:-1;;20693:22:0::1;::::0;;;20625:120;:::o;21581:144::-;10384:13;:11;:13::i;:::-;-1:-1:-1;;;;;21671:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;21671:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21581:144::o;19957:221::-;10384:13;:11;:13::i;:::-;20020:15:::1;;20039:1;20020:20:::0;20012:62:::1;;;::::0;-1:-1:-1;;;20012:62:0;;7974:2:1;20012:62:0::1;::::0;::::1;7956:21:1::0;8013:2;7993:18;;;7986:30;8052:31;8032:18;;;8025:59;8101:18;;20012:62:0::1;7772:353:1::0;20012:62:0::1;20085:13;:20:::0;;-1:-1:-1;;20116:18:0;;;;;20158:12:::1;20145:10;:25:::0;19957:221::o;22050:101::-;10384:13;:11;:13::i;:::-;22122:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22122:21:0;;::::1;::::0;;;::::1;::::0;;22050:101::o;4927:104::-;4983:13;5016:7;5009:14;;;;;:::i;22955:244::-;10384:13;:11;:13::i;:::-;23062::::1;-1:-1:-1::0;;;;;23054:21:0::1;:4;-1:-1:-1::0;;;;;23054:21:0::1;::::0;23046:91:::1;;;::::0;-1:-1:-1;;;23046:91:0;;8332:2:1;23046:91:0::1;::::0;::::1;8314:21:1::0;8371:2;8351:18;;;8344:30;8410:34;8390:18;;;8383:62;8481:27;8461:18;;;8454:55;8526:19;;23046:91:0::1;8130:421:1::0;23046:91:0::1;23150:41;23179:4;23185:5;23150:28;:41::i;:::-;22955:244:::0;;:::o;20753:366::-;10384:13;:11;:13::i;:::-;20868:15:::1;:36:::0;;-1:-1:-1;;;;;20868:36:0;;::::1;-1:-1:-1::0;;;;;;20868:36:0;;::::1;::::0;::::1;::::0;;;20915:17:::1;:40:::0;;;;::::1;::::0;;;::::1;;::::0;;20971:59:::1;::::0;20868:36;;20971:59:::1;::::0;20868:15:::1;::::0;20971:59:::1;21093:17;::::0;21046:65:::1;::::0;-1:-1:-1;;;;;21093:17:0;;::::1;::::0;21046:65;::::1;::::0;::::1;::::0;21093:17:::1;::::0;21046:65:::1;20753:366:::0;;:::o;6736:482::-;325:10;6856:4;6905:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6905:34:0;;;;;;;;;;6972:35;;;;6950:122;;;;-1:-1:-1;;;6950:122:0;;8758:2:1;6950:122:0;;;8740:21:1;8797:2;8777:18;;;8770:30;8836:34;8816:18;;;8809:62;-1:-1:-1;;;8887:18:1;;;8880:35;8932:19;;6950:122:0;8556:401:1;6950:122:0;7108:67;325:10;7131:7;7159:15;7140:16;:34;7108:8;:67::i;:::-;-1:-1:-1;7206:4:0;;6736:482;-1:-1:-1;;;6736:482:0:o;5391:175::-;5477:4;5494:42;325:10;5518:9;5529:6;5494:9;:42::i;28427:241::-;28502:17;;-1:-1:-1;;;;;28502:17:0;325:10;-1:-1:-1;;;;;28486:33:0;;28478:42;;;;;;28563:1;28539:21;:25;28531:60;;;;-1:-1:-1;;;28531:60:0;;9164:2:1;28531:60:0;;;9146:21:1;9203:2;9183:18;;;9176:30;-1:-1:-1;;;9222:18:1;;;9215:52;9284:18;;28531:60:0;8962:346:1;28531:60:0;28610:17;;28602:58;;-1:-1:-1;;;;;28610:17:0;;;;28638:21;28602:58;;;;;28610:17;28602:58;28610:17;28602:58;28638:21;28610:17;28602:58;;;;;;;;;;;;;;;;;;;;;28427:241::o;22765:182::-;10384:13;:11;:13::i;:::-;-1:-1:-1;;;;;22850:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22850:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22905:34;;1436:41:1;;;22905:34:0::1;::::0;1409:18:1;22905:34:0::1;;;;;;;22765:182:::0;;:::o;21194:379::-;21275:4;10384:13;:11;:13::i;:::-;21331:5:::1;21311:13;5228:12:::0;;;5140:108;21311:13:::1;:17;::::0;21327:1:::1;21311:17;:::i;:::-;:25;;;;:::i;:::-;21298:9;:38;;21290:103;;;::::0;-1:-1:-1;;;21290:103:0;;9910:2:1;21290:103:0::1;::::0;::::1;9892:21:1::0;9949:2;9929:18;;;9922:30;9988:34;9968:18;;;9961:62;-1:-1:-1;;;10039:18:1;;;10032:50;10099:19;;21290:103:0::1;9708:416:1::0;21290:103:0::1;21444:4;21424:13;5228:12:::0;;;5140:108;21424:13:::1;:17;::::0;21440:1:::1;21424:17;:::i;:::-;:24;;;;:::i;:::-;21411:9;:37;;21403:102;;;::::0;-1:-1:-1;;;21403:102:0;;10331:2:1;21403:102:0::1;::::0;::::1;10313:21:1::0;10370:2;10350:18;;;10343:30;10409:34;10389:18;;;10382:62;-1:-1:-1;;;10460:18:1;;;10453:50;10520:19;;21403:102:0::1;10129:416:1::0;21403:102:0::1;-1:-1:-1::0;21515:18:0::1;:30:::0;21562:4:::1;::::0;21194:379::o;10721:244::-;10384:13;:11;:13::i;:::-;-1:-1:-1;;;;;10810:22:0;::::1;10802:73;;;::::0;-1:-1:-1;;;10802:73:0;;10752:2:1;10802:73:0::1;::::0;::::1;10734:21:1::0;10791:2;10771:18;;;10764:30;10830:34;10810:18;;;10803:62;-1:-1:-1;;;10881:18:1;;;10874:36;10927:19;;10802:73:0::1;10550:402:1::0;10802:73:0::1;10912:6;::::0;10891:38:::1;::::0;-1:-1:-1;;;;;10891:38:0;;::::1;::::0;10912:6:::1;::::0;10891:38:::1;::::0;10912:6:::1;::::0;10891:38:::1;10940:6;:17:::0;;-1:-1:-1;;;;;;10940:17:0::1;-1:-1:-1::0;;;;;10940:17:0;;;::::1;::::0;;;::::1;::::0;;10721:244::o;20186:387::-;10384:13;:11;:13::i;:::-;20269:1:::1;20260:6;:10;20252:51;;;::::0;-1:-1:-1;;;20252:51:0;;11159:2:1;20252:51:0::1;::::0;::::1;11141:21:1::0;11198:2;11178:18;;;11171:30;11237;11217:18;;;11210:58;11285:18;;20252:51:0::1;10957:352:1::0;20252:51:0::1;20348:1;20338:6;:11;;20330:61;;;::::0;-1:-1:-1;;;20330:61:0;;11516:2:1;20330:61:0::1;::::0;::::1;11498:21:1::0;11555:2;11535:18;;;11528:30;11594:34;11574:18;;;11567:62;-1:-1:-1;;;11645:18:1;;;11638:35;11690:19;;20330:61:0::1;11314:401:1::0;20330:61:0::1;20432:15;::::0;:20;20424:82:::1;;;::::0;-1:-1:-1;;;20424:82:0;;11922:2:1;20424:82:0::1;::::0;::::1;11904:21:1::0;11961:2;11941:18;;;11934:30;12000:34;11980:18;;;11973:62;-1:-1:-1;;;12051:18:1;;;12044:47;12108:19;;20424:82:0::1;11720:413:1::0;20424:82:0::1;20517:15;:24:::0;20186:387::o;10425:132::-;10326:6;;-1:-1:-1;;;;;10326:6:0;325:10;10489:23;10481:68;;;;-1:-1:-1;;;10481:68:0;;12340:2:1;10481:68:0;;;12322:21:1;;;12359:18;;;12352:30;12418:34;12398:18;;;12391:62;12470:18;;10481:68:0;12138:356:1;10481:68:0;10425:132::o;8692:380::-;-1:-1:-1;;;;;8828:19:0;;8820:68;;;;-1:-1:-1;;;8820:68:0;;12701:2:1;8820:68:0;;;12683:21:1;12740:2;12720:18;;;12713:30;12779:34;12759:18;;;12752:62;-1:-1:-1;;;12830:18:1;;;12823:34;12874:19;;8820:68:0;12499:400:1;8820:68:0;-1:-1:-1;;;;;8907:21:0;;8899:68;;;;-1:-1:-1;;;8899:68:0;;13106:2:1;8899:68:0;;;13088:21:1;13145:2;13125:18;;;13118:30;13184:34;13164:18;;;13157:62;-1:-1:-1;;;13235:18:1;;;13228:32;13277:19;;8899:68:0;12904:398:1;8899:68:0;-1:-1:-1;;;;;8980:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9032:32;;2121:25:1;;;9032:32:0;;2094:18:1;9032:32:0;;;;;;;;8692:380;;;:::o;23540:4270::-;-1:-1:-1;;;;;23672:18:0;;23664:68;;;;-1:-1:-1;;;23664:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23751:16:0;;23743:64;;;;-1:-1:-1;;;23743:64:0;;;;;;;:::i;:::-;23832:6;23842:1;23832:11;23829:92;;23860:28;23876:4;23882:2;23886:1;23860:15;:28::i;23829:92::-;23944:14;;;;23941:2208;;;10326:6;;-1:-1:-1;;;;;23996:15:0;;;10326:6;;23996:15;;;;:49;;-1:-1:-1;10326:6:0;;-1:-1:-1;;;;;24032:13:0;;;10326:6;;24032:13;;23996:49;:86;;;;-1:-1:-1;;;;;;24066:16:0;;;;23996:86;:128;;;;-1:-1:-1;;;;;;24103:21:0;;24117:6;24103:21;;23996:128;:158;;;;-1:-1:-1;24146:8:0;;-1:-1:-1;;;24146:8:0;;;;24145:9;23996:158;23974:2164;;;24225:12;24207:15;;24194:10;;:28;;;;:::i;:::-;:43;24190:560;;;24284:2;24262:6;:24;;;24309:21;:27;;;24378:43;;24284:2;24378:43;:::i;:::-;24359:16;:62;24190:560;;;24544:22;;24522:6;:44;;;24614:24;;24589:21;:49;;;24681;;;:::i;:::-;24661:16;:69;24190:560;24774:13;;;;;;;24770:174;;-1:-1:-1;;;;;24845:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;24874:23:0;;;;;;:19;:23;;;;;;;;24845:52;24811:113;;;;-1:-1:-1;;;24811:113:0;;14319:2:1;24811:113:0;;;14301:21:1;14358:2;14338:18;;;14331:30;-1:-1:-1;;;14377:18:1;;;14370:52;14439:18;;24811:113:0;14117:346:1;24811:113:0;-1:-1:-1;;;;;25033:31:0;;;;;;:25;:31;;;;;;;;:93;;;;-1:-1:-1;;;;;;25091:35:0;;;;;;:31;:35;;;;;;;;25090:36;25033:93;25007:1116;;;25221:20;;25211:6;:30;;25173:152;;;;-1:-1:-1;;;25173:152:0;;14670:2:1;25173:152:0;;;14652:21:1;14709:2;14689:18;;;14682:30;14748:34;14728:18;;;14721:62;-1:-1:-1;;;14799:18:1;;;14792:51;14860:19;;25173:152:0;14468:417:1;25173:152:0;25416:9;;-1:-1:-1;;;;;5357:18:0;;5330:7;5357:18;;;;;;;;;;;25390:22;;:6;:22;:::i;:::-;:35;;25352:123;;;;-1:-1:-1;;;25352:123:0;;15092:2:1;25352:123:0;;;15074:21:1;15131:2;15111:18;;;15104:30;-1:-1:-1;;;15150:18:1;;;15143:49;15209:18;;25352:123:0;14890:343:1;25352:123:0;25007:1116;;;-1:-1:-1;;;;;25589:29:0;;;;;;:25;:29;;;;;;;;:93;;;;-1:-1:-1;;;;;;25645:37:0;;;;;;:31;:37;;;;;;;;25644:38;25589:93;25563:560;;;25777:20;;25767:6;:30;;25729:153;;;;-1:-1:-1;;;25729:153:0;;15440:2:1;25729:153:0;;;15422:21:1;15479:2;15459:18;;;15452:30;15518:34;15498:18;;;15491:62;-1:-1:-1;;;15569:18:1;;;15562:52;15631:19;;25729:153:0;15238:418:1;25563:560:0;-1:-1:-1;;;;;25929:35:0;;;;;;:31;:35;;;;;;;;25925:198;;26048:9;;-1:-1:-1;;;;;5357:18:0;;5330:7;5357:18;;;;;;;;;;;26022:22;;:6;:22;:::i;:::-;:35;;25988:115;;;;-1:-1:-1;;;25988:115:0;;15092:2:1;25988:115:0;;;15074:21:1;15131:2;15111:18;;;15104:30;-1:-1:-1;;;15150:18:1;;;15143:49;15209:18;;25988:115:0;14890:343:1;25988:115:0;26212:4;26163:28;5357:18;;;;;;;;;;;26278;;26254:42;;;;;;;26327:35;;-1:-1:-1;26351:11:0;;;;;;;26327:35;:61;;;;-1:-1:-1;26380:8:0;;-1:-1:-1;;;26380:8:0;;;;26379:9;26327:61;:110;;;;-1:-1:-1;;;;;;26406:31:0;;;;;;:25;:31;;;;;;;;26405:32;26327:110;:153;;;;-1:-1:-1;;;;;;26455:25:0;;;;;;:19;:25;;;;;;;;26454:26;26327:153;:194;;;;-1:-1:-1;;;;;;26498:23:0;;;;;;:19;:23;;;;;;;;26497:24;26327:194;26309:338;;;26548:8;:15;;-1:-1:-1;;;;26548:15:0;-1:-1:-1;;;26548:15:0;;;26592:10;:8;:10::i;:::-;26619:8;:16;;-1:-1:-1;;;;26619:16:0;;;26309:338;26675:8;;-1:-1:-1;;;;;26784:25:0;;26659:12;26784:25;;;:19;:25;;;;;;26675:8;-1:-1:-1;;;26675:8:0;;;;;26674:9;;26784:25;;:52;;-1:-1:-1;;;;;;26813:23:0;;;;;;:19;:23;;;;;;;;26784:52;26781:99;;;-1:-1:-1;26863:5:0;26781:99;26900:12;26930:7;26927:830;;;-1:-1:-1;;;;;26957:29:0;;;;;;:25;:29;;;;;;;;:54;;;;-1:-1:-1;26990:17:0;;:21;;26957:54;26953:635;;;27047:17;;27065:3;;27038:26;;:6;:26;:::i;:::-;:30;;;;:::i;:::-;27143:17;;27118:22;;27031:37;;-1:-1:-1;27143:17:0;27111:29;;27031:37;27111:29;:::i;:::-;:49;;;;:::i;:::-;27087:20;;:73;;;;;;;:::i;:::-;;;;-1:-1:-1;;27231:17:0;;:7;27208:20;27201:27;;:4;:27;:::i;:::-;:47;;;;:::i;:::-;27179:18;;:69;;;;;;;:::i;:::-;;;;-1:-1:-1;26953:635:0;;-1:-1:-1;26953:635:0;;-1:-1:-1;;;;;27286:31:0;;;;;;:25;:31;;;;;;;;:55;;;;-1:-1:-1;27321:16:0;;:20;;27286:55;27283:305;;;27375:16;;27392:3;;27366:25;;:6;:25;:::i;:::-;:29;;;;:::i;:::-;27470:16;;27445:21;;27359:36;;-1:-1:-1;27470:16:0;27438:28;;27359:36;27438:28;:::i;:::-;:48;;;;:::i;:::-;27414:20;;:72;;;;;;;:::i;:::-;;;;-1:-1:-1;;27556:16:0;;:6;27534:19;27527:26;;:4;:26;:::i;:::-;:45;;;;:::i;:::-;27505:18;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;;27283:305:0;27619:8;;27616:93;;27651:42;27667:4;27681;27688;27651:15;:42::i;:::-;27731:14;27741:4;27731:14;;:::i;:::-;;;26927:830;27769:33;27785:4;27791:2;27795:6;27769:15;:33::i;:::-;23653:4157;;;;23540:4270;;;:::o;23207:188::-;-1:-1:-1;;;;;23290:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;23290:39:0;;;;;;;;;;23347:40;;23290:39;;:31;23347:40;;;23207:188;;:::o;7226:484::-;-1:-1:-1;;;;;7366:20:0;;7358:70;;;;-1:-1:-1;;;7358:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7447:23:0;;7439:71;;;;-1:-1:-1;;;7439:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7581:17:0;;:9;:17;;;;;;;;;;:27;;7602:6;;7581:9;:27;;7602:6;;7581:27;:::i;:::-;;;;-1:-1:-1;;;;;;;7619:20:0;;:9;:20;;;;;;;;;;:30;;7643:6;;7619:9;:30;;7643:6;;7619:30;:::i;:::-;;;;;;;;7684:9;-1:-1:-1;;;;;7667:35:0;7676:6;-1:-1:-1;;;;;7667:35:0;;7695:6;7667:35;;;;2121:25:1;;2109:2;2094:18;;1975:177;29562:993:0;29645:4;29601:23;5357:18;;;;;;;;;;;29601:50;;29662:25;29711:20;;29690:18;;:41;;;;:::i;:::-;29662:69;-1:-1:-1;29742:12:0;29778:20;;;:46;;-1:-1:-1;29802:22:0;;29778:46;29775:88;;;29841:7;;;29562:993::o;29775:88::-;29896:18;;:23;;29917:2;29896:23;:::i;:::-;29878:15;:41;29875:111;;;29951:18;;:23;;29972:2;29951:23;:::i;:::-;29933:41;;29875:111;30040:21;30074:33;30091:15;30074:16;:33::i;:::-;30129:18;30150:41;30174:17;30150:21;:41;:::i;:::-;30129:62;;30212:17;30266;30245:20;;30232:10;:33;;;;:::i;:::-;:51;;;;:::i;:::-;30325:1;30304:18;:22;;;30337:20;:24;;;30403:17;;30395:53;;30212:71;;-1:-1:-1;;;;;;30403:17:0;;30212:71;;30395:53;30325:1;30395:53;30212:71;30403:17;30395:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30492:15:0;;30484:63;;30382:66;;-1:-1:-1;;;;;;30492:15:0;;30521:21;;30484:63;;;;30521:21;30492:15;30484:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;29562:993:0:o;27818:601::-;27970:16;;;27984:1;27970:16;;;;;;;;27946:21;;27970:16;;;;;;;;;;-1:-1:-1;27970:16:0;27946:40;;28015:4;27997;28002:1;27997:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27997:23:0;;;-1:-1:-1;;;;;27997:23:0;;;;;28041:15;-1:-1:-1;;;;;28041:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28031:4;28036:1;28031:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;28031:32:0;;;-1:-1:-1;;;;;28031:32:0;;;;;28076:62;28093:4;28108:15;28126:11;28076:8;:62::i;:::-;28177:224;;-1:-1:-1;;;28177:224:0;;-1:-1:-1;;;;;28177:15:0;:66;;;;:224;;28258:11;;28284:1;;28328:4;;28355;;28375:15;;28177:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27873:546;27818:601;:::o;14:346:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;204:23:1;;;324:2;309:18;;;296:32;;-1:-1:-1;14:346:1:o;365:418::-;514:2;503:9;496:21;477:4;546:6;540:13;589:6;584:2;573:9;569:18;562:34;648:6;643:2;635:6;631:15;626:2;615:9;611:18;605:50;704:1;699:2;690:6;679:9;675:22;671:31;664:42;774:2;767;763:7;758:2;750:6;746:15;742:29;731:9;727:45;723:54;715:62;;;365:418;;;;:::o;788:131::-;-1:-1:-1;;;;;863:31:1;;853:42;;843:70;;909:1;906;899:12;924:367;992:6;1000;1053:2;1041:9;1032:7;1028:23;1024:32;1021:52;;;1069:1;1066;1059:12;1021:52;1108:9;1095:23;1127:31;1152:5;1127:31;:::i;:::-;1177:5;1255:2;1240:18;;;;1227:32;;-1:-1:-1;;;924:367:1:o;1488:247::-;1547:6;1600:2;1588:9;1579:7;1575:23;1571:32;1568:52;;;1616:1;1613;1606:12;1568:52;1655:9;1642:23;1674:31;1699:5;1674:31;:::i;:::-;1724:5;1488:247;-1:-1:-1;;;1488:247:1:o;2157:508::-;2234:6;2242;2250;2303:2;2291:9;2282:7;2278:23;2274:32;2271:52;;;2319:1;2316;2309:12;2271:52;2358:9;2345:23;2377:31;2402:5;2377:31;:::i;:::-;2427:5;-1:-1:-1;2484:2:1;2469:18;;2456:32;2497:33;2456:32;2497:33;:::i;:::-;2157:508;;2549:7;;-1:-1:-1;;;2629:2:1;2614:18;;;;2601:32;;2157:508::o;3067:610::-;3153:6;3161;3214:2;3202:9;3193:7;3189:23;3185:32;3182:52;;;3230:1;3227;3220:12;3182:52;3270:9;3257:23;3303:18;3295:6;3292:30;3289:50;;;3335:1;3332;3325:12;3289:50;3358:22;;3411:4;3403:13;;3399:27;-1:-1:-1;3389:55:1;;3440:1;3437;3430:12;3389:55;3480:2;3467:16;3506:18;3498:6;3495:30;3492:50;;;3538:1;3535;3528:12;3492:50;3591:7;3586:2;3576:6;3573:1;3569:14;3565:2;3561:23;3557:32;3554:45;3551:65;;;3612:1;3609;3602:12;3551:65;3643:2;3635:11;;;;;3665:6;;-1:-1:-1;3067:610:1;-1:-1:-1;;;3067:610:1:o;4006:118::-;4092:5;4085:13;4078:21;4071:5;4068:32;4058:60;;4114:1;4111;4104:12;4129:382;4194:6;4202;4255:2;4243:9;4234:7;4230:23;4226:32;4223:52;;;4271:1;4268;4261:12;4223:52;4310:9;4297:23;4329:31;4354:5;4329:31;:::i;:::-;4379:5;-1:-1:-1;4436:2:1;4421:18;;4408:32;4449:30;4408:32;4449:30;:::i;:::-;4498:7;4488:17;;;4129:382;;;;;:::o;4516:241::-;4572:6;4625:2;4613:9;4604:7;4600:23;4596:32;4593:52;;;4641:1;4638;4631:12;4593:52;4680:9;4667:23;4699:28;4721:5;4699:28;:::i;4762:388::-;4830:6;4838;4891:2;4879:9;4870:7;4866:23;4862:32;4859:52;;;4907:1;4904;4897:12;4859:52;4946:9;4933:23;4965:31;4990:5;4965:31;:::i;:::-;5015:5;-1:-1:-1;5072:2:1;5057:18;;5044:32;5085:33;5044:32;5085:33;:::i;5155:226::-;5214:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:52;;;5283:1;5280;5273:12;5235:52;-1:-1:-1;5328:23:1;;5155:226;-1:-1:-1;5155:226:1:o;5386:127::-;5447:10;5442:3;5438:20;5435:1;5428:31;5478:4;5475:1;5468:15;5502:4;5499:1;5492:15;5518:125;5583:9;;;5604:10;;;5601:36;;;5617:18;;:::i;5648:380::-;5727:1;5723:12;;;;5770;;;5791:61;;5845:4;5837:6;5833:17;5823:27;;5791:61;5898:2;5890:6;5887:14;5867:18;5864:38;5861:161;;5944:10;5939:3;5935:20;5932:1;5925:31;5979:4;5976:1;5969:15;6007:4;6004:1;5997:15;5861:161;;5648:380;;;:::o;6442:128::-;6509:9;;;6530:11;;;6527:37;;;6544:18;;:::i;6575:127::-;6636:10;6631:3;6627:20;6624:1;6617:31;6667:4;6664:1;6657:15;6691:4;6688:1;6681:15;6707:184;6777:6;6830:2;6818:9;6809:7;6805:23;6801:32;6798:52;;;6846:1;6843;6836:12;6798:52;-1:-1:-1;6869:16:1;;6707:184;-1:-1:-1;6707:184:1:o;7522:245::-;7589:6;7642:2;7630:9;7621:7;7617:23;7613:32;7610:52;;;7658:1;7655;7648:12;7610:52;7690:9;7684:16;7709:28;7731:5;7709:28;:::i;9313:168::-;9386:9;;;9417;;9434:15;;;9428:22;;9414:37;9404:71;;9455:18;;:::i;9486:217::-;9526:1;9552;9542:132;;9596:10;9591:3;9587:20;9584:1;9577:31;9631:4;9628:1;9621:15;9659:4;9656:1;9649:15;9542:132;-1:-1:-1;9688:9:1;;9486:217::o;13307:401::-;13509:2;13491:21;;;13548:2;13528:18;;;13521:30;13587:34;13582:2;13567:18;;13560:62;-1:-1:-1;;;13653:2:1;13638:18;;13631:35;13698:3;13683:19;;13307:401::o;13713:399::-;13915:2;13897:21;;;13954:2;13934:18;;;13927:30;13993:34;13988:2;13973:18;;13966:62;-1:-1:-1;;;14059:2:1;14044:18;;14037:33;14102:3;14087:19;;13713:399::o;16003:251::-;16073:6;16126:2;16114:9;16105:7;16101:23;16097:32;16094:52;;;16142:1;16139;16132:12;16094:52;16174:9;16168:16;16193:31;16218:5;16193:31;:::i;16259:959::-;16521:4;16569:3;16558:9;16554:19;16600:6;16589:9;16582:25;16643:6;16638:2;16627:9;16623:18;16616:34;16686:3;16681:2;16670:9;16666:18;16659:31;16710:6;16745;16739:13;16776:6;16768;16761:22;16814:3;16803:9;16799:19;16792:26;;16853:2;16845:6;16841:15;16827:29;;16874:1;16884:195;16898:6;16895:1;16892:13;16884:195;;;16963:13;;-1:-1:-1;;;;;16959:39:1;16947:52;;17028:2;17054:15;;;;17019:12;;;;16995:1;16913:9;16884:195;;;-1:-1:-1;;;;;;;17135:32:1;;;;17130:2;17115:18;;17108:60;-1:-1:-1;;17199:3:1;17184:19;17177:35;17096:3;16259:959;-1:-1:-1;;;16259:959:1:o
Swarm Source
ipfs://1c6422b5ab69e2e294e0cb808115699ef4a91b7e289bf58e602b3ff3cf9894cf
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.