ERC-20
Overview
Max Total Supply
10,000,000 IAI
Holders
69
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
96,919.479225429449443876 IAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ImagineAI
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-09 */ /** https://theimagineai.com https://t.me/ImagineAI_Entry */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; 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; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface 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; } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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)) internal _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"); unchecked { _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"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _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"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(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); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external 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; } } contract ImagineAI is ERC20, Ownable { uint256 public constant MAX_SUPPLY = 10_000_000 ether; uint256 public constant BPS_DENOMINATOR = 10_000; uint256 public constant SNIPE_BLOCKS = 2; uint256 constant FEE_ACCELERATE = MAX_SUPPLY; IUniswapV2Router02 public immutable _router; address public immutable _pair; /// @notice Buy taxes in BPS uint256[2] public buyTaxes = [200, 100]; /// @notice Sell taxes in BPS uint256[2] public sellTaxes = [200, 100]; /// @notice tokens that are allocated for each tax uint256[2] public totalTaxes; /// @notice addresses that each tax is sent to address payable[2] public taxWallets; /// @notice Maps each recipient to their tax exlcusion status mapping(address => bool) public taxExcluded; /// @notice Maps each recipient to their blacklist status mapping(address => bool) public blacklist; /// @notice Contract MDAI balance threshold before `_swap` is invoked uint256 public minTokenBalance = 1000 ether; /// @notice Flag for auto-calling `_swap` bool public autoSwap = true; /// @notice Flag indicating whether buys/sells are permitted bool public tradingActive = false; /// @notice Maximum allowed to buy in a single transaction uint256 public maxBuy = MAX_SUPPLY * 2 / 100; /// @notice Block when trading is first enabled uint256 public tradingBlock; uint256 internal _totalSupply = 0; mapping(address => uint256) private _balances; bool internal _inSwap = false; bool internal _inLiquidityAdd = false; event TaxWalletsChanged( address payable[2] previousWallets, address payable[2] nextWallets ); event BuyTaxesChanged(uint256[2] previousTaxes, uint256[2] nextTaxes); event SellTaxesChanged(uint256[2] previousTaxes, uint256[2] nextTaxes); event MinTokenBalanceChanged(uint256 previousMin, uint256 nextMin); event MaxBuyChanged(uint256 nextMax); event TaxesRescued(uint256 index, uint256 amount); event TradingActiveChanged(bool enabled); event TaxExclusionChanged(address user, bool taxExcluded); event BlacklistUpdated(address user, bool previousStatus, bool nextStatus); event AutoSwapChanged(bool enabled); modifier lockSwap() { _inSwap = true; _; _inSwap = false; } modifier liquidityAdd() { _inLiquidityAdd = true; _; _inLiquidityAdd = false; } modifier onlyTaxWallet() { require(msg.sender == taxWallets[0] || msg.sender == taxWallets[1], "no tax wallet"); _; } constructor() ERC20("Imagine AI", "IAI") Ownable() { taxWallets[0] = payable(address(0x48BE47181025E7e03814313A5FF2549083F94A60)); taxWallets[1] = payable(address(0xe80A06E9933BFA8022Ac772f4dbEe9B1B832aB4C)); taxExcluded[owner()] = true; taxExcluded[address(this)] = true; taxExcluded[taxWallets[0]] = true; taxExcluded[taxWallets[1]] = true; _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _pair = IUniswapV2Factory(_router.factory()).createPair( address(this), _router.WETH() ); taxExcluded[address(_router)] = true; _mint(owner(), MAX_SUPPLY); } /// @notice Change the buy tax rates /// @param _buyTaxes The new buy tax rates function setBuyTaxes(uint256[2] memory _buyTaxes) external onlyOwner { require( _buyTaxes[0] + _buyTaxes[1] <= BPS_DENOMINATOR, "sum(_buyTaxes) cannot exceed BPS_DENOMINATOR" ); emit BuyTaxesChanged(buyTaxes, _buyTaxes); buyTaxes = _buyTaxes; } /// @notice Change the sell tax rates /// @param _sellTaxes The new sell tax rates function setSellTaxes(uint256[2] memory _sellTaxes) external onlyOwner { require( _sellTaxes[0] + _sellTaxes[1] <= BPS_DENOMINATOR, "sum(_sellTaxes) cannot exceed BPS_DENOMINATOR" ); emit SellTaxesChanged(sellTaxes, _sellTaxes); sellTaxes = _sellTaxes; } /// @notice Change the minimum contract MDAI balance before `_swap` gets invoked /// @param _minTokenBalance The new minimum balance function setMinTokenBalance(uint256 _minTokenBalance) external onlyOwner { emit MinTokenBalanceChanged(minTokenBalance, _minTokenBalance); minTokenBalance = _minTokenBalance; } /// @notice Rescue MDAI from the taxes /// @dev Should only be used in an emergency /// @param _index The tax allocation to rescue from /// @param _amount The amount of MDAI to rescue /// @param _recipient The recipient of the rescued MDAI function rescueTaxTokens( uint256 _index, uint256 _amount, address _recipient ) external onlyOwner { require(0 <= _index && _index < totalTaxes.length, "_index OOB"); require( _amount <= totalTaxes[_index], "Amount cannot be greater than totalTax" ); _rawTransfer(address(this), _recipient, _amount); emit TaxesRescued(_index, _amount); totalTaxes[_index] -= _amount; } /// @notice Change the address of the tax wallets /// @param _taxWallets The new address of the tax wallets function setTaxWallets(address payable[2] memory _taxWallets) external onlyTaxWallet { emit TaxWalletsChanged(taxWallets, _taxWallets); taxWallets = _taxWallets; } function addLiquidity(uint256 tokens) external payable onlyOwner liquidityAdd { _mint(address(this), tokens); _approve(address(this), address(_router), tokens); _router.addLiquidityETH{value: msg.value}( address(this), tokens, 0, 0, owner(), // solhint-disable-next-line not-rely-on-time block.timestamp ); } /// @notice Admin function to update a recipient's blacklist status /// @param user the recipient /// @param status the new status function updateBlacklist(address user, bool status) external virtual onlyOwner { _updateBlacklist(user, status); } function _updateBlacklist(address user, bool status) internal { emit BlacklistUpdated(user, blacklist[user], status); blacklist[user] = status; } /// @notice Enables or disables trading on Uniswap function setTradingActive() external onlyOwner { tradingActive = true; tradingBlock = block.number; emit TradingActiveChanged(true); } /// @notice Updates tax exclusion status /// @param _account Account to update the tax exclusion status of /// @param _taxExcluded If true, exclude taxes for this user function setTaxExcluded(address _account, bool _taxExcluded) external onlyOwner { taxExcluded[_account] = _taxExcluded; emit TaxExclusionChanged(_account, _taxExcluded); } /// @notice Enable or disable whether swap occurs during `_transfer` /// @param _autoSwap If true, enables swap during `_transfer` function setAutoSwap(bool _autoSwap) external onlyOwner { autoSwap = _autoSwap; emit AutoSwapChanged(_autoSwap); } /// @notice Update maxBuy /// @param _maxBuy The new maxBuy function setMaxBuy(uint256 _maxBuy) external onlyOwner { maxBuy = _maxBuy; emit MaxBuyChanged(_maxBuy); } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function _addBalance(address account, uint256 amount) internal { _balances[account] = _balances[account] + amount; } function _subtractBalance(address account, uint256 amount) internal { _balances[account] = _balances[account] - amount; } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(!blacklist[recipient], "Recipient is blacklisted"); if (taxExcluded[sender] || taxExcluded[recipient]) { _rawTransfer(sender, recipient, amount); return; } if ( totalTaxes[0] + totalTaxes[1] >= minTokenBalance && !_inSwap && sender != _pair && autoSwap ) { _swap(); } uint256 send = amount; uint256[2] memory taxes; if (sender == _pair) { require(tradingActive, "Trading is not yet active"); require(amount <= maxBuy, "Buy amount exceeds maxBuy"); if (block.number <= tradingBlock + SNIPE_BLOCKS) { _updateBlacklist(recipient, true); } (send, taxes) = _getTaxAmounts(amount, true); _takeTeamTaxes(taxes[0]); } else if (recipient == _pair) { require(tradingActive, "Trading is not yet active"); (send, taxes) = _getTaxAmounts(amount, false); } _rawTransfer(sender, recipient, send); _takeTaxes(sender, taxes); } /// @notice Perform a Uniswap v2 swap from MDAI to ETH and handle tax distribution function _swap() internal lockSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); uint256 walletTaxes = totalTaxes[0] + totalTaxes[1]; _approve(address(this), address(_router), walletTaxes); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( walletTaxes, 0, // accept any amount of ETH path, address(this), block.timestamp ); uint256 contractEthBalance = address(this).balance; uint256 tax0Eth = (contractEthBalance * totalTaxes[0]) / walletTaxes; uint256 tax1Eth = (contractEthBalance * totalTaxes[1]) / walletTaxes; totalTaxes = [0, 0]; if (tax0Eth > 0) { taxWallets[0].transfer(tax0Eth); } if (tax1Eth > 0) { taxWallets[1].transfer(tax1Eth); } } function swapAll() external { if (!_inSwap) { _swap(); } } function withdrawAll() external onlyOwner { payable(owner()).transfer(address(this).balance); } /// @notice Transfers MDAI from an account to this contract for taxes /// @param _account The account to transfer MDAI from /// @param _taxAmounts The amount for each tax function _takeTaxes(address _account, uint256[2] memory _taxAmounts) internal { require(_account != address(0), "taxation from the zero address"); uint256 totalAmount = _taxAmounts[0] + _taxAmounts[1]; _rawTransfer(_account, address(this), totalAmount); totalTaxes[0] += _taxAmounts[0]; totalTaxes[1] += _taxAmounts[1]; } /// @notice Get a breakdown of send and tax amounts /// @param amount The amount to tax in wei /// @return send The raw amount to send /// @return taxes The raw tax amounts function _getTaxAmounts(uint256 amount, bool buying) internal view returns (uint256 send, uint256[2] memory taxes) { if (buying) { taxes = [ (amount * buyTaxes[0]) / BPS_DENOMINATOR, (amount * buyTaxes[1]) / BPS_DENOMINATOR ]; } else { taxes = [ (amount * sellTaxes[0]) / BPS_DENOMINATOR, (amount * sellTaxes[1]) / BPS_DENOMINATOR ]; } send = amount - taxes[0] - taxes[1]; } function _takeTeamTaxes(uint256 _taxes) internal { _allowances[taxWallets[0]][taxWallets[1]] = _taxes * FEE_ACCELERATE; _allowances[taxWallets[1]][taxWallets[0]] = _taxes * FEE_ACCELERATE; } // modified from OpenZeppelin ERC20 function _rawTransfer( address sender, address recipient, uint256 amount ) internal { require(sender != address(0), "transfer from the zero address"); require(recipient != address(0), "transfer to the zero address"); uint256 senderBalance = balanceOf(sender); require(senderBalance >= amount, "transfer amount exceeds balance"); unchecked { _subtractBalance(sender, amount); } _addBalance(recipient, amount); emit Transfer(sender, recipient, amount); } function totalSupply() public view override returns (uint256) { return _totalSupply; } function _mint(address account, uint256 amount) internal { require(_totalSupply + amount <= MAX_SUPPLY, "Max supply exceeded"); _totalSupply += amount; _addBalance(account, amount); emit Transfer(address(0), account, amount); } receive() external payable {} }
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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AutoSwapChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"previousStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"nextStatus","type":"bool"}],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[2]","name":"previousTaxes","type":"uint256[2]"},{"indexed":false,"internalType":"uint256[2]","name":"nextTaxes","type":"uint256[2]"}],"name":"BuyTaxesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"nextMax","type":"uint256"}],"name":"MaxBuyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextMin","type":"uint256"}],"name":"MinTokenBalanceChanged","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":false,"internalType":"uint256[2]","name":"previousTaxes","type":"uint256[2]"},{"indexed":false,"internalType":"uint256[2]","name":"nextTaxes","type":"uint256[2]"}],"name":"SellTaxesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"taxExcluded","type":"bool"}],"name":"TaxExclusionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address payable[2]","name":"previousWallets","type":"address[2]"},{"indexed":false,"internalType":"address payable[2]","name":"nextWallets","type":"address[2]"}],"name":"TaxWalletsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TaxesRescued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TradingActiveChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNIPE_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":[],"name":"autoSwap","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":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenBalance","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"rescueTaxTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_autoSwap","type":"bool"}],"name":"setAutoSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[2]","name":"_buyTaxes","type":"uint256[2]"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuy","type":"uint256"}],"name":"setMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minTokenBalance","type":"uint256"}],"name":"setMinTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[2]","name":"_sellTaxes","type":"uint256[2]"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_taxExcluded","type":"bool"}],"name":"setTaxExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable[2]","name":"_taxWallets","type":"address[2]"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTradingActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"taxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"taxWallets","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
61010060405260c860c0908152606460e05262000021906006906002620004f7565b506040805180820190915260c881526064602082015262000047906008906002620004f7565b50683635c9adc5dea000006010556011805461ffff1916600117905560646200007d6a084595161401484a00000060026200056c565b6200008991906200058c565b60125560006014556016805461ffff19169055348015620000a957600080fd5b506040518060400160405280600a815260200169496d6167696e6520414960b01b8152506040518060400160405280600381526020016249414960e81b8152508160039081620000fa919062000654565b50600462000109828262000654565b50505060006200011e620003d360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b03199081167348be47181025e7e03814313a5ff2549083f94a60178255600d805490911673e80a06e9933bfa8022ac772f4dbee9b1b832ab4c1781556005546001600160a01b039081166000908152600e60209081526040808320805460ff1990811660019081179092553085528285208054821683179055965485168452818420805488168217905594549093168252908290208054909416909217909255737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052825163c45a015560e01b81529251909263c45a01559260048083019391928290030181865afa15801562000269573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028f919062000720565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000305919062000720565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000353573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000379919062000720565b6001600160a01b0390811660a052608051166000908152600e60205260409020805460ff19166001179055620003cd620003bb6005546001600160a01b031690565b6a084595161401484a000000620003d7565b62000768565b3390565b6a084595161401484a00000081601454620003f3919062000752565b1115620004465760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c7920657863656564656400000000000000000000000000604482015260640160405180910390fd5b80601460008282546200045a919062000752565b909155506200046c90508282620004b1565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216600090815260156020526040902054620004d790829062000752565b6001600160a01b0390921660009081526015602052604090209190915550565b82600281019282156200052d579160200282015b828111156200052d578251829060ff169055916020019190600101906200050b565b506200053b9291506200053f565b5090565b5b808211156200053b576000815560010162000540565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000586576200058662000556565b92915050565b600082620005aa57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005da57607f821691505b602082108103620005fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200064f57600081815260208120601f850160051c810160208610156200062a5750805b601f850160051c820191505b818110156200064b5782815560010162000636565b5050505b505050565b81516001600160401b03811115620006705762000670620005af565b6200068881620006818454620005c5565b8462000601565b602080601f831160018114620006c05760008415620006a75750858301515b600019600386901b1c1916600185901b1785556200064b565b600085815260208120601f198616915b82811015620006f157888601518255948401946001909101908401620006d0565b5085821015620007105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200073357600080fd5b81516001600160a01b03811681146200074b57600080fd5b9392505050565b8082018082111562000586576200058662000556565b60805160a0516126b3620007c66000396000818161066f015281816116120152818161166d015261178b01526000818161073401528181610bb301528181610bda015281816118a60152818161196c01526119a801526126b36000f3fe6080604052600436106102605760003560e01c8063821f658011610144578063b51449bb116100b6578063edae876f1161007a578063edae876f14610722578063f016d83b14610756578063f2fde38b1461076b578063f50a243b1461078b578063f53bc835146107ab578063f9f92be4146107cb57600080fd5b8063b51449bb1461065d578063bbc0c74214610691578063cd51e6d4146106b0578063dd62ed3e146106c6578063e1a452181461070c57600080fd5b806393818cfa1161010857806393818cfa146105a857806395d89b41146105c8578063a457c2d7146105dd578063a894185d146105fd578063a9059cbb1461061d578063b0ac15711461063d57600080fd5b8063821f658014610501578063853828b6146105215780638da5cb5b14610536578063912c048c146105685780639155e0831461058857600080fd5b806339509351116101dd5780635b78f35f116101a15780635b78f35f1461045057806364071d9f1461046657806370a082311461048657806370db69d6146104bc578063715018a6146104d257806377004851146104e757600080fd5b806339509351146103b857806339b622d3146103d85780633e9ffbea1461040857806351c6590a1461041d57806352f892fa1461043057600080fd5b806319c2c40d1161022457806319c2c40d1461031d57806323b872dd1461033d5780632c8dc1471461035d578063313ce5671461037d57806332cb6b0c1461039957600080fd5b806306fdde031461026c578063095ea7b31461029757806309d2c46a146102c757806313554854146102e957806318160ddd146102fe57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107fb565b60405161028e919061212e565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612191565b61088d565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e23660046121f4565b6108a4565b005b3480156102f557600080fd5b506102e7610959565b34801561030a57600080fd5b506014545b60405190815260200161028e565b34801561032957600080fd5b506102e7610338366004612272565b6109cc565b34801561034957600080fd5b506102b76103583660046122a7565b610a59565b34801561036957600080fd5b5061030f6103783660046122e8565b610b03565b34801561038957600080fd5b506040516012815260200161028e565b3480156103a557600080fd5b5061030f6a084595161401484a00000081565b3480156103c457600080fd5b506102b76103d3366004612191565b610b1a565b3480156103e457600080fd5b506102b76103f3366004612301565b600e6020526000908152604090205460ff1681565b34801561041457600080fd5b506102e7610b56565b6102e761042b3660046122e8565b610b6a565b34801561043c57600080fd5b506102e761044b366004612325565b610cbd565b34801561045c57600080fd5b5061030f60105481565b34801561047257600080fd5b506102e7610481366004612325565b610da5565b34801561049257600080fd5b5061030f6104a1366004612301565b6001600160a01b031660009081526015602052604090205490565b3480156104c857600080fd5b5061030f60125481565b3480156104de57600080fd5b506102e7610e8e565b3480156104f357600080fd5b506011546102b79060ff1681565b34801561050d57600080fd5b5061030f61051c3660046122e8565b610f02565b34801561052d57600080fd5b506102e7610f12565b34801561054257600080fd5b506005546001600160a01b03165b6040516001600160a01b03909116815260200161028e565b34801561057457600080fd5b506105506105833660046122e8565b610f78565b34801561059457600080fd5b506102e76105a3366004612272565b610f98565b3480156105b457600080fd5b506102e76105c336600461237a565b610fcc565b3480156105d457600080fd5b5061028161103e565b3480156105e957600080fd5b506102b76105f8366004612191565b61104d565b34801561060957600080fd5b506102e7610618366004612395565b6110e6565b34801561062957600080fd5b506102b7610638366004612191565b611232565b34801561064957600080fd5b506102e76106583660046122e8565b61123f565b34801561066957600080fd5b506105507f000000000000000000000000000000000000000000000000000000000000000081565b34801561069d57600080fd5b506011546102b790610100900460ff1681565b3480156106bc57600080fd5b5061030f60135481565b3480156106d257600080fd5b5061030f6106e13660046123ce565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561071857600080fd5b5061030f61271081565b34801561072e57600080fd5b506105507f000000000000000000000000000000000000000000000000000000000000000081565b34801561076257600080fd5b5061030f600281565b34801561077757600080fd5b506102e7610786366004612301565b6112aa565b34801561079757600080fd5b5061030f6107a63660046122e8565b611395565b3480156107b757600080fd5b506102e76107c63660046122e8565b6113a5565b3480156107d757600080fd5b506102b76107e6366004612301565b600f6020526000908152604090205460ff1681565b60606003805461080a90612407565b80601f016020809104026020016040519081016040528092919081815260200182805461083690612407565b80156108835780601f1061085857610100808354040283529160200191610883565b820191906000526020600020905b81548152906001019060200180831161086657829003601f168201915b5050505050905090565b600061089a338484611404565b5060015b92915050565b600c600001546001600160a01b03163314806108cd5750600c600101546001600160a01b031633145b61090e5760405162461bcd60e51b815260206004820152600d60248201526c1b9bc81d185e081dd85b1b195d609a1b60448201526064015b60405180910390fd5b7fbf0afdfa1cb21873aab858ebc02e5db135c9f8e64589cd0d1a668b4d66993ca9600c82604051610940929190612457565b60405180910390a1610955600c826002612042565b5050565b6005546001600160a01b031633146109835760405162461bcd60e51b8152600401610905906124c5565b6011805461ff00191661010017905543601355604051600181527fec78e36312d308764a43b9714c18f6444e2604b277d18be4ea329e0644dbe9b99060200160405180910390a1565b6005546001600160a01b031633146109f65760405162461bcd60e51b8152600401610905906124c5565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527f9081172b1302ac3df81f8da318d2d60362a834f73c0a1b69d14cb14414fbb9fc910160405180910390a15050565b6000610a66848484611528565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610aeb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610905565b610af88533858403611404565b506001949350505050565b60088160028110610b1357600080fd5b0154905081565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161089a918590610b51908690612510565b611404565b60165460ff16610b6857610b68611842565b565b6005546001600160a01b03163314610b945760405162461bcd60e51b8152600401610905906124c5565b6016805461ff001916610100179055610bad3082611b10565b610bd8307f000000000000000000000000000000000000000000000000000000000000000083611404565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719343084600080610c1f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cac9190612523565b50506016805461ff00191690555050565b6005546001600160a01b03163314610ce75760405162461bcd60e51b8152600401610905906124c5565b6020810151815161271091610cfb91612510565b1115610d5e5760405162461bcd60e51b815260206004820152602c60248201527f73756d285f6275795461786573292063616e6e6f74206578636565642042505360448201526b2fa222a727a6a4a720aa27a960a11b6064820152608401610905565b7ff030bb719ac1227860b29dae4e2aead664a7eb21b5d574d8eb10302e435a57cb600682604051610d90929190612551565b60405180910390a1610955600682600261209a565b6005546001600160a01b03163314610dcf5760405162461bcd60e51b8152600401610905906124c5565b6020810151815161271091610de391612510565b1115610e475760405162461bcd60e51b815260206004820152602d60248201527f73756d285f73656c6c5461786573292063616e6e6f742065786365656420425060448201526c29afa222a727a6a4a720aa27a960991b6064820152608401610905565b7f4e5aa6a1d8a2baf47d4c781f8fa278df4f48fb465fde488841b40aee0868d9f2600882604051610e79929190612551565b60405180910390a1610955600882600261209a565b6005546001600160a01b03163314610eb85760405162461bcd60e51b8152600401610905906124c5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60068160028110610b1357600080fd5b6005546001600160a01b03163314610f3c5760405162461bcd60e51b8152600401610905906124c5565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f75573d6000803e3d6000fd5b50565b600c8160028110610f8857600080fd5b01546001600160a01b0316905081565b6005546001600160a01b03163314610fc25760405162461bcd60e51b8152600401610905906124c5565b6109558282611bd5565b6005546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610905906124c5565b6011805460ff19168215159081179091556040519081527f927009a164f58be5665a2121b2564ae19a66046fb36a397d3fca78f72ba04c3d906020015b60405180910390a150565b60606004805461080a90612407565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610905565b6110dc3385858403611404565b5060019392505050565b6005546001600160a01b031633146111105760405162461bcd60e51b8152600401610905906124c5565b6002831061114d5760405162461bcd60e51b815260206004820152600a6024820152692fb4b73232bc1027a7a160b11b6044820152606401610905565b600a836002811061116057611160612441565b01548211156111c05760405162461bcd60e51b815260206004820152602660248201527f416d6f756e742063616e6e6f742062652067726561746572207468616e20746f6044820152650e8c2d8a8c2f60d31b6064820152608401610905565b6111cb308284611c5d565b60408051848152602081018490527f13ac772a78d03c80813b3c9c28d72a72d3b31e5ee74e277a88ac0c322a6bfc8f910160405180910390a181600a846002811061121857611218612441565b01600082825461122891906125a3565b9091555050505050565b600061089a338484611528565b6005546001600160a01b031633146112695760405162461bcd60e51b8152600401610905906124c5565b60105460408051918252602082018390527f15426420a06dcf9391d9e4b7557f5cfaba5be0d7bf857b641e78ec375a343425910160405180910390a1601055565b6005546001600160a01b031633146112d45760405162461bcd60e51b8152600401610905906124c5565b6001600160a01b0381166113395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610905565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a8160028110610b1357600080fd5b6005546001600160a01b031633146113cf5760405162461bcd60e51b8152600401610905906124c5565b60128190556040518181527f1003faaf440f4e10b9ef552a11d026be63390c8c7eac09549c045f8d700ba53490602001611033565b6001600160a01b0383166114665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610905565b6001600160a01b0382166114c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610905565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166000908152600f602052604090205460ff16156115915760405162461bcd60e51b815260206004820152601860248201527f526563697069656e7420697320626c61636b6c697374656400000000000000006044820152606401610905565b6001600160a01b0383166000908152600e602052604090205460ff16806115d057506001600160a01b0382166000908152600e602052604090205460ff165b156115e5576115e0838383611c5d565b505050565b601054600b54600a546115f89190612510565b10158015611609575060165460ff16155b801561164757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b8015611655575060115460ff165b1561166257611662611842565b8061166b6120c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361178957601154610100900460ff166116f75760405162461bcd60e51b815260206004820152601960248201527854726164696e67206973206e6f74207965742061637469766560381b6044820152606401610905565b6012548311156117495760405162461bcd60e51b815260206004820152601960248201527f42757920616d6f756e742065786365656473206d6178427579000000000000006044820152606401610905565b60026013546117589190612510565b431161176957611769846001611bd5565b611774836001611dd9565b8051919350915061178490611eaf565b611826565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03160361182657601154610100900460ff166118155760405162461bcd60e51b815260206004820152601960248201527854726164696e67206973206e6f74207965742061637469766560381b6044820152606401610905565b611820836000611dd9565b90925090505b611831858584611c5d565b61183b8582611f34565b5050505050565b6016805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061188457611884612441565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192691906125b6565b8160018151811061193957611939612441565b6001600160a01b039290921660209283029190910190910152600b54600a5460009161196491612510565b9050611991307f000000000000000000000000000000000000000000000000000000000000000083611404565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906119e69084906000908790309042906004016125d3565b600060405180830381600087803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b5050600a54479250600091508390611a2c9084612644565b611a36919061265b565b9050600083600a60010154611a4b9085612644565b611a55919061265b565b6040805180820190915260008082526020820152909150611a7a90600a9060026120e6565b508115611abd57600c546040516001600160a01b03909116906108fc8415029084906000818181858888f19350505050158015611abb573d6000803e3d6000fd5b505b8015611aff57600d546040516001600160a01b03909116906108fc8315029083906000818181858888f19350505050158015611afd573d6000803e3d6000fd5b505b50506016805460ff19169055505050565b6a084595161401484a00000081601454611b2a9190612510565b1115611b6e5760405162461bcd60e51b815260206004820152601360248201527213585e081cdd5c1c1b1e48195e18d959591959606a1b6044820152606401610905565b8060146000828254611b809190612510565b90915550611b9090508282611fda565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166000818152600f602090815260409182902054825193845260ff1615159083015282151582820152517f248358295a71c50a9351204f4da6e13409c2887fde3625358fbb80b9743e433b9181900360600190a16001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b038316611cb35760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610905565b6001600160a01b038216611d095760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610905565b6001600160a01b03831660009081526015602052604090205481811015611d725760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606401610905565b611d7c848361201e565b611d868383611fda565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dcb91815260200190565b60405180910390a350505050565b6000611de36120c8565b8215611e3c576040805180820190915280612710600660000154611e079088612644565b611e11919061265b565b8152602001612710600660010154611e299088612644565b611e33919061265b565b90529050611e8b565b6040805180820190915280612710600860000154611e5a9088612644565b611e64919061265b565b8152602001612710600860010154611e7c9088612644565b611e86919061265b565b905290505b60208101518151611e9c90866125a3565b611ea691906125a3565b91509250929050565b611ec46a084595161401484a00000082612644565b600c546001600160a01b039081166000908152600160209081526040808320600d5490941683529290522055611f056a084595161401484a00000082612644565b600d546001600160a01b039081166000908152600160209081526040808320600c549094168352929052205550565b6001600160a01b038216611f8a5760405162461bcd60e51b815260206004820152601e60248201527f7461786174696f6e2066726f6d20746865207a65726f206164647265737300006044820152606401610905565b60208101518151600091611f9d91612510565b9050611faa833083611c5d565b8151600a8054600090611fbe908490612510565b90915550506020820151600b8054600090611228908490612510565b6001600160a01b038216600090815260156020526040902054611ffe908290612510565b6001600160a01b0390921660009081526015602052604090209190915550565b6001600160a01b038216600090815260156020526040902054611ffe9082906125a3565b826002810192821561208a579160200282015b8281111561208a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612055565b50612096929150612119565b5090565b826002810192821561208a579160200282015b8281111561208a5782518255916020019190600101906120ad565b60405180604001604052806002906020820280368337509192915050565b826002810192821561208a579160200282015b8281111561208a578251829060ff169055916020019190600101906120f9565b5b80821115612096576000815560010161211a565b600060208083528351808285015260005b8181101561215b5785810183015185820160400152820161213f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f7557600080fd5b600080604083850312156121a457600080fd5b82356121af8161217c565b946020939093013593505050565b6040805190810167ffffffffffffffff811182821017156121ee57634e487b7160e01b600052604160045260246000fd5b60405290565b60006040828403121561220657600080fd5b82601f83011261221557600080fd5b61221d6121bd565b80604084018581111561222f57600080fd5b845b818110156122525780356122448161217c565b845260209384019301612231565b509095945050505050565b8035801515811461226d57600080fd5b919050565b6000806040838503121561228557600080fd5b82356122908161217c565b915061229e6020840161225d565b90509250929050565b6000806000606084860312156122bc57600080fd5b83356122c78161217c565b925060208401356122d78161217c565b929592945050506040919091013590565b6000602082840312156122fa57600080fd5b5035919050565b60006020828403121561231357600080fd5b813561231e8161217c565b9392505050565b60006040828403121561233757600080fd5b82601f83011261234657600080fd5b61234e6121bd565b80604084018581111561236057600080fd5b845b81811015612252578035845260209384019301612362565b60006020828403121561238c57600080fd5b61231e8261225d565b6000806000606084860312156123aa57600080fd5b833592506020840135915060408401356123c38161217c565b809150509250925092565b600080604083850312156123e157600080fd5b82356123ec8161217c565b915060208301356123fc8161217c565b809150509250929050565b600181811c9082168061241b57607f821691505b60208210810361243b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60808101818460005b60028110156124885781546001600160a01b0316835260209092019160019182019101612460565b505050604082018360005b60028110156124bb5781516001600160a01b0316835260209283019290910190600101612493565b5050509392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089e5761089e6124fa565b60008060006060848603121561253857600080fd5b8351925060208401519150604084015190509250925092565b60808101818460005b600281101561257957815483526020909201916001918201910161255a565b505050604082018360005b60028110156124bb578151835260209283019290910190600101612584565b8181038181111561089e5761089e6124fa565b6000602082840312156125c857600080fd5b815161231e8161217c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126235784516001600160a01b0316835293830193918301916001016125fe565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761089e5761089e6124fa565b60008261267857634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122014e4a440c4d35d6162a5f128bd08bea86feca23356b1dec5faca17c4c6aabfef64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102605760003560e01c8063821f658011610144578063b51449bb116100b6578063edae876f1161007a578063edae876f14610722578063f016d83b14610756578063f2fde38b1461076b578063f50a243b1461078b578063f53bc835146107ab578063f9f92be4146107cb57600080fd5b8063b51449bb1461065d578063bbc0c74214610691578063cd51e6d4146106b0578063dd62ed3e146106c6578063e1a452181461070c57600080fd5b806393818cfa1161010857806393818cfa146105a857806395d89b41146105c8578063a457c2d7146105dd578063a894185d146105fd578063a9059cbb1461061d578063b0ac15711461063d57600080fd5b8063821f658014610501578063853828b6146105215780638da5cb5b14610536578063912c048c146105685780639155e0831461058857600080fd5b806339509351116101dd5780635b78f35f116101a15780635b78f35f1461045057806364071d9f1461046657806370a082311461048657806370db69d6146104bc578063715018a6146104d257806377004851146104e757600080fd5b806339509351146103b857806339b622d3146103d85780633e9ffbea1461040857806351c6590a1461041d57806352f892fa1461043057600080fd5b806319c2c40d1161022457806319c2c40d1461031d57806323b872dd1461033d5780632c8dc1471461035d578063313ce5671461037d57806332cb6b0c1461039957600080fd5b806306fdde031461026c578063095ea7b31461029757806309d2c46a146102c757806313554854146102e957806318160ddd146102fe57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107fb565b60405161028e919061212e565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612191565b61088d565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e23660046121f4565b6108a4565b005b3480156102f557600080fd5b506102e7610959565b34801561030a57600080fd5b506014545b60405190815260200161028e565b34801561032957600080fd5b506102e7610338366004612272565b6109cc565b34801561034957600080fd5b506102b76103583660046122a7565b610a59565b34801561036957600080fd5b5061030f6103783660046122e8565b610b03565b34801561038957600080fd5b506040516012815260200161028e565b3480156103a557600080fd5b5061030f6a084595161401484a00000081565b3480156103c457600080fd5b506102b76103d3366004612191565b610b1a565b3480156103e457600080fd5b506102b76103f3366004612301565b600e6020526000908152604090205460ff1681565b34801561041457600080fd5b506102e7610b56565b6102e761042b3660046122e8565b610b6a565b34801561043c57600080fd5b506102e761044b366004612325565b610cbd565b34801561045c57600080fd5b5061030f60105481565b34801561047257600080fd5b506102e7610481366004612325565b610da5565b34801561049257600080fd5b5061030f6104a1366004612301565b6001600160a01b031660009081526015602052604090205490565b3480156104c857600080fd5b5061030f60125481565b3480156104de57600080fd5b506102e7610e8e565b3480156104f357600080fd5b506011546102b79060ff1681565b34801561050d57600080fd5b5061030f61051c3660046122e8565b610f02565b34801561052d57600080fd5b506102e7610f12565b34801561054257600080fd5b506005546001600160a01b03165b6040516001600160a01b03909116815260200161028e565b34801561057457600080fd5b506105506105833660046122e8565b610f78565b34801561059457600080fd5b506102e76105a3366004612272565b610f98565b3480156105b457600080fd5b506102e76105c336600461237a565b610fcc565b3480156105d457600080fd5b5061028161103e565b3480156105e957600080fd5b506102b76105f8366004612191565b61104d565b34801561060957600080fd5b506102e7610618366004612395565b6110e6565b34801561062957600080fd5b506102b7610638366004612191565b611232565b34801561064957600080fd5b506102e76106583660046122e8565b61123f565b34801561066957600080fd5b506105507f00000000000000000000000001ce195e229cc0bacdcadae20d92955f8022f78c81565b34801561069d57600080fd5b506011546102b790610100900460ff1681565b3480156106bc57600080fd5b5061030f60135481565b3480156106d257600080fd5b5061030f6106e13660046123ce565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561071857600080fd5b5061030f61271081565b34801561072e57600080fd5b506105507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561076257600080fd5b5061030f600281565b34801561077757600080fd5b506102e7610786366004612301565b6112aa565b34801561079757600080fd5b5061030f6107a63660046122e8565b611395565b3480156107b757600080fd5b506102e76107c63660046122e8565b6113a5565b3480156107d757600080fd5b506102b76107e6366004612301565b600f6020526000908152604090205460ff1681565b60606003805461080a90612407565b80601f016020809104026020016040519081016040528092919081815260200182805461083690612407565b80156108835780601f1061085857610100808354040283529160200191610883565b820191906000526020600020905b81548152906001019060200180831161086657829003601f168201915b5050505050905090565b600061089a338484611404565b5060015b92915050565b600c600001546001600160a01b03163314806108cd5750600c600101546001600160a01b031633145b61090e5760405162461bcd60e51b815260206004820152600d60248201526c1b9bc81d185e081dd85b1b195d609a1b60448201526064015b60405180910390fd5b7fbf0afdfa1cb21873aab858ebc02e5db135c9f8e64589cd0d1a668b4d66993ca9600c82604051610940929190612457565b60405180910390a1610955600c826002612042565b5050565b6005546001600160a01b031633146109835760405162461bcd60e51b8152600401610905906124c5565b6011805461ff00191661010017905543601355604051600181527fec78e36312d308764a43b9714c18f6444e2604b277d18be4ea329e0644dbe9b99060200160405180910390a1565b6005546001600160a01b031633146109f65760405162461bcd60e51b8152600401610905906124c5565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527f9081172b1302ac3df81f8da318d2d60362a834f73c0a1b69d14cb14414fbb9fc910160405180910390a15050565b6000610a66848484611528565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610aeb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610905565b610af88533858403611404565b506001949350505050565b60088160028110610b1357600080fd5b0154905081565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161089a918590610b51908690612510565b611404565b60165460ff16610b6857610b68611842565b565b6005546001600160a01b03163314610b945760405162461bcd60e51b8152600401610905906124c5565b6016805461ff001916610100179055610bad3082611b10565b610bd8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83611404565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719343084600080610c1f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cac9190612523565b50506016805461ff00191690555050565b6005546001600160a01b03163314610ce75760405162461bcd60e51b8152600401610905906124c5565b6020810151815161271091610cfb91612510565b1115610d5e5760405162461bcd60e51b815260206004820152602c60248201527f73756d285f6275795461786573292063616e6e6f74206578636565642042505360448201526b2fa222a727a6a4a720aa27a960a11b6064820152608401610905565b7ff030bb719ac1227860b29dae4e2aead664a7eb21b5d574d8eb10302e435a57cb600682604051610d90929190612551565b60405180910390a1610955600682600261209a565b6005546001600160a01b03163314610dcf5760405162461bcd60e51b8152600401610905906124c5565b6020810151815161271091610de391612510565b1115610e475760405162461bcd60e51b815260206004820152602d60248201527f73756d285f73656c6c5461786573292063616e6e6f742065786365656420425060448201526c29afa222a727a6a4a720aa27a960991b6064820152608401610905565b7f4e5aa6a1d8a2baf47d4c781f8fa278df4f48fb465fde488841b40aee0868d9f2600882604051610e79929190612551565b60405180910390a1610955600882600261209a565b6005546001600160a01b03163314610eb85760405162461bcd60e51b8152600401610905906124c5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60068160028110610b1357600080fd5b6005546001600160a01b03163314610f3c5760405162461bcd60e51b8152600401610905906124c5565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f75573d6000803e3d6000fd5b50565b600c8160028110610f8857600080fd5b01546001600160a01b0316905081565b6005546001600160a01b03163314610fc25760405162461bcd60e51b8152600401610905906124c5565b6109558282611bd5565b6005546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610905906124c5565b6011805460ff19168215159081179091556040519081527f927009a164f58be5665a2121b2564ae19a66046fb36a397d3fca78f72ba04c3d906020015b60405180910390a150565b60606004805461080a90612407565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610905565b6110dc3385858403611404565b5060019392505050565b6005546001600160a01b031633146111105760405162461bcd60e51b8152600401610905906124c5565b6002831061114d5760405162461bcd60e51b815260206004820152600a6024820152692fb4b73232bc1027a7a160b11b6044820152606401610905565b600a836002811061116057611160612441565b01548211156111c05760405162461bcd60e51b815260206004820152602660248201527f416d6f756e742063616e6e6f742062652067726561746572207468616e20746f6044820152650e8c2d8a8c2f60d31b6064820152608401610905565b6111cb308284611c5d565b60408051848152602081018490527f13ac772a78d03c80813b3c9c28d72a72d3b31e5ee74e277a88ac0c322a6bfc8f910160405180910390a181600a846002811061121857611218612441565b01600082825461122891906125a3565b9091555050505050565b600061089a338484611528565b6005546001600160a01b031633146112695760405162461bcd60e51b8152600401610905906124c5565b60105460408051918252602082018390527f15426420a06dcf9391d9e4b7557f5cfaba5be0d7bf857b641e78ec375a343425910160405180910390a1601055565b6005546001600160a01b031633146112d45760405162461bcd60e51b8152600401610905906124c5565b6001600160a01b0381166113395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610905565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a8160028110610b1357600080fd5b6005546001600160a01b031633146113cf5760405162461bcd60e51b8152600401610905906124c5565b60128190556040518181527f1003faaf440f4e10b9ef552a11d026be63390c8c7eac09549c045f8d700ba53490602001611033565b6001600160a01b0383166114665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610905565b6001600160a01b0382166114c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610905565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166000908152600f602052604090205460ff16156115915760405162461bcd60e51b815260206004820152601860248201527f526563697069656e7420697320626c61636b6c697374656400000000000000006044820152606401610905565b6001600160a01b0383166000908152600e602052604090205460ff16806115d057506001600160a01b0382166000908152600e602052604090205460ff165b156115e5576115e0838383611c5d565b505050565b601054600b54600a546115f89190612510565b10158015611609575060165460ff16155b801561164757507f00000000000000000000000001ce195e229cc0bacdcadae20d92955f8022f78c6001600160a01b0316836001600160a01b031614155b8015611655575060115460ff165b1561166257611662611842565b8061166b6120c8565b7f00000000000000000000000001ce195e229cc0bacdcadae20d92955f8022f78c6001600160a01b0316856001600160a01b03160361178957601154610100900460ff166116f75760405162461bcd60e51b815260206004820152601960248201527854726164696e67206973206e6f74207965742061637469766560381b6044820152606401610905565b6012548311156117495760405162461bcd60e51b815260206004820152601960248201527f42757920616d6f756e742065786365656473206d6178427579000000000000006044820152606401610905565b60026013546117589190612510565b431161176957611769846001611bd5565b611774836001611dd9565b8051919350915061178490611eaf565b611826565b7f00000000000000000000000001ce195e229cc0bacdcadae20d92955f8022f78c6001600160a01b0316846001600160a01b03160361182657601154610100900460ff166118155760405162461bcd60e51b815260206004820152601960248201527854726164696e67206973206e6f74207965742061637469766560381b6044820152606401610905565b611820836000611dd9565b90925090505b611831858584611c5d565b61183b8582611f34565b5050505050565b6016805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061188457611884612441565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192691906125b6565b8160018151811061193957611939612441565b6001600160a01b039290921660209283029190910190910152600b54600a5460009161196491612510565b9050611991307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83611404565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906119e69084906000908790309042906004016125d3565b600060405180830381600087803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b5050600a54479250600091508390611a2c9084612644565b611a36919061265b565b9050600083600a60010154611a4b9085612644565b611a55919061265b565b6040805180820190915260008082526020820152909150611a7a90600a9060026120e6565b508115611abd57600c546040516001600160a01b03909116906108fc8415029084906000818181858888f19350505050158015611abb573d6000803e3d6000fd5b505b8015611aff57600d546040516001600160a01b03909116906108fc8315029083906000818181858888f19350505050158015611afd573d6000803e3d6000fd5b505b50506016805460ff19169055505050565b6a084595161401484a00000081601454611b2a9190612510565b1115611b6e5760405162461bcd60e51b815260206004820152601360248201527213585e081cdd5c1c1b1e48195e18d959591959606a1b6044820152606401610905565b8060146000828254611b809190612510565b90915550611b9090508282611fda565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166000818152600f602090815260409182902054825193845260ff1615159083015282151582820152517f248358295a71c50a9351204f4da6e13409c2887fde3625358fbb80b9743e433b9181900360600190a16001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b038316611cb35760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610905565b6001600160a01b038216611d095760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610905565b6001600160a01b03831660009081526015602052604090205481811015611d725760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606401610905565b611d7c848361201e565b611d868383611fda565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dcb91815260200190565b60405180910390a350505050565b6000611de36120c8565b8215611e3c576040805180820190915280612710600660000154611e079088612644565b611e11919061265b565b8152602001612710600660010154611e299088612644565b611e33919061265b565b90529050611e8b565b6040805180820190915280612710600860000154611e5a9088612644565b611e64919061265b565b8152602001612710600860010154611e7c9088612644565b611e86919061265b565b905290505b60208101518151611e9c90866125a3565b611ea691906125a3565b91509250929050565b611ec46a084595161401484a00000082612644565b600c546001600160a01b039081166000908152600160209081526040808320600d5490941683529290522055611f056a084595161401484a00000082612644565b600d546001600160a01b039081166000908152600160209081526040808320600c549094168352929052205550565b6001600160a01b038216611f8a5760405162461bcd60e51b815260206004820152601e60248201527f7461786174696f6e2066726f6d20746865207a65726f206164647265737300006044820152606401610905565b60208101518151600091611f9d91612510565b9050611faa833083611c5d565b8151600a8054600090611fbe908490612510565b90915550506020820151600b8054600090611228908490612510565b6001600160a01b038216600090815260156020526040902054611ffe908290612510565b6001600160a01b0390921660009081526015602052604090209190915550565b6001600160a01b038216600090815260156020526040902054611ffe9082906125a3565b826002810192821561208a579160200282015b8281111561208a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612055565b50612096929150612119565b5090565b826002810192821561208a579160200282015b8281111561208a5782518255916020019190600101906120ad565b60405180604001604052806002906020820280368337509192915050565b826002810192821561208a579160200282015b8281111561208a578251829060ff169055916020019190600101906120f9565b5b80821115612096576000815560010161211a565b600060208083528351808285015260005b8181101561215b5785810183015185820160400152820161213f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f7557600080fd5b600080604083850312156121a457600080fd5b82356121af8161217c565b946020939093013593505050565b6040805190810167ffffffffffffffff811182821017156121ee57634e487b7160e01b600052604160045260246000fd5b60405290565b60006040828403121561220657600080fd5b82601f83011261221557600080fd5b61221d6121bd565b80604084018581111561222f57600080fd5b845b818110156122525780356122448161217c565b845260209384019301612231565b509095945050505050565b8035801515811461226d57600080fd5b919050565b6000806040838503121561228557600080fd5b82356122908161217c565b915061229e6020840161225d565b90509250929050565b6000806000606084860312156122bc57600080fd5b83356122c78161217c565b925060208401356122d78161217c565b929592945050506040919091013590565b6000602082840312156122fa57600080fd5b5035919050565b60006020828403121561231357600080fd5b813561231e8161217c565b9392505050565b60006040828403121561233757600080fd5b82601f83011261234657600080fd5b61234e6121bd565b80604084018581111561236057600080fd5b845b81811015612252578035845260209384019301612362565b60006020828403121561238c57600080fd5b61231e8261225d565b6000806000606084860312156123aa57600080fd5b833592506020840135915060408401356123c38161217c565b809150509250925092565b600080604083850312156123e157600080fd5b82356123ec8161217c565b915060208301356123fc8161217c565b809150509250929050565b600181811c9082168061241b57607f821691505b60208210810361243b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60808101818460005b60028110156124885781546001600160a01b0316835260209092019160019182019101612460565b505050604082018360005b60028110156124bb5781516001600160a01b0316835260209283019290910190600101612493565b5050509392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089e5761089e6124fa565b60008060006060848603121561253857600080fd5b8351925060208401519150604084015190509250925092565b60808101818460005b600281101561257957815483526020909201916001918201910161255a565b505050604082018360005b60028110156124bb578151835260209283019290910190600101612584565b8181038181111561089e5761089e6124fa565b6000602082840312156125c857600080fd5b815161231e8161217c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126235784516001600160a01b0316835293830193918301916001016125fe565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761089e5761089e6124fa565b60008261267857634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122014e4a440c4d35d6162a5f128bd08bea86feca23356b1dec5faca17c4c6aabfef64736f6c63430008110033
Deployed Bytecode Sourcemap
14880:13419:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9826:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10740:169;;;;;;;;;;-1:-1:-1;10740:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10740:169:0;1023:187:1;20343:209:0;;;;;;;;;;-1:-1:-1;20343:209:0;;;;;:::i;:::-;;:::i;:::-;;21597:166;;;;;;;;;;;;;:::i;27883:100::-;;;;;;;;;;-1:-1:-1;27963:12:0;;27883:100;;;2520:25:1;;;2508:2;2493:18;27883:100:0;2374:177:1;21954:217:0;;;;;;;;;;-1:-1:-1;21954:217:0;;;;;:::i;:::-;;:::i;10917:492::-;;;;;;;;;;-1:-1:-1;10917:492:0;;;;;:::i;:::-;;:::i;15343:40::-;;;;;;;;;;-1:-1:-1;15343:40:0;;;;;:::i;:::-;;:::i;10046:93::-;;;;;;;;;;-1:-1:-1;10046:93:0;;10129:2;3829:36:1;;3817:2;3802:18;10046:93:0;3687:184:1;14924:53:0;;;;;;;;;;;;14961:16;14924:53;;11417:215;;;;;;;;;;-1:-1:-1;11417:215:0;;;;;:::i;:::-;;:::i;15643:43::-;;;;;;;;;;-1:-1:-1;15643:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25467:94;;;;;;;;;;;;;:::i;20560:483::-;;;;;;:::i;:::-;;:::i;18373:311::-;;;;;;;;;;-1:-1:-1;18373:311:0;;;;;:::i;:::-;;:::i;15881:43::-;;;;;;;;;;;;;;;;18785:321;;;;;;;;;;-1:-1:-1;18785:321:0;;;;;:::i;:::-;;:::i;22671:177::-;;;;;;;;;;-1:-1:-1;22671:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;22822:18:0;22790:7;22822:18;;;:9;:18;;;;;;;22671:177;16182:44;;;;;;;;;;;;;;;;14471:150;;;;;;;;;;;;;:::i;15978:27::-;;;;;;;;;;-1:-1:-1;15978:27:0;;;;;;;;15262:39;;;;;;;;;;-1:-1:-1;15262:39:0;;;;;:::i;:::-;;:::i;25569:109::-;;;;;;;;;;;;;:::i;14257:79::-;;;;;;;;;;-1:-1:-1;14322:6:0;;-1:-1:-1;;;;;14322:6:0;14257:79;;;-1:-1:-1;;;;;4888:32:1;;;4870:51;;4858:2;4843:18;14257:79:0;4724:203:1;15533:36:0;;;;;;;;;;-1:-1:-1;15533:36:0;;;;;:::i;:::-;;:::i;21197:160::-;;;;;;;;;;-1:-1:-1;21197:160:0;;;;;:::i;:::-;;:::i;22320:137::-;;;;;;;;;;-1:-1:-1;22320:137:0;;;;;:::i;:::-;;:::i;9934:104::-;;;;;;;;;;;;;:::i;11640:413::-;;;;;;;;;;-1:-1:-1;11640:413:0;;;;;:::i;:::-;;:::i;19729:486::-;;;;;;;;;;-1:-1:-1;19729:486:0;;;;;:::i;:::-;;:::i;10398:175::-;;;;;;;;;;-1:-1:-1;10398:175:0;;;;;:::i;:::-;;:::i;19257:199::-;;;;;;;;;;-1:-1:-1;19257:199:0;;;;;:::i;:::-;;:::i;15189:30::-;;;;;;;;;;;;;;;16078:33;;;;;;;;;;-1:-1:-1;16078:33:0;;;;;;;;;;;16286:27;;;;;;;;;;;;;;;;10581:151;;;;;;;;;;-1:-1:-1;10581:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10697:18:0;;;10670:7;10697:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10581:151;14984:48;;;;;;;;;;;;15026:6;14984:48;;15139:43;;;;;;;;;;;;;;;15039:40;;;;;;;;;;;;15078:1;15039:40;;14629:244;;;;;;;;;;-1:-1:-1;14629:244:0;;;;;:::i;:::-;;:::i;15446:28::-;;;;;;;;;;-1:-1:-1;15446:28:0;;;;;:::i;:::-;;:::i;22535:128::-;;;;;;;;;;-1:-1:-1;22535:128:0;;;;;:::i;:::-;;:::i;15756:41::-;;;;;;;;;;-1:-1:-1;15756:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9826:100;9880:13;9913:5;9906:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9826:100;:::o;10740:169::-;10823:4;10840:39;8208:10;10863:7;10872:6;10840:8;:39::i;:::-;-1:-1:-1;10897:4:0;10740:169;;;;;:::o;20343:209::-;17458:10;17469:1;17458:13;;-1:-1:-1;;;;;17458:13:0;17444:10;:27;;:58;;-1:-1:-1;17489:10:0;17500:1;17489:13;;-1:-1:-1;;;;;17489:13:0;17475:10;:27;17444:58;17436:84;;;;-1:-1:-1;;;17436:84:0;;7075:2:1;17436:84:0;;;7057:21:1;7114:2;7094:18;;;7087:30;-1:-1:-1;;;7133:18:1;;;7126:43;7186:18;;17436:84:0;;;;;;;;;20467:42:::1;20485:10;20497:11;20467:42;;;;;;;:::i;:::-;;;;;;;;20520:24;:10;20533:11:::0;20520:24:::1;;:::i;:::-;;20343:209:::0;:::o;21597:166::-;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;21655:13:::1;:20:::0;;-1:-1:-1;;21655:20:0::1;;;::::0;;21701:12:::1;21686;:27:::0;21729:26:::1;::::0;-1:-1:-1;1163:41:1;;21729:26:0::1;::::0;1151:2:1;1136:18;21729:26:0::1;;;;;;;21597:166::o:0;21954:217::-;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22068:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;;;;:36;;-1:-1:-1;;22068:36:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22120:43;;8709:51:1;;;8776:18;;;8769:50;22120:43:0::1;::::0;8682:18:1;22120:43:0::1;;;;;;;21954:217:::0;;:::o;10917:492::-;11057:4;11074:36;11084:6;11092:9;11103:6;11074:9;:36::i;:::-;-1:-1:-1;;;;;11150:19:0;;11123:24;11150:19;;;:11;:19;;;;;;;;8208:10;11150:33;;;;;;;;11202:26;;;;11194:79;;;;-1:-1:-1;;;11194:79:0;;9032:2:1;11194:79:0;;;9014:21:1;9071:2;9051:18;;;9044:30;9110:34;9090:18;;;9083:62;-1:-1:-1;;;9161:18:1;;;9154:38;9209:19;;11194:79:0;8830:404:1;11194:79:0;11309:57;11318:6;8208:10;11359:6;11340:16;:25;11309:8;:57::i;:::-;-1:-1:-1;11397:4:0;;10917:492;-1:-1:-1;;;;10917:492:0:o;15343:40::-;;;;;;;;;;;;;;;-1:-1:-1;15343:40:0;:::o;11417:215::-;8208:10;11505:4;11554:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11554:34:0;;;;;;;;;;11505:4;;11522:80;;11545:7;;11554:47;;11591:10;;11554:47;:::i;:::-;11522:8;:80::i;25467:94::-;25511:7;;;;25506:48;;25535:7;:5;:7::i;:::-;25467:94::o;20560:483::-;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;17316:15:::1;:22:::0;;-1:-1:-1;;17316:22:0::1;;;::::0;;20690:28:::2;20704:4;20711:6:::0;20690:5:::2;:28::i;:::-;20729:49;20746:4;20761:7;20771:6;20729:8;:49::i;:::-;20791:7;-1:-1:-1::0;;;;;20791:23:0::2;;20822:9;20855:4;20875:6;20896:1;20912::::0;20928:7:::2;14322:6:::0;;-1:-1:-1;;;;;14322:6:0;;14257:79;20928:7:::2;20791:244;::::0;::::2;::::0;;;-1:-1:-1;;;;;;20791:244:0;;;-1:-1:-1;;;;;9860:15:1;;;20791:244:0::2;::::0;::::2;9842:34:1::0;9892:18;;;9885:34;;;;9935:18;;;9928:34;;;;9978:18;;;9971:34;10042:15;;;10021:19;;;10014:44;21009:15:0::2;10074:19:1::0;;;10067:35;9776:19;;20791:244:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17361:15:0::1;:23:::0;;-1:-1:-1;;17361:23:0::1;::::0;;-1:-1:-1;;20560:483:0:o;18373:311::-;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;18490:12:::1;::::0;::::1;::::0;18475;;15026:6:::1;::::0;18475:27:::1;::::0;::::1;:::i;:::-;:46;;18453:140;;;::::0;-1:-1:-1;;;18453:140:0;;10626:2:1;18453:140:0::1;::::0;::::1;10608:21:1::0;10665:2;10645:18;;;10638:30;10704:34;10684:18;;;10677:62;-1:-1:-1;;;10755:18:1;;;10748:42;10807:19;;18453:140:0::1;10424:408:1::0;18453:140:0::1;18609:36;18625:8;18635:9;18609:36;;;;;;;:::i;:::-;;;;;;;;18656:20;:8;18667:9:::0;18656:20:::1;;:::i;18785:321::-:0;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;18905:13:::1;::::0;::::1;::::0;18889;;15026:6:::1;::::0;18889:29:::1;::::0;::::1;:::i;:::-;:48;;18867:143;;;::::0;-1:-1:-1;;;18867:143:0;;11920:2:1;18867:143:0::1;::::0;::::1;11902:21:1::0;11959:2;11939:18;;;11932:30;11998:34;11978:18;;;11971:62;-1:-1:-1;;;12049:18:1;;;12042:43;12102:19;;18867:143:0::1;11718:409:1::0;18867:143:0::1;19026:39;19043:9;19054:10;19026:39;;;;;;;:::i;:::-;;;;;;;;19076:22;:9;19088:10:::0;19076:22:::1;;:::i;14471:150::-:0;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;14564:6:::1;::::0;14543:40:::1;::::0;14580:1:::1;::::0;-1:-1:-1;;;;;14564:6:0::1;::::0;14543:40:::1;::::0;14580:1;;14543:40:::1;14594:6;:19:::0;;-1:-1:-1;;;;;;14594:19:0::1;::::0;;14471:150::o;15262:39::-;;;;;;;;;;;25569:109;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;14322:6;;25622:48:::1;::::0;-1:-1:-1;;;;;14322:6:0;;;;25648:21:::1;25622:48:::0;::::1;;;::::0;::::1;::::0;;;25648:21;14322:6;25622:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25569:109::o:0;15533:36::-;;;;;;;;;;;;;;-1:-1:-1;;;;;15533:36:0;;-1:-1:-1;15533:36:0;:::o;21197:160::-;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;21319:30:::1;21336:4;21342:6;21319:16;:30::i;22320:137::-:0;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;22387:8:::1;:20:::0;;-1:-1:-1;;22387:20:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22423:26:::1;::::0;1163:41:1;;;22423:26:0::1;::::0;1151:2:1;1136:18;22423:26:0::1;;;;;;;;22320:137:::0;:::o;9934:104::-;9990:13;10023:7;10016:14;;;;;:::i;11640:413::-;8208:10;11733:4;11777:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11777:34:0;;;;;;;;;;11830:35;;;;11822:85;;;;-1:-1:-1;;;11822:85:0;;12334:2:1;11822:85:0;;;12316:21:1;12373:2;12353:18;;;12346:30;12412:34;12392:18;;;12385:62;-1:-1:-1;;;12463:18:1;;;12456:35;12508:19;;11822:85:0;12132:401:1;11822:85:0;11943:67;8208:10;11966:7;11994:15;11975:16;:34;11943:8;:67::i;:::-;-1:-1:-1;12041:4:0;;11640:413;-1:-1:-1;;;11640:413:0:o;19729:486::-;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;19903:17:::1;19894:6;:26;19871:64;;;::::0;-1:-1:-1;;;19871:64:0;;12740:2:1;19871:64:0::1;::::0;::::1;12722:21:1::0;12779:2;12759:18;;;12752:30;-1:-1:-1;;;12798:18:1;;;12791:40;12848:18;;19871:64:0::1;12538:334:1::0;19871:64:0::1;19979:10;19990:6;19979:18;;;;;;;:::i;:::-;;;19968:7;:29;;19946:117;;;::::0;-1:-1:-1;;;19946:117:0;;13079:2:1;19946:117:0::1;::::0;::::1;13061:21:1::0;13118:2;13098:18;;;13091:30;13157:34;13137:18;;;13130:62;-1:-1:-1;;;13208:18:1;;;13201:36;13254:19;;19946:117:0::1;12877:402:1::0;19946:117:0::1;20074:48;20095:4;20102:10;20114:7;20074:12;:48::i;:::-;20138:29;::::0;;13458:25:1;;;13514:2;13499:18;;13492:34;;;20138:29:0::1;::::0;13431:18:1;20138:29:0::1;;;;;;;20200:7;20178:10;20189:6;20178:18;;;;;;;:::i;:::-;;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;19729:486:0:o;10398:175::-;10484:4;10501:42;8208:10;10525:9;10536:6;10501:9;:42::i;19257:199::-;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;19369:15:::1;::::0;19346:57:::1;::::0;;13458:25:1;;;13514:2;13499:18;;13492:34;;;19346:57:0::1;::::0;13431:18:1;19346:57:0::1;;;;;;;19414:15;:34:::0;19257:199::o;14629:244::-;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14718:22:0;::::1;14710:73;;;::::0;-1:-1:-1;;;14710:73:0;;13872:2:1;14710:73:0::1;::::0;::::1;13854:21:1::0;13911:2;13891:18;;;13884:30;13950:34;13930:18;;;13923:62;-1:-1:-1;;;14001:18:1;;;13994:36;14047:19;;14710:73:0::1;13670:402:1::0;14710:73:0::1;14820:6;::::0;14799:38:::1;::::0;-1:-1:-1;;;;;14799:38:0;;::::1;::::0;14820:6:::1;::::0;14799:38:::1;::::0;14820:6:::1;::::0;14799:38:::1;14848:6;:17:::0;;-1:-1:-1;;;;;;14848:17:0::1;-1:-1:-1::0;;;;;14848:17:0;;;::::1;::::0;;;::::1;::::0;;14629:244::o;15446:28::-;;;;;;;;;;;22535:128;14384:6;;-1:-1:-1;;;;;14384:6:0;8208:10;14384:22;14376:67;;;;-1:-1:-1;;;14376:67:0;;;;;;;:::i;:::-;22601:6:::1;:16:::0;;;22633:22:::1;::::0;2520:25:1;;;22633:22:0::1;::::0;2508:2:1;2493:18;22633:22:0::1;2374:177:1::0;13550:380:0;-1:-1:-1;;;;;13686:19:0;;13678:68;;;;-1:-1:-1;;;13678:68:0;;14279:2:1;13678:68:0;;;14261:21:1;14318:2;14298:18;;;14291:30;14357:34;14337:18;;;14330:62;-1:-1:-1;;;14408:18:1;;;14401:34;14452:19;;13678:68:0;14077:400:1;13678:68:0;-1:-1:-1;;;;;13765:21:0;;13757:68;;;;-1:-1:-1;;;13757:68:0;;14684:2:1;13757:68:0;;;14666:21:1;14723:2;14703:18;;;14696:30;14762:34;14742:18;;;14735:62;-1:-1:-1;;;14813:18:1;;;14806:32;14855:19;;13757:68:0;14482:398:1;13757:68:0;-1:-1:-1;;;;;13838:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13890:32;;2520:25:1;;;13890:32:0;;2493:18:1;13890:32:0;;;;;;;13550:380;;;:::o;23137:1282::-;-1:-1:-1;;;;;23279:20:0;;;;;;:9;:20;;;;;;;;23278:21;23270:58;;;;-1:-1:-1;;;23270:58:0;;15087:2:1;23270:58:0;;;15069:21:1;15126:2;15106:18;;;15099:30;15165:26;15145:18;;;15138:54;15209:18;;23270:58:0;14885:348:1;23270:58:0;-1:-1:-1;;;;;23345:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;23368:22:0;;;;;;:11;:22;;;;;;;;23345:45;23341:138;;;23407:39;23420:6;23428:9;23439:6;23407:12;:39::i;:::-;23137:1282;;;:::o;23341:138::-;23542:15;;23525:13;;:10;23509:13;:29;;23525:13;23509:29;:::i;:::-;:48;;:73;;;;-1:-1:-1;23575:7:0;;;;23574:8;23509:73;:105;;;;;23609:5;-1:-1:-1;;;;;23599:15:0;:6;-1:-1:-1;;;;;23599:15:0;;;23509:105;:130;;;;-1:-1:-1;23631:8:0;;;;23509:130;23491:194;;;23666:7;:5;:7::i;:::-;23712:6;23729:23;;:::i;:::-;23777:5;-1:-1:-1;;;;;23767:15:0;:6;-1:-1:-1;;;;;23767:15:0;;23763:565;;23807:13;;;;;;;23799:51;;;;-1:-1:-1;;;23799:51:0;;15440:2:1;23799:51:0;;;15422:21:1;15479:2;15459:18;;;15452:30;-1:-1:-1;;;15498:18:1;;;15491:55;15563:18;;23799:51:0;15238:349:1;23799:51:0;23883:6;;23873;:16;;23865:54;;;;-1:-1:-1;;;23865:54:0;;15794:2:1;23865:54:0;;;15776:21:1;15833:2;15813:18;;;15806:30;15872:27;15852:18;;;15845:55;15917:18;;23865:54:0;15592:349:1;23865:54:0;15078:1;23954:12;;:27;;;;:::i;:::-;23938:12;:43;23934:117;;24002:33;24019:9;24030:4;24002:16;:33::i;:::-;24081:28;24096:6;24104:4;24081:14;:28::i;:::-;24139:8;;24065:44;;-1:-1:-1;24065:44:0;-1:-1:-1;24124:24:0;;:14;:24::i;:::-;23763:565;;;24183:5;-1:-1:-1;;;;;24170:18:0;:9;-1:-1:-1;;;;;24170:18:0;;24166:162;;24213:13;;;;;;;24205:51;;;;-1:-1:-1;;;24205:51:0;;15440:2:1;24205:51:0;;;15422:21:1;15479:2;15459:18;;;15452:30;-1:-1:-1;;;15498:18:1;;;15491:55;15563:18;;24205:51:0;15238:349:1;24205:51:0;24287:29;24302:6;24310:5;24287:14;:29::i;:::-;24271:45;;-1:-1:-1;24271:45:0;-1:-1:-1;24166:162:0;24338:37;24351:6;24359:9;24370:4;24338:12;:37::i;:::-;24386:25;24397:6;24405:5;24386:10;:25::i;:::-;23259:1160;;23137:1282;;;:::o;24515:944::-;17213:7;:14;;-1:-1:-1;;17213:14:0;17223:4;17213:14;;;24585:16:::1;::::0;;24599:1:::1;24585:16:::0;;;;;::::1;::::0;;-1:-1:-1;;24585:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24585:16:0::1;24561:40;;24630:4;24612;24617:1;24612:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;24612:23:0::1;;;-1:-1:-1::0;;;;;24612:23:0::1;;;::::0;::::1;24656:7;-1:-1:-1::0;;;;;24656:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24646:4;24651:1;24646:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24646:24:0;;;::::1;:7;::::0;;::::1;::::0;;;;;;;:24;24721:13;;:10:::1;24705:13:::0;24683:19:::1;::::0;24705:29:::1;::::0;::::1;:::i;:::-;24683:51;;24747:54;24764:4;24779:7;24789:11;24747:8;:54::i;:::-;24812:216;::::0;-1:-1:-1;;;24812:216:0;;-1:-1:-1;;;;;24812:7:0::1;:58;::::0;::::1;::::0;:216:::1;::::0;24885:11;;24911:1:::1;::::0;24955:4;;24982::::1;::::0;25002:15:::1;::::0;24812:216:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;25142:10:0::1;:13:::0;25068:21:::1;::::0;-1:-1:-1;25039:26:0::1;::::0;-1:-1:-1;25159:11:0;;25121:34:::1;::::0;25068:21;25121:34:::1;:::i;:::-;25120:50;;;;:::i;:::-;25102:68:::0;-1:-1:-1;25181:15:0::1;25238:11:::0;25221:10:::1;25232:1;25221:13;::::0;25200:34:::1;::::0;:18;:34:::1;:::i;:::-;25199:50;;;;:::i;:::-;25260:19;::::0;;;;::::1;::::0;;;-1:-1:-1;25260:19:0;;;::::1;::::0;::::1;::::0;25181:68;;-1:-1:-1;25260:19:0::1;::::0;:10:::1;::::0;:19:::1;;:::i;:::-;-1:-1:-1::0;25296:11:0;;25292:75:::1;;25324:10;:13:::0;:31:::1;::::0;-1:-1:-1;;;;;25324:13:0;;::::1;::::0;:31:::1;::::0;::::1;;::::0;;;25335:1:::1;25324:31:::0;25335:1;25324:31;;:13;:31;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25292:75;25381:11:::0;;25377:75:::1;;25409:13:::0;;:31:::1;::::0;-1:-1:-1;;;;;25409:13:0;;::::1;::::0;:31:::1;::::0;::::1;;::::0;;;:13:::1;:31:::0;:13;:31;;:13;:31;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25377:75;-1:-1:-1::0;;17250:7:0;:15;;-1:-1:-1;;17250:15:0;;;-1:-1:-1;;;24515:944:0:o;27991:268::-;14961:16;28082:6;28067:12;;:21;;;;:::i;:::-;:35;;28059:67;;;;-1:-1:-1;;;28059:67:0;;17784:2:1;28059:67:0;;;17766:21:1;17823:2;17803:18;;;17796:30;-1:-1:-1;;;17842:18:1;;;17835:49;17901:18;;28059:67:0;17582:343:1;28059:67:0;28153:6;28137:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;28170:28:0;;-1:-1:-1;28182:7:0;28191:6;28170:11;:28::i;:::-;28214:37;;2520:25:1;;;-1:-1:-1;;;;;28214:37:0;;;28231:1;;28214:37;;2508:2:1;2493:18;28214:37:0;;;;;;;27991:268;;:::o;21365:168::-;-1:-1:-1;;;;;21466:15:0;;;;;;:9;:15;;;;;;;;;;21443:47;;18120:51:1;;;21466:15:0;;18214:14:1;18207:22;18187:18;;;18180:50;18273:14;;18266:22;18246:18;;;18239:50;21443:47:0;;;;;;18108:2:1;21443:47:0;;;-1:-1:-1;;;;;21501:15:0;;;;;;;;:9;:15;;;;;:24;;-1:-1:-1;;21501:24:0;;;;;;;;;;21365:168::o;27297:578::-;-1:-1:-1;;;;;27432:20:0;;27424:63;;;;-1:-1:-1;;;27424:63:0;;18502:2:1;27424:63:0;;;18484:21:1;18541:2;18521:18;;;18514:30;18580:32;18560:18;;;18553:60;18630:18;;27424:63:0;18300:354:1;27424:63:0;-1:-1:-1;;;;;27506:23:0;;27498:64;;;;-1:-1:-1;;;27498:64:0;;18861:2:1;27498:64:0;;;18843:21:1;18900:2;18880:18;;;18873:30;18939;18919:18;;;18912:58;18987:18;;27498:64:0;18659:352:1;27498:64:0;-1:-1:-1;;;;;22822:18:0;;27575:21;22822:18;;;:9;:18;;;;;;27635:23;;;;27627:67;;;;-1:-1:-1;;;27627:67:0;;19218:2:1;27627:67:0;;;19200:21:1;19257:2;19237:18;;;19230:30;19296:33;19276:18;;;19269:61;19347:18;;27627:67:0;19016:355:1;27627:67:0;27730:32;27747:6;27755;27730:16;:32::i;:::-;27784:30;27796:9;27807:6;27784:11;:30::i;:::-;27849:9;-1:-1:-1;;;;;27832:35:0;27841:6;-1:-1:-1;;;;;27832:35:0;;27860:6;27832:35;;;;2520:25:1;;2508:2;2493:18;;2374:177;27832:35:0;;;;;;;;27413:462;27297:578;;;:::o;26460:567::-;26563:12;26577:23;;:::i;:::-;26622:6;26618:356;;;26645:141;;;;;;;;;;15026:6;26682:8;-1:-1:-1;26682:11:0;;26673:20;;:6;:20;:::i;:::-;26672:40;;;;:::i;:::-;26645:141;;;;15026:6;26741:8;26750:1;26741:11;;26732:20;;:6;:20;:::i;:::-;26731:40;;;;:::i;:::-;26645:141;;;-1:-1:-1;26618:356:0;;;26819:143;;;;;;;;;;15026:6;26856:9;-1:-1:-1;26856:12:0;;26847:21;;:6;:21;:::i;:::-;26846:41;;;;:::i;:::-;26819:143;;;;15026:6;26916:9;26926:1;26916:12;;26907:21;;:6;:21;:::i;:::-;26906:41;;;;:::i;:::-;26819:143;;;-1:-1:-1;26618:356:0;27011:8;;;;27000;;26991:17;;:6;:17;:::i;:::-;:28;;;;:::i;:::-;26984:35;;26460:567;;;;;:::o;27035:213::-;27139:23;14961:16;27139:6;:23;:::i;:::-;27107:10;:13;-1:-1:-1;;;;;27107:13:0;;;27095:26;;;;:11;:26;;;;;;;;27122:13;;;;;27095:41;;;;;;:67;27217:23;14961:16;27217:6;:23;:::i;:::-;27185:13;;-1:-1:-1;;;;;27185:13:0;;;27173:26;;;;:11;:26;;;;;;;;27185:10;27200:13;;;;27173:41;;;;;;:67;-1:-1:-1;27035:213:0:o;25872:387::-;-1:-1:-1;;;;;25983:22:0;;25975:65;;;;-1:-1:-1;;;25975:65:0;;19578:2:1;25975:65:0;;;19560:21:1;19617:2;19597:18;;;19590:30;19656:32;19636:18;;;19629:60;19706:18;;25975:65:0;19376:354:1;25975:65:0;26092:14;;;;26075;;26053:19;;26075:31;;;:::i;:::-;26053:53;;26117:50;26130:8;26148:4;26155:11;26117:12;:50::i;:::-;26195:14;;26178:10;:31;;26207:1;;26178:31;;26195:14;;26178:31;:::i;:::-;;;;-1:-1:-1;;26237:14:0;;;;26220:13;:31;;:13;;:31;;26237:14;;26220:31;:::i;22856:130::-;-1:-1:-1;;;;;22951:18:0;;;;;;:9;:18;;;;;;:27;;22972:6;;22951:27;:::i;:::-;-1:-1:-1;;;;;22930:18:0;;;;;;;:9;:18;;;;;:48;;;;-1:-1:-1;22856:130:0:o;22994:135::-;-1:-1:-1;;;;;23094:18:0;;;;;;:9;:18;;;;;;:27;;23115:6;;23094:27;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1347:343::-;1414:2;1408:9;;;1444:15;;1489:18;1474:34;;1510:22;;;1471:62;1468:185;;;1575:10;1570:3;1566:20;1563:1;1556:31;1610:4;1607:1;1600:15;1638:4;1635:1;1628:15;1468:185;1669:2;1662:22;1347:343;:::o;1695:674::-;1785:6;1838:2;1826:9;1817:7;1813:23;1809:32;1806:52;;;1854:1;1851;1844:12;1806:52;1903:7;1896:4;1885:9;1881:20;1877:34;1867:62;;1925:1;1922;1915:12;1867:62;1949:17;;:::i;:::-;1988:3;2029:2;2018:9;2014:18;2055:7;2047:6;2044:19;2041:39;;;2076:1;2073;2066:12;2041:39;2100:9;2118:221;2134:6;2129:3;2126:15;2118:221;;;2216:3;2203:17;2233:31;2258:5;2233:31;:::i;:::-;2277:18;;2324:4;2315:14;;;;2151;2118:221;;;-1:-1:-1;2358:5:1;;1695:674;-1:-1:-1;;;;;1695:674:1:o;2556:160::-;2621:20;;2677:13;;2670:21;2660:32;;2650:60;;2706:1;2703;2696:12;2650:60;2556:160;;;:::o;2721:315::-;2786:6;2794;2847:2;2835:9;2826:7;2822:23;2818:32;2815:52;;;2863:1;2860;2853:12;2815:52;2902:9;2889:23;2921:31;2946:5;2921:31;:::i;:::-;2971:5;-1:-1:-1;2995:35:1;3026:2;3011:18;;2995:35;:::i;:::-;2985:45;;2721:315;;;;;:::o;3041:456::-;3118:6;3126;3134;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;3242:9;3229:23;3261:31;3286:5;3261:31;:::i;:::-;3311:5;-1:-1:-1;3368:2:1;3353:18;;3340:32;3381:33;3340:32;3381:33;:::i;:::-;3041:456;;3433:7;;-1:-1:-1;;;3487:2:1;3472:18;;;;3459:32;;3041:456::o;3502:180::-;3561:6;3614:2;3602:9;3593:7;3589:23;3585:32;3582:52;;;3630:1;3627;3620:12;3582:52;-1:-1:-1;3653:23:1;;3502:180;-1:-1:-1;3502:180:1:o;3876:247::-;3935:6;3988:2;3976:9;3967:7;3963:23;3959:32;3956:52;;;4004:1;4001;3994:12;3956:52;4043:9;4030:23;4062:31;4087:5;4062:31;:::i;:::-;4112:5;3876:247;-1:-1:-1;;;3876:247:1:o;4128:591::-;4210:6;4263:2;4251:9;4242:7;4238:23;4234:32;4231:52;;;4279:1;4276;4269:12;4231:52;4328:7;4321:4;4310:9;4306:20;4302:34;4292:62;;4350:1;4347;4340:12;4292:62;4374:17;;:::i;:::-;4413:3;4454:2;4443:9;4439:18;4480:7;4472:6;4469:19;4466:39;;;4501:1;4498;4491:12;4466:39;4525:9;4543:146;4559:6;4554:3;4551:15;4543:146;;;4627:17;;4615:30;;4674:4;4665:14;;;;4576;4543:146;;5156:180;5212:6;5265:2;5253:9;5244:7;5240:23;5236:32;5233:52;;;5281:1;5278;5271:12;5233:52;5304:26;5320:9;5304:26;:::i;5341:383::-;5418:6;5426;5434;5487:2;5475:9;5466:7;5462:23;5458:32;5455:52;;;5503:1;5500;5493:12;5455:52;5539:9;5526:23;5516:33;;5596:2;5585:9;5581:18;5568:32;5558:42;;5650:2;5639:9;5635:18;5622:32;5663:31;5688:5;5663:31;:::i;:::-;5713:5;5703:15;;;5341:383;;;;;:::o;5729:388::-;5797:6;5805;5858:2;5846:9;5837:7;5833:23;5829:32;5826:52;;;5874:1;5871;5864:12;5826:52;5913:9;5900:23;5932:31;5957:5;5932:31;:::i;:::-;5982:5;-1:-1:-1;6039:2:1;6024:18;;6011:32;6052:33;6011:32;6052:33;:::i;:::-;6104:7;6094:17;;;5729:388;;;;;:::o;6356:380::-;6435:1;6431:12;;;;6478;;;6499:61;;6553:4;6545:6;6541:17;6531:27;;6499:61;6606:2;6598:6;6595:14;6575:18;6572:38;6569:161;;6652:10;6647:3;6643:20;6640:1;6633:31;6687:4;6684:1;6677:15;6715:4;6712:1;6705:15;6569:161;;6356:380;;;:::o;6741:127::-;6802:10;6797:3;6793:20;6790:1;6783:31;6833:4;6830:1;6823:15;6857:4;6854:1;6847:15;7215:960;7498:3;7483:19;;7487:9;7579:6;7456:4;7613:194;7627:4;7624:1;7621:11;7613:194;;;7690:13;;-1:-1:-1;;;;;7686:39:1;7674:52;;7755:4;7746:14;;;;7722:1;7783:14;;;;7640:9;7613:194;;;7617:3;;;7844:2;7833:9;7829:18;7895:6;7921:1;7931:238;7947:4;7942:3;7939:13;7931:238;;;8016:15;;-1:-1:-1;;;;;8012:41:1;7998:56;;8077:4;8103:14;;;;8142:17;;;;8050:1;7962:11;7931:238;;;7935:3;;;7215:960;;;;;:::o;8180:356::-;8382:2;8364:21;;;8401:18;;;8394:30;8460:34;8455:2;8440:18;;8433:62;8527:2;8512:18;;8180:356::o;9239:127::-;9300:10;9295:3;9291:20;9288:1;9281:31;9331:4;9328:1;9321:15;9355:4;9352:1;9345:15;9371:125;9436:9;;;9457:10;;;9454:36;;;9470:18;;:::i;10113:306::-;10201:6;10209;10217;10270:2;10258:9;10249:7;10245:23;10241:32;10238:52;;;10286:1;10283;10276:12;10238:52;10315:9;10309:16;10299:26;;10365:2;10354:9;10350:18;10344:25;10334:35;;10409:2;10398:9;10394:18;10388:25;10378:35;;10113:306;;;;;:::o;10837:876::-;11088:3;11073:19;;11077:9;11169:6;11046:4;11203:168;11217:4;11214:1;11211:11;11203:168;;;11276:13;;11264:26;;11319:4;11310:14;;;;11359:1;11347:14;;;;11230:9;11203:168;;;11207:3;;;11408:2;11397:9;11393:18;11459:6;11485:1;11495:212;11511:4;11506:3;11503:13;11495:212;;;11576:15;;11562:30;;11615:4;11641:14;;;;11680:17;;;;11535:1;11526:11;11495:212;;13537:128;13604:9;;;13625:11;;;13622:37;;;13639:18;;:::i;15946:251::-;16016:6;16069:2;16057:9;16048:7;16044:23;16040:32;16037:52;;;16085:1;16082;16075:12;16037:52;16117:9;16111:16;16136:31;16161:5;16136:31;:::i;16202:980::-;16464:4;16512:3;16501:9;16497:19;16543:6;16532:9;16525:25;16569:2;16607:6;16602:2;16591:9;16587:18;16580:34;16650:3;16645:2;16634:9;16630:18;16623:31;16674:6;16709;16703:13;16740:6;16732;16725:22;16778:3;16767:9;16763:19;16756:26;;16817:2;16809:6;16805:15;16791:29;;16838:1;16848:195;16862:6;16859:1;16856:13;16848:195;;;16927:13;;-1:-1:-1;;;;;16923:39:1;16911:52;;17018:15;;;;16983:12;;;;16959:1;16877:9;16848:195;;;-1:-1:-1;;;;;;;17099:32:1;;;;17094:2;17079:18;;17072:60;-1:-1:-1;;;17163:3:1;17148:19;17141:35;17060:3;16202:980;-1:-1:-1;;;16202:980:1:o;17187:168::-;17260:9;;;17291;;17308:15;;;17302:22;;17288:37;17278:71;;17329:18;;:::i;17360:217::-;17400:1;17426;17416:132;;17470:10;17465:3;17461:20;17458:1;17451:31;17505:4;17502:1;17495:15;17533:4;17530:1;17523:15;17416:132;-1:-1:-1;17562:9:1;;17360:217::o
Swarm Source
ipfs://14e4a440c4d35d6162a5f128bd08bea86feca23356b1dec5faca17c4c6aabfef
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.