ERC-20
Overview
Max Total Supply
100,000,000 COGAI
Holders
124
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 COGAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
COGAI
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-24 */ /** https://www.cognifyai.cloud https://t.me/cognifyaieth https://x.com/Cognify_AI Next-Gen AI Operating System - Machine Learning */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function per(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= 100, "Percentage must be between 0 and 100"); return a * b / 100; } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } 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 to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } contract COGAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable _uniswapV2Router; address public uniswapV2Pair; address private devWallet; address private marketingWallet; address private constant deadAddress = address(0xdead); uint8 private constant _decimals = 9; uint256 public initialTotalSupply = 100000000 * 10**_decimals; // 1% maxW uint256 public maxWallet = (initialTotalSupply * 10)/1000; uint256 public maxTransactionAmount = maxWallet; bool private swapping; // buy/sell tax uint256 public buyFee = 22; uint256 public sellFee = 25; mapping(address => uint256) private _holderLastTransferTimestamp; //swap for 0.1% uint256 public swapTokensAtAmount = (initialTotalSupply * 3)/1000; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; bool public swapEnabled = false; bool public tradingOpen = false; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); constructor() ERC20("CognifyAI", "COGAI"){ _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); devWallet = payable(_msgSender()); marketingWallet = payable(0x683bF451353E6DA83191BDDB044Ea47aab6eCc76); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(address(_uniswapV2Router), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(_msgSender()), true); excludeFromMaxTransaction(devWallet, true); excludeFromFees(address(_msgSender()), true); excludeFromFees(devWallet, true); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); // mint _mint(devWallet, initialTotalSupply); } receive() external payable {} function addLp() external onlyOwner() { require(!tradingOpen,"Trading is already open"); _approve(address(this), address(_uniswapV2Router), initialTotalSupply); _uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, 0x683bF451353E6DA83191BDDB044Ea47aab6eCc76, block.timestamp ); IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max); } function burn(uint256 amount) external { _burn(_msgSender(), amount); } function openTrading() external onlyOwner() { tradingOpen = true; swapEnabled = true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (!tradingOpen) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if (!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance > swapTokensAtAmount; if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]; uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to]) { fees = amount.mul(sellFee).div(100); } else if(automatedMarketMakerPairs[from]) { fees = amount.mul(buyFee).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, marketingWallet, block.timestamp ); } function setFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner { sellFee = _sellFee; buyFee = _buyFee; } function removeLimits() external onlyOwner { maxTransactionAmount = initialTotalSupply; maxWallet = initialTotalSupply; } function updateThreshold(uint256 newTres) external onlyOwner { swapTokensAtAmount = newTres * 10**_decimals; } function withdrawStuckTokens() external { require(_msgSender() == devWallet); uint256 amount = balanceOf(address(this)); _transfer(address(this), devWallet, amount); } function manualSwapToken(uint256 percent) external { require(_msgSender() == devWallet); uint256 contractBalance = balanceOf(address(this)); uint256 swapAmount = contractBalance * percent / 100; swapTokensForEth(swapAmount); } function withdrawEth() external { require(address(this).balance > 0, "Token: no ETH in the contract"); require(_msgSender() == devWallet); payable(msg.sender).transfer(address(this).balance); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); if (contractBalance == 0) { return; } uint256 tokensToSwap = contractBalance; if (tokensToSwap > swapTokensAtAmount) { tokensToSwap = swapTokensAtAmount; } swapTokensForEth(tokensToSwap); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwapToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTres","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052620000126009600a6200071b565b62000022906305f5e10062000732565b6009556103e8600954600a62000039919062000732565b6200004591906200074c565b600a55600a54600b556016600d556019600e556103e860095460036200006c919062000732565b6200007891906200074c565b6010556014805461ffff1916905534801562000092575f80fd5b5060405180604001604052806009815260200168436f676e696679414960b81b81525060405180604001604052806005815260200164434f47414960d81b8152508160039081620000e4919062000809565b506004620000f3828262000809565b505050620001106200010a620003a060201b60201c565b620003a4565b737a250d5630b4cf539739df2c5dacb4c659f2488d60805260078054336001600160a01b0319918216179091556008805490911673683bf451353e6da83191bddb044ea47aab6ecc7617905562000169306001620003f5565b6200017861dead6001620003f5565b608051620001889060016200045d565b620001953060016200045d565b620001a461dead60016200045d565b620001b13360016200045d565b600754620001ca906001600160a01b031660016200045d565b620001d7336001620003f5565b600754620001f0906001600160a01b03166001620003f5565b6080516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002559190620008d5565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c99190620008d5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000314573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033a9190620008d5565b600680546001600160a01b0319166001600160a01b03929092169182179055620003669060016200045d565b6006546200037f906001600160a01b0316600162000491565b6007546009546200039a916001600160a01b031690620004e4565b62000913565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b620003ff620005a9565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b62000467620005a9565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620005405760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f828254620005539190620008fd565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620006055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000537565b565b505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200066057815f19048211156200064457620006446200060c565b808516156200065257918102915b93841c939080029062000625565b509250929050565b5f82620006785750600162000715565b816200068657505f62000715565b81600181146200069f5760028114620006aa57620006ca565b600191505062000715565b60ff841115620006be57620006be6200060c565b50506001821b62000715565b5060208310610133831016604e8410600b8410161715620006ef575081810a62000715565b620006fb838362000620565b805f19048211156200071157620007116200060c565b0290505b92915050565b5f6200072b60ff84168362000668565b9392505050565b80820281158282048414176200071557620007156200060c565b5f826200076757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200079557607f821691505b602082108103620007b457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200060757805f5260205f20601f840160051c81016020851015620007e15750805b601f840160051c820191505b8181101562000802575f8155600101620007ed565b5050505050565b81516001600160401b038111156200082557620008256200076c565b6200083d8162000836845462000780565b84620007ba565b602080601f83116001811462000873575f84156200085b5750858301515b5f19600386901b1c1916600185901b178555620008cd565b5f85815260208120601f198616915b82811015620008a35788860151825594840194600190910190840162000882565b5085821015620008c157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215620008e6575f80fd5b81516001600160a01b03811681146200072b575f80fd5b808201808211156200071557620007156200060c565b608051611eab620009565f395f8181610402015281816107bd015281816107e6015281816108d4015281816116b70152818161176e01526117ad0152611eab5ff3fe608060405260043610610215575f3560e01c806371f5f01a1161011e578063a9059cbb116100a8578063dd62ed3e1161006d578063dd62ed3e146105df578063e2f45605146105fe578063f2fde38b14610613578063f8b45b0514610632578063ffb54a9914610647575f80fd5b8063a9059cbb14610559578063c024666814610578578063c8c8ebe414610597578063c9567bf9146105ac578063d7d7442f146105c0575f80fd5b80638da5cb5b116100ee5780638da5cb5b146104d657806395d89b41146104f35780639a7a23d614610507578063a0ef91df14610526578063a457c2d71461053a575f80fd5b806371f5f01a14610470578063751039fc1461048f5780637571336a146104a35780638183b3c8146104c2575f80fd5b806342966c681161019f57806352f7c9881161016f57806352f7c988146103d2578063583e0568146103f15780636ddd17131461042457806370a082311461043d578063715018a61461045c575f80fd5b806342966c6814610330578063470624021461034f57806349bd5a5e146103645780634fbee1931461039b575f80fd5b80632b14ca56116101e55780632b14ca56146102b6578063311028af146102cb578063313ce567146102e057806339509351146102fb578063427a5c021461031a575f80fd5b806306fdde0314610220578063095ea7b31461024a57806318160ddd1461027957806323b872dd14610297575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b50610234610665565b60405161024191906119e7565b60405180910390f35b348015610255575f80fd5b50610269610264366004611a47565b6106f5565b6040519015158152602001610241565b348015610284575f80fd5b506002545b604051908152602001610241565b3480156102a2575f80fd5b506102696102b1366004611a71565b61070e565b3480156102c1575f80fd5b50610289600e5481565b3480156102d6575f80fd5b5061028960095481565b3480156102eb575f80fd5b5060405160098152602001610241565b348015610306575f80fd5b50610269610315366004611a47565b610731565b348015610325575f80fd5b5061032e610752565b005b34801561033b575f80fd5b5061032e61034a366004611aaf565b610952565b34801561035a575f80fd5b50610289600d5481565b34801561036f575f80fd5b50600654610383906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156103a6575f80fd5b506102696103b5366004611ac6565b6001600160a01b03165f9081526011602052604090205460ff1690565b3480156103dd575f80fd5b5061032e6103ec366004611ae1565b61095c565b3480156103fc575f80fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b34801561042f575f80fd5b506014546102699060ff1681565b348015610448575f80fd5b50610289610457366004611ac6565b61096c565b348015610467575f80fd5b5061032e610986565b34801561047b575f80fd5b5061032e61048a366004611aaf565b610999565b34801561049a575f80fd5b5061032e6109eb565b3480156104ae575f80fd5b5061032e6104bd366004611b0e565b610a00565b3480156104cd575f80fd5b5061032e610a32565b3480156104e1575f80fd5b506005546001600160a01b0316610383565b3480156104fe575f80fd5b50610234610a76565b348015610512575f80fd5b5061032e610521366004611b0e565b610a85565b348015610531575f80fd5b5061032e610b1f565b348015610545575f80fd5b50610269610554366004611a47565b610bb6565b348015610564575f80fd5b50610269610573366004611a47565b610c30565b348015610583575f80fd5b5061032e610592366004611b0e565b610c3d565b3480156105a2575f80fd5b50610289600b5481565b3480156105b7575f80fd5b5061032e610ca3565b3480156105cb575f80fd5b5061032e6105da366004611aaf565b610cbc565b3480156105ea575f80fd5b506102896105f9366004611b45565b610ce0565b348015610609575f80fd5b5061028960105481565b34801561061e575f80fd5b5061032e61062d366004611ac6565b610d0a565b34801561063d575f80fd5b50610289600a5481565b348015610652575f80fd5b5060145461026990610100900460ff1681565b60606003805461067490611b71565b80601f01602080910402602001604051908101604052809291908181526020018280546106a090611b71565b80156106eb5780601f106106c2576101008083540402835291602001916106eb565b820191905f5260205f20905b8154815290600101906020018083116106ce57829003601f168201915b5050505050905090565b5f33610702818585610d80565b60019150505b92915050565b5f3361071b858285610ea3565b610726858585610f1b565b506001949350505050565b5f336107028185856107438383610ce0565b61074d9190611bbd565b610d80565b61075a611487565b601454610100900460ff16156107b75760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064015b60405180910390fd5b6107e4307f0000000000000000000000000000000000000000000000000000000000000000600954610d80565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719473061081e3061096c565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f60448201819052606482015273683bf451353e6da83191bddb044ea47aab6ecc7660848201524260a482015260c40160606040518083038185885af1158015610893573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108b89190611bd0565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af115801561092b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f9190611bfb565b50565b61094f33826114e1565b610964611487565b600e55600d55565b6001600160a01b03165f9081526020819052604090205490565b61098e611487565b6109975f611611565b565b6007546001600160a01b0316336001600160a01b0316146109b8575f80fd5b5f6109c23061096c565b90505f60646109d18484611c16565b6109db9190611c2d565b90506109e681611662565b505050565b6109f3611487565b600954600b819055600a55565b610a08611487565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6007546001600160a01b0316336001600160a01b031614610a51575f80fd5b5f610a5b3061096c565b60075490915061094f9030906001600160a01b031683610f1b565b60606004805461067490611b71565b610a8d611487565b6006546001600160a01b0390811690831603610b115760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107ae565b610b1b828261181f565b5050565b5f4711610b6e5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a206e6f2045544820696e2074686520636f6e747261637400000060448201526064016107ae565b6007546001600160a01b0316336001600160a01b031614610b8d575f80fd5b60405133904780156108fc02915f818181858888f1935050505015801561094f573d5f803e3d5ffd5b5f3381610bc38286610ce0565b905083811015610c235760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ae565b6107268286868403610d80565b5f33610702818585610f1b565b610c45611487565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610cab611487565b6014805461ffff1916610101179055565b610cc4611487565b610cd06009600a611d2c565b610cda9082611c16565b60105550565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610d12611487565b6001600160a01b038116610d775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ae565b61094f81611611565b6001600160a01b038316610de25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ae565b6001600160a01b038216610e435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ae565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610eae8484610ce0565b90505f198114610f155781811015610f085760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107ae565b610f158484848403610d80565b50505050565b6001600160a01b038316610f415760405162461bcd60e51b81526004016107ae90611d3a565b6001600160a01b038216610f675760405162461bcd60e51b81526004016107ae90611d7f565b805f03610f79576109e683835f611872565b6005546001600160a01b03848116911614801590610fa557506005546001600160a01b03838116911614155b8015610fb957506001600160a01b03821615155b8015610fd057506001600160a01b03821661dead14155b8015610fdf5750600c5460ff16155b156112b657601454610100900460ff16611075576001600160a01b0383165f9081526011602052604090205460ff168061103057506001600160a01b0382165f9081526011602052604090205460ff165b6110755760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107ae565b6001600160a01b0383165f9081526013602052604090205460ff1680156110b457506001600160a01b0382165f9081526012602052604090205460ff16155b1561118857600b548111156111295760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107ae565b600a546111358361096c565b61113f9083611bbd565b11156111835760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ae565b6112b6565b6001600160a01b0382165f9081526013602052604090205460ff1680156111c757506001600160a01b0383165f9081526012602052604090205460ff16155b1561123d57600b548111156111835760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107ae565b6001600160a01b0382165f9081526012602052604090205460ff166112b657600a546112688361096c565b6112729083611bbd565b11156112b65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ae565b5f6112c03061096c565b60105490915081118080156112d7575060145460ff165b80156112e65750600c5460ff16155b801561130a57506001600160a01b0385165f9081526013602052604090205460ff16155b801561132e57506001600160a01b0385165f9081526011602052604090205460ff16155b801561135257506001600160a01b0384165f9081526011602052604090205460ff16155b1561137757600c805460ff1916600117905561136c61199a565b600c805460ff191690555b600c545f9060ff161580156113a457506001600160a01b0386165f9081526011602052604090205460ff16155b80156113c857506001600160a01b0385165f9081526011602052604090205460ff16155b90505f8115611473576001600160a01b0386165f9081526013602052604090205460ff161561141857611411606461140b600e54886119ca90919063ffffffff16565b906119dc565b9050611455565b6001600160a01b0387165f9081526013602052604090205460ff161561145557611452606461140b600d54886119ca90919063ffffffff16565b90505b801561146657611466873083611872565b6114708186611dc2565b94505b61147e878787611872565b50505050505050565b6005546001600160a01b031633146109975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ae565b6001600160a01b0382166115415760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107ae565b6001600160a01b0382165f90815260208190526040902054818110156115b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107ae565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061169557611695611dd5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611711573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117359190611de9565b8160018151811061174857611748611dd5565b60200260200101906001600160a01b031690816001600160a01b031681525050611793307f000000000000000000000000000000000000000000000000000000000000000084610d80565b60085460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac947926117ee9287925f92889291909116904290600401611e04565b5f604051808303815f87803b158015611805575f80fd5b505af1158015611817573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166118985760405162461bcd60e51b81526004016107ae90611d3a565b6001600160a01b0382166118be5760405162461bcd60e51b81526004016107ae90611d7f565b6001600160a01b0383165f90815260208190526040902054818110156119355760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ae565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610f15565b5f6119a43061096c565b9050805f036119b05750565b60105481908111156119c157506010545b610b1b81611662565b5f6119d58284611c16565b9392505050565b5f6119d58284611c2d565b5f602080835283518060208501525f5b81811015611a13578581018301518582016040015282016119f7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461094f575f80fd5b5f8060408385031215611a58575f80fd5b8235611a6381611a33565b946020939093013593505050565b5f805f60608486031215611a83575f80fd5b8335611a8e81611a33565b92506020840135611a9e81611a33565b929592945050506040919091013590565b5f60208284031215611abf575f80fd5b5035919050565b5f60208284031215611ad6575f80fd5b81356119d581611a33565b5f8060408385031215611af2575f80fd5b50508035926020909101359150565b801515811461094f575f80fd5b5f8060408385031215611b1f575f80fd5b8235611b2a81611a33565b91506020830135611b3a81611b01565b809150509250929050565b5f8060408385031215611b56575f80fd5b8235611b6181611a33565b91506020830135611b3a81611a33565b600181811c90821680611b8557607f821691505b602082108103611ba357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561070857610708611ba9565b5f805f60608486031215611be2575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611c0b575f80fd5b81516119d581611b01565b808202811582820484141761070857610708611ba9565b5f82611c4757634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b80851115611c8657815f1904821115611c6c57611c6c611ba9565b80851615611c7957918102915b93841c9390800290611c51565b509250929050565b5f82611c9c57506001610708565b81611ca857505f610708565b8160018114611cbe5760028114611cc857611ce4565b6001915050610708565b60ff841115611cd957611cd9611ba9565b50506001821b610708565b5060208310610133831016604e8410600b8410161715611d07575081810a610708565b611d118383611c4c565b805f1904821115611d2457611d24611ba9565b029392505050565b5f6119d560ff841683611c8e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561070857610708611ba9565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611df9575f80fd5b81516119d581611a33565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e545784516001600160a01b031683529383019391830191600101611e2f565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220384d0d3c6d936c5d58e2a433e9a946817ad3e97933d895d6fd0ac795f24b2e3664736f6c63430008170033
Deployed Bytecode
0x608060405260043610610215575f3560e01c806371f5f01a1161011e578063a9059cbb116100a8578063dd62ed3e1161006d578063dd62ed3e146105df578063e2f45605146105fe578063f2fde38b14610613578063f8b45b0514610632578063ffb54a9914610647575f80fd5b8063a9059cbb14610559578063c024666814610578578063c8c8ebe414610597578063c9567bf9146105ac578063d7d7442f146105c0575f80fd5b80638da5cb5b116100ee5780638da5cb5b146104d657806395d89b41146104f35780639a7a23d614610507578063a0ef91df14610526578063a457c2d71461053a575f80fd5b806371f5f01a14610470578063751039fc1461048f5780637571336a146104a35780638183b3c8146104c2575f80fd5b806342966c681161019f57806352f7c9881161016f57806352f7c988146103d2578063583e0568146103f15780636ddd17131461042457806370a082311461043d578063715018a61461045c575f80fd5b806342966c6814610330578063470624021461034f57806349bd5a5e146103645780634fbee1931461039b575f80fd5b80632b14ca56116101e55780632b14ca56146102b6578063311028af146102cb578063313ce567146102e057806339509351146102fb578063427a5c021461031a575f80fd5b806306fdde0314610220578063095ea7b31461024a57806318160ddd1461027957806323b872dd14610297575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b50610234610665565b60405161024191906119e7565b60405180910390f35b348015610255575f80fd5b50610269610264366004611a47565b6106f5565b6040519015158152602001610241565b348015610284575f80fd5b506002545b604051908152602001610241565b3480156102a2575f80fd5b506102696102b1366004611a71565b61070e565b3480156102c1575f80fd5b50610289600e5481565b3480156102d6575f80fd5b5061028960095481565b3480156102eb575f80fd5b5060405160098152602001610241565b348015610306575f80fd5b50610269610315366004611a47565b610731565b348015610325575f80fd5b5061032e610752565b005b34801561033b575f80fd5b5061032e61034a366004611aaf565b610952565b34801561035a575f80fd5b50610289600d5481565b34801561036f575f80fd5b50600654610383906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156103a6575f80fd5b506102696103b5366004611ac6565b6001600160a01b03165f9081526011602052604090205460ff1690565b3480156103dd575f80fd5b5061032e6103ec366004611ae1565b61095c565b3480156103fc575f80fd5b506103837f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561042f575f80fd5b506014546102699060ff1681565b348015610448575f80fd5b50610289610457366004611ac6565b61096c565b348015610467575f80fd5b5061032e610986565b34801561047b575f80fd5b5061032e61048a366004611aaf565b610999565b34801561049a575f80fd5b5061032e6109eb565b3480156104ae575f80fd5b5061032e6104bd366004611b0e565b610a00565b3480156104cd575f80fd5b5061032e610a32565b3480156104e1575f80fd5b506005546001600160a01b0316610383565b3480156104fe575f80fd5b50610234610a76565b348015610512575f80fd5b5061032e610521366004611b0e565b610a85565b348015610531575f80fd5b5061032e610b1f565b348015610545575f80fd5b50610269610554366004611a47565b610bb6565b348015610564575f80fd5b50610269610573366004611a47565b610c30565b348015610583575f80fd5b5061032e610592366004611b0e565b610c3d565b3480156105a2575f80fd5b50610289600b5481565b3480156105b7575f80fd5b5061032e610ca3565b3480156105cb575f80fd5b5061032e6105da366004611aaf565b610cbc565b3480156105ea575f80fd5b506102896105f9366004611b45565b610ce0565b348015610609575f80fd5b5061028960105481565b34801561061e575f80fd5b5061032e61062d366004611ac6565b610d0a565b34801561063d575f80fd5b50610289600a5481565b348015610652575f80fd5b5060145461026990610100900460ff1681565b60606003805461067490611b71565b80601f01602080910402602001604051908101604052809291908181526020018280546106a090611b71565b80156106eb5780601f106106c2576101008083540402835291602001916106eb565b820191905f5260205f20905b8154815290600101906020018083116106ce57829003601f168201915b5050505050905090565b5f33610702818585610d80565b60019150505b92915050565b5f3361071b858285610ea3565b610726858585610f1b565b506001949350505050565b5f336107028185856107438383610ce0565b61074d9190611bbd565b610d80565b61075a611487565b601454610100900460ff16156107b75760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064015b60405180910390fd5b6107e4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600954610d80565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719473061081e3061096c565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f60448201819052606482015273683bf451353e6da83191bddb044ea47aab6ecc7660848201524260a482015260c40160606040518083038185885af1158015610893573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108b89190611bd0565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af115801561092b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f9190611bfb565b50565b61094f33826114e1565b610964611487565b600e55600d55565b6001600160a01b03165f9081526020819052604090205490565b61098e611487565b6109975f611611565b565b6007546001600160a01b0316336001600160a01b0316146109b8575f80fd5b5f6109c23061096c565b90505f60646109d18484611c16565b6109db9190611c2d565b90506109e681611662565b505050565b6109f3611487565b600954600b819055600a55565b610a08611487565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6007546001600160a01b0316336001600160a01b031614610a51575f80fd5b5f610a5b3061096c565b60075490915061094f9030906001600160a01b031683610f1b565b60606004805461067490611b71565b610a8d611487565b6006546001600160a01b0390811690831603610b115760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107ae565b610b1b828261181f565b5050565b5f4711610b6e5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a206e6f2045544820696e2074686520636f6e747261637400000060448201526064016107ae565b6007546001600160a01b0316336001600160a01b031614610b8d575f80fd5b60405133904780156108fc02915f818181858888f1935050505015801561094f573d5f803e3d5ffd5b5f3381610bc38286610ce0565b905083811015610c235760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ae565b6107268286868403610d80565b5f33610702818585610f1b565b610c45611487565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610cab611487565b6014805461ffff1916610101179055565b610cc4611487565b610cd06009600a611d2c565b610cda9082611c16565b60105550565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610d12611487565b6001600160a01b038116610d775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ae565b61094f81611611565b6001600160a01b038316610de25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ae565b6001600160a01b038216610e435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ae565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610eae8484610ce0565b90505f198114610f155781811015610f085760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107ae565b610f158484848403610d80565b50505050565b6001600160a01b038316610f415760405162461bcd60e51b81526004016107ae90611d3a565b6001600160a01b038216610f675760405162461bcd60e51b81526004016107ae90611d7f565b805f03610f79576109e683835f611872565b6005546001600160a01b03848116911614801590610fa557506005546001600160a01b03838116911614155b8015610fb957506001600160a01b03821615155b8015610fd057506001600160a01b03821661dead14155b8015610fdf5750600c5460ff16155b156112b657601454610100900460ff16611075576001600160a01b0383165f9081526011602052604090205460ff168061103057506001600160a01b0382165f9081526011602052604090205460ff165b6110755760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107ae565b6001600160a01b0383165f9081526013602052604090205460ff1680156110b457506001600160a01b0382165f9081526012602052604090205460ff16155b1561118857600b548111156111295760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107ae565b600a546111358361096c565b61113f9083611bbd565b11156111835760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ae565b6112b6565b6001600160a01b0382165f9081526013602052604090205460ff1680156111c757506001600160a01b0383165f9081526012602052604090205460ff16155b1561123d57600b548111156111835760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107ae565b6001600160a01b0382165f9081526012602052604090205460ff166112b657600a546112688361096c565b6112729083611bbd565b11156112b65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ae565b5f6112c03061096c565b60105490915081118080156112d7575060145460ff165b80156112e65750600c5460ff16155b801561130a57506001600160a01b0385165f9081526013602052604090205460ff16155b801561132e57506001600160a01b0385165f9081526011602052604090205460ff16155b801561135257506001600160a01b0384165f9081526011602052604090205460ff16155b1561137757600c805460ff1916600117905561136c61199a565b600c805460ff191690555b600c545f9060ff161580156113a457506001600160a01b0386165f9081526011602052604090205460ff16155b80156113c857506001600160a01b0385165f9081526011602052604090205460ff16155b90505f8115611473576001600160a01b0386165f9081526013602052604090205460ff161561141857611411606461140b600e54886119ca90919063ffffffff16565b906119dc565b9050611455565b6001600160a01b0387165f9081526013602052604090205460ff161561145557611452606461140b600d54886119ca90919063ffffffff16565b90505b801561146657611466873083611872565b6114708186611dc2565b94505b61147e878787611872565b50505050505050565b6005546001600160a01b031633146109975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ae565b6001600160a01b0382166115415760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107ae565b6001600160a01b0382165f90815260208190526040902054818110156115b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107ae565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061169557611695611dd5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611711573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117359190611de9565b8160018151811061174857611748611dd5565b60200260200101906001600160a01b031690816001600160a01b031681525050611793307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610d80565b60085460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac947926117ee9287925f92889291909116904290600401611e04565b5f604051808303815f87803b158015611805575f80fd5b505af1158015611817573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166118985760405162461bcd60e51b81526004016107ae90611d3a565b6001600160a01b0382166118be5760405162461bcd60e51b81526004016107ae90611d7f565b6001600160a01b0383165f90815260208190526040902054818110156119355760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ae565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610f15565b5f6119a43061096c565b9050805f036119b05750565b60105481908111156119c157506010545b610b1b81611662565b5f6119d58284611c16565b9392505050565b5f6119d58284611c2d565b5f602080835283518060208501525f5b81811015611a13578581018301518582016040015282016119f7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461094f575f80fd5b5f8060408385031215611a58575f80fd5b8235611a6381611a33565b946020939093013593505050565b5f805f60608486031215611a83575f80fd5b8335611a8e81611a33565b92506020840135611a9e81611a33565b929592945050506040919091013590565b5f60208284031215611abf575f80fd5b5035919050565b5f60208284031215611ad6575f80fd5b81356119d581611a33565b5f8060408385031215611af2575f80fd5b50508035926020909101359150565b801515811461094f575f80fd5b5f8060408385031215611b1f575f80fd5b8235611b2a81611a33565b91506020830135611b3a81611b01565b809150509250929050565b5f8060408385031215611b56575f80fd5b8235611b6181611a33565b91506020830135611b3a81611a33565b600181811c90821680611b8557607f821691505b602082108103611ba357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561070857610708611ba9565b5f805f60608486031215611be2575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611c0b575f80fd5b81516119d581611b01565b808202811582820484141761070857610708611ba9565b5f82611c4757634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b80851115611c8657815f1904821115611c6c57611c6c611ba9565b80851615611c7957918102915b93841c9390800290611c51565b509250929050565b5f82611c9c57506001610708565b81611ca857505f610708565b8160018114611cbe5760028114611cc857611ce4565b6001915050610708565b60ff841115611cd957611cd9611ba9565b50506001821b610708565b5060208310610133831016604e8410600b8410161715611d07575081810a610708565b611d118383611c4c565b805f1904821115611d2457611d24611ba9565b029392505050565b5f6119d560ff841683611c8e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561070857610708611ba9565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611df9575f80fd5b81516119d581611a33565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e545784516001600160a01b031683529383019391830191600101611e2f565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220384d0d3c6d936c5d58e2a433e9a946817ad3e97933d895d6fd0ac795f24b2e3664736f6c63430008170033
Deployed Bytecode Sourcemap
14599:8383:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9828:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10759:201;;;;;;;;;;-1:-1:-1;10759:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10759:201:0;1023:187:1;10148:108:0;;;;;;;;;;-1:-1:-1;10236:12:0;;10148:108;;;1361:25:1;;;1349:2;1334:18;10148:108:0;1215:177:1;10968:261:0;;;;;;;;;;-1:-1:-1;10968:261:0;;;;;:::i;:::-;;:::i;15234:27::-;;;;;;;;;;;;;;;;14944:61;;;;;;;;;;;;;;;;10048:92;;;;;;;;;;-1:-1:-1;10048:92:0;;10131:1;2000:36:1;;1988:2;1973:18;10048:92:0;1858:184:1;11237:238:0;;;;;;;;;;-1:-1:-1;11237:238:0;;;;;:::i;:::-;;:::i;17004:538::-;;;;;;;;;;;;;:::i;:::-;;17550:85;;;;;;;;;;-1:-1:-1;17550:85:0;;;;;:::i;:::-;;:::i;15201:26::-;;;;;;;;;;;;;;;;14733:28;;;;;;;;;;-1:-1:-1;14733:28:0;;;;-1:-1:-1;;;;;14733:28:0;;;;;;-1:-1:-1;;;;;2396:32:1;;;2378:51;;2366:2;2351:18;14733:28:0;2232:203:1;18562:126:0;;;;;;;;;;-1:-1:-1;18562:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;18652:28:0;18628:4;18652:28;;;:19;:28;;;;;;;;;18562:126;21469:134;;;;;;;;;;-1:-1:-1;21469:134:0;;;;;:::i;:::-;;:::i;14674:52::-;;;;;;;;;;;;;;;15639:31;;;;;;;;;;-1:-1:-1;15639:31:0;;;;;;;;10264:127;;;;;;;;;;-1:-1:-1;10264:127:0;;;;;:::i;:::-;;:::i;1039:103::-;;;;;;;;;;;;;:::i;22102:267::-;;;;;;;;;;-1:-1:-1;22102:267:0;;;;;:::i;:::-;;:::i;21611:144::-;;;;;;;;;;;;;:::i;17761:::-;;;;;;;;;;-1:-1:-1;17761:144:0;;;;;:::i;:::-;;:::i;21895:199::-;;;;;;;;;;;;;:::i;804:87::-;;;;;;;;;;-1:-1:-1;877:6:0;;-1:-1:-1;;;;;877:6:0;804:87;;9936:104;;;;;;;;;;;;;:::i;18103:257::-;;;;;;;;;;-1:-1:-1;18103:257:0;;;;;:::i;:::-;;:::i;22377:225::-;;;;;;;;;;;;;:::i;11483:436::-;;;;;;;;;;-1:-1:-1;11483:436:0;;;;;:::i;:::-;;:::i;10399:193::-;;;;;;;;;;-1:-1:-1;10399:193:0;;;;;:::i;:::-;;:::i;17913:182::-;;;;;;;;;;-1:-1:-1;17913:182:0;;;;;:::i;:::-;;:::i;15094:47::-;;;;;;;;;;;;;;;;17643:110;;;;;;;;;;;;;:::i;21763:124::-;;;;;;;;;;-1:-1:-1;21763:124:0;;;;;:::i;:::-;;:::i;10600:151::-;;;;;;;;;;-1:-1:-1;10600:151:0;;;;;:::i;:::-;;:::i;15368:65::-;;;;;;;;;;;;;;;;1150:201;;;;;;;;;;-1:-1:-1;1150:201:0;;;;;:::i;:::-;;:::i;15030:57::-;;;;;;;;;;;;;;;;15677:31;;;;;;;;;;-1:-1:-1;15677:31:0;;;;;;;;;;;9828:100;9882:13;9915:5;9908:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9828:100;:::o;10759:201::-;10842:4;357:10;10898:32;357:10;10914:7;10923:6;10898:8;:32::i;:::-;10948:4;10941:11;;;10759:201;;;;;:::o;10968:261::-;11065:4;357:10;11123:38;11139:4;357:10;11154:6;11123:15;:38::i;:::-;11172:27;11182:4;11188:2;11192:6;11172:9;:27::i;:::-;-1:-1:-1;11217:4:0;;10968:261;-1:-1:-1;;;;10968:261:0:o;11237:238::-;11325:4;357:10;11381:64;357:10;11397:7;11434:10;11406:25;357:10;11397:7;11406:9;:25::i;:::-;:38;;;;:::i;:::-;11381:8;:64::i;17004:538::-;763:13;:11;:13::i;:::-;17062:11:::1;::::0;::::1;::::0;::::1;;;17061:12;17053:47;;;::::0;-1:-1:-1;;;17053:47:0;;4931:2:1;17053:47:0::1;::::0;::::1;4913:21:1::0;4970:2;4950:18;;;4943:30;5009:25;4989:18;;;4982:53;5052:18;;17053:47:0::1;;;;;;;;;17111:70;17128:4;17143:16;17162:18;;17111:8;:70::i;:::-;17192:16;-1:-1:-1::0;;;;;17192:32:0::1;;17232:21;17277:4;17297:24;17315:4;17297:9;:24::i;:::-;17192:259;::::0;-1:-1:-1;;;;;;17192:259:0::1;::::0;;;;;;-1:-1:-1;;;;;5440:15:1;;;17192:259:0::1;::::0;::::1;5422:34:1::0;5472:18;;;5465:34;17336:1:0::1;5515:18:1::0;;;5508:34;;;5558:18;;;5551:34;17368:42:0::1;5601:19:1::0;;;5594:44;17425:15:0::1;5654:19:1::0;;;5647:35;5356:19;;17192:259:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17469:13:0::1;::::0;17462:72:::1;::::0;-1:-1:-1;;;17462:72:0;;-1:-1:-1;;;;;17500:16:0::1;6196:32:1::0;;17462:72:0::1;::::0;::::1;6178:51:1::0;-1:-1:-1;;6245:18:1;;;6238:34;17469:13:0;;::::1;::::0;-1:-1:-1;17462:29:0::1;::::0;6151:18:1;;17462:72:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17004:538::o:0;17550:85::-;17600:27;357:10;17620:6;17600:5;:27::i;21469:134::-;763:13;:11;:13::i;:::-;21550:7:::1;:18:::0;21579:6:::1;:16:::0;21469:134::o;10264:127::-;-1:-1:-1;;;;;10365:18:0;10338:7;10365:18;;;;;;;;;;;;10264:127::o;1039:103::-;763:13;:11;:13::i;:::-;1104:30:::1;1131:1;1104:18;:30::i;:::-;1039:103::o:0;22102:267::-;22188:9;;-1:-1:-1;;;;;22188:9:0;357:10;-1:-1:-1;;;;;22172:25:0;;22164:34;;;;;;22209:23;22235:24;22253:4;22235:9;:24::i;:::-;22209:50;-1:-1:-1;22270:18:0;22319:3;22291:25;22309:7;22209:50;22291:25;:::i;:::-;:31;;;;:::i;:::-;22270:52;;22333:28;22350:10;22333:16;:28::i;:::-;22153:216;;22102:267;:::o;21611:144::-;763:13;:11;:13::i;:::-;21688:18:::1;::::0;21665:20:::1;:41:::0;;;21717:9:::1;:30:::0;21611:144::o;17761:::-;763:13;:11;:13::i;:::-;-1:-1:-1;;;;;17851:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;17851:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17761:144::o;21895:199::-;21970:9;;-1:-1:-1;;;;;21970:9:0;357:10;-1:-1:-1;;;;;21954:25:0;;21946:34;;;;;;21991:14;22008:24;22026:4;22008:9;:24::i;:::-;22068:9;;21991:41;;-1:-1:-1;22043:43:0;;22061:4;;-1:-1:-1;;;;;22068:9:0;21991:41;22043:9;:43::i;9936:104::-;9992:13;10025:7;10018:14;;;;;:::i;18103:257::-;763:13;:11;:13::i;:::-;18225::::1;::::0;-1:-1:-1;;;;;18225:13:0;;::::1;18217:21:::0;;::::1;::::0;18209:91:::1;;;::::0;-1:-1:-1;;;18209:91:0;;7130:2:1;18209:91:0::1;::::0;::::1;7112:21:1::0;7169:2;7149:18;;;7142:30;7208:34;7188:18;;;7181:62;7279:27;7259:18;;;7252:55;7324:19;;18209:91:0::1;6928:421:1::0;18209:91:0::1;18311:41;18340:4;18346:5;18311:28;:41::i;:::-;18103:257:::0;;:::o;22377:225::-;22452:1;22428:21;:25;22420:67;;;;-1:-1:-1;;;22420:67:0;;7556:2:1;22420:67:0;;;7538:21:1;7595:2;7575:18;;;7568:30;7634:31;7614:18;;;7607:59;7683:18;;22420:67:0;7354:353:1;22420:67:0;22522:9;;-1:-1:-1;;;;;22522:9:0;357:10;-1:-1:-1;;;;;22506:25:0;;22498:34;;;;;;22543:51;;22551:10;;22572:21;22543:51;;;;;;;;;22572:21;22551:10;22543:51;;;;;;;;;;;;;;;;;;;11483:436;11576:4;357:10;11576:4;11659:25;357:10;11676:7;11659:9;:25::i;:::-;11632:52;;11723:15;11703:16;:35;;11695:85;;;;-1:-1:-1;;;11695:85:0;;7914:2:1;11695:85:0;;;7896:21:1;7953:2;7933:18;;;7926:30;7992:34;7972:18;;;7965:62;-1:-1:-1;;;8043:18:1;;;8036:35;8088:19;;11695:85:0;7712:401:1;11695:85:0;11816:60;11825:5;11832:7;11860:15;11841:16;:34;11816:8;:60::i;10399:193::-;10478:4;357:10;10534:28;357:10;10551:2;10555:6;10534:9;:28::i;17913:182::-;763:13;:11;:13::i;:::-;-1:-1:-1;;;;;17998:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17998:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18053:34;;1163:41:1;;;18053:34:0::1;::::0;1136:18:1;18053:34:0::1;;;;;;;17913:182:::0;;:::o;17643:110::-;763:13;:11;:13::i;:::-;17698:11:::1;:18:::0;;-1:-1:-1;;17727:18:0;;;;;17643:110::o;21763:124::-;763:13;:11;:13::i;:::-;21866::::1;14936:1;21866:2;:13;:::i;:::-;21856:23;::::0;:7;:23:::1;:::i;:::-;21835:18;:44:::0;-1:-1:-1;21763:124:0:o;10600:151::-;-1:-1:-1;;;;;10716:18:0;;;10689:7;10716:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10600:151::o;1150:201::-;763:13;:11;:13::i;:::-;-1:-1:-1;;;;;1239:22:0;::::1;1231:73;;;::::0;-1:-1:-1;;;1231:73:0;;9697:2:1;1231:73:0::1;::::0;::::1;9679:21:1::0;9736:2;9716:18;;;9709:30;9775:34;9755:18;;;9748:62;-1:-1:-1;;;9826:18:1;;;9819:36;9872:19;;1231:73:0::1;9495:402:1::0;1231:73:0::1;1315:28;1334:8;1315:18;:28::i;13622:346::-:0;-1:-1:-1;;;;;13724:19:0;;13716:68;;;;-1:-1:-1;;;13716:68:0;;10104:2:1;13716:68:0;;;10086:21:1;10143:2;10123:18;;;10116:30;10182:34;10162:18;;;10155:62;-1:-1:-1;;;10233:18:1;;;10226:34;10277:19;;13716:68:0;9902:400:1;13716:68:0;-1:-1:-1;;;;;13803:21:0;;13795:68;;;;-1:-1:-1;;;13795:68:0;;10509:2:1;13795:68:0;;;10491:21:1;10548:2;10528:18;;;10521:30;10587:34;10567:18;;;10560:62;-1:-1:-1;;;10638:18:1;;;10631:32;10680:19;;13795:68:0;10307:398:1;13795:68:0;-1:-1:-1;;;;;13876:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13928:32;;1361:25:1;;;13928:32:0;;1334:18:1;13928:32:0;;;;;;;13622:346;;;:::o;13976:419::-;14077:24;14104:25;14114:5;14121:7;14104:9;:25::i;:::-;14077:52;;-1:-1:-1;;14144:16:0;:37;14140:248;;14226:6;14206:16;:26;;14198:68;;;;-1:-1:-1;;;14198:68:0;;10912:2:1;14198:68:0;;;10894:21:1;10951:2;10931:18;;;10924:30;10990:31;10970:18;;;10963:59;11039:18;;14198:68:0;10710:353:1;14198:68:0;14310:51;14319:5;14326:7;14354:6;14335:16;:25;14310:8;:51::i;:::-;14066:329;13976:419;;;:::o;18696:2281::-;-1:-1:-1;;;;;18794:18:0;;18786:68;;;;-1:-1:-1;;;18786:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18873:16:0;;18865:64;;;;-1:-1:-1;;;18865:64:0;;;;;;;:::i;:::-;18946:6;18956:1;18946:11;18942:93;;18974:28;18990:4;18996:2;19000:1;18974:15;:28::i;18942:93::-;877:6;;-1:-1:-1;;;;;19051:15:0;;;877:6;;19051:15;;;;:32;;-1:-1:-1;877:6:0;;-1:-1:-1;;;;;19070:13:0;;;877:6;;19070:13;;19051:32;:52;;;;-1:-1:-1;;;;;;19087:16:0;;;;19051:52;:77;;;;-1:-1:-1;;;;;;19107:21:0;;19121:6;19107:21;;19051:77;:90;;;;-1:-1:-1;19133:8:0;;;;19132:9;19051:90;19047:963;;;19163:11;;;;;;;19158:140;;-1:-1:-1;;;;;19203:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;19232:23:0;;;;;;:19;:23;;;;;;;;19203:52;19195:87;;;;-1:-1:-1;;;19195:87:0;;12080:2:1;19195:87:0;;;12062:21:1;12119:2;12099:18;;;12092:30;-1:-1:-1;;;12138:18:1;;;12131:52;12200:18;;19195:87:0;11878:346:1;19195:87:0;-1:-1:-1;;;;;19318:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;19354:35:0;;;;;;:31;:35;;;;;;;;19353:36;19318:71;19314:685;;;19428:20;;19418:6;:30;;19410:96;;;;-1:-1:-1;;;19410:96:0;;12431:2:1;19410:96:0;;;12413:21:1;12470:2;12450:18;;;12443:30;12509:34;12489:18;;;12482:62;-1:-1:-1;;;12560:18:1;;;12553:51;12621:19;;19410:96:0;12229:417:1;19410:96:0;19559:9;;19542:13;19552:2;19542:9;:13::i;:::-;19533:22;;:6;:22;:::i;:::-;:35;;19525:67;;;;-1:-1:-1;;;19525:67:0;;12853:2:1;19525:67:0;;;12835:21:1;12892:2;12872:18;;;12865:30;-1:-1:-1;;;12911:18:1;;;12904:49;12970:18;;19525:67:0;12651:343:1;19525:67:0;19314:685;;;-1:-1:-1;;;;;19631:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;19665:37:0;;;;;;:31;:37;;;;;;;;19664:38;19631:71;19627:372;;;19741:20;;19731:6;:30;;19723:97;;;;-1:-1:-1;;;19723:97:0;;13201:2:1;19723:97:0;;;13183:21:1;13240:2;13220:18;;;13213:30;13279:34;13259:18;;;13252:62;-1:-1:-1;;;13330:18:1;;;13323:52;13392:19;;19723:97:0;12999:418:1;19627:372:0;-1:-1:-1;;;;;19860:35:0;;;;;;:31;:35;;;;;;;;19855:144;;19950:9;;19933:13;19943:2;19933:9;:13::i;:::-;19924:22;;:6;:22;:::i;:::-;:35;;19916:67;;;;-1:-1:-1;;;19916:67:0;;12853:2:1;19916:67:0;;;12835:21:1;12892:2;12872:18;;;12865:30;-1:-1:-1;;;12911:18:1;;;12904:49;12970:18;;19916:67:0;12651:343:1;19916:67:0;20022:28;20053:24;20071:4;20053:9;:24::i;:::-;20128:18;;20022:55;;-1:-1:-1;20105:41:0;;;20161:22;;;;-1:-1:-1;20172:11:0;;;;20161:22;:35;;;;-1:-1:-1;20188:8:0;;;;20187:9;20161:35;:71;;;;-1:-1:-1;;;;;;20201:31:0;;;;;;:25;:31;;;;;;;;20200:32;20161:71;:101;;;;-1:-1:-1;;;;;;20237:25:0;;;;;;:19;:25;;;;;;;;20236:26;20161:101;:129;;;;-1:-1:-1;;;;;;20267:23:0;;;;;;:19;:23;;;;;;;;20266:24;20161:129;20157:233;;;20307:8;:15;;-1:-1:-1;;20307:15:0;20318:4;20307:15;;;20337:10;:8;:10::i;:::-;20362:8;:16;;-1:-1:-1;;20362:16:0;;;20157:233;20418:8;;20402:12;;20418:8;;20417:9;:39;;;;-1:-1:-1;;;;;;20431:25:0;;;;;;:19;:25;;;;;;;;20430:26;20417:39;:67;;;;-1:-1:-1;;;;;;20461:23:0;;;;;;:19;:23;;;;;;;;20460:24;20417:67;20402:82;;20497:12;20528:7;20524:402;;;-1:-1:-1;;;;;20556:29:0;;;;;;:25;:29;;;;;;;;20552:229;;;20613:28;20637:3;20613:19;20624:7;;20613:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;20606:35;;20552:229;;;-1:-1:-1;;;;;20679:31:0;;;;;;:25;:31;;;;;;;;20676:105;;;20738:27;20761:3;20738:18;20749:6;;20738;:10;;:18;;;;:::i;:27::-;20731:34;;20676:105;20799:8;;20795:91;;20828:42;20844:4;20858;20865;20828:15;:42::i;:::-;20900:14;20910:4;20900:14;;:::i;:::-;;;20524:402;20936:33;20952:4;20958:2;20962:6;20936:15;:33::i;:::-;18775:2202;;;;18696:2281;;;:::o;899:132::-;877:6;;-1:-1:-1;;;;;877:6:0;357:10;963:23;955:68;;;;-1:-1:-1;;;955:68:0;;13757:2:1;955:68:0;;;13739:21:1;;;13776:18;;;13769:30;13835:34;13815:18;;;13808:62;13887:18;;955:68:0;13555:356:1;13019:595:0;-1:-1:-1;;;;;13103:21:0;;13095:67;;;;-1:-1:-1;;;13095:67:0;;14118:2:1;13095:67:0;;;14100:21:1;14157:2;14137:18;;;14130:30;14196:34;14176:18;;;14169:62;-1:-1:-1;;;14247:18:1;;;14240:31;14288:19;;13095:67:0;13916:397:1;13095:67:0;-1:-1:-1;;;;;13262:18:0;;13237:22;13262:18;;;;;;;;;;;13299:24;;;;13291:71;;;;-1:-1:-1;;;13291:71:0;;14520:2:1;13291:71:0;;;14502:21:1;14559:2;14539:18;;;14532:30;14598:34;14578:18;;;14571:62;-1:-1:-1;;;14649:18:1;;;14642:32;14691:19;;13291:71:0;14318:398:1;13291:71:0;-1:-1:-1;;;;;13398:18:0;;:9;:18;;;;;;;;;;;13419:23;;;13398:44;;13457:12;:22;;;;;;;13508:37;1361:25:1;;;13398:9:0;;:18;13508:37;;1334:18:1;13508:37:0;;;;;;;22153:216;;22102:267;:::o;1359:191::-;1452:6;;;-1:-1:-1;;;;;1469:17:0;;;-1:-1:-1;;;;;;1469:17:0;;;;;;;1502:40;;1452:6;;;1469:17;1452:6;;1502:40;;1433:16;;1502:40;1422:128;1359:191;:::o;20985:476::-;21075:16;;;21089:1;21075:16;;;;;;;;21051:21;;21075:16;;;;;;;;;;-1:-1:-1;21075:16:0;21051:40;;21120:4;21102;21107:1;21102:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21102:23:0;;;-1:-1:-1;;;;;21102:23:0;;;;;21146:16;-1:-1:-1;;;;;21146:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21136:4;21141:1;21136:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;21136:33:0;;;-1:-1:-1;;;;;21136:33:0;;;;;21180:63;21197:4;21212:16;21231:11;21180:8;:63::i;:::-;21397:15;;21254:199;;-1:-1:-1;;;21254:199:0;;-1:-1:-1;;;;;21254:16:0;:67;;;;;:199;;21336:11;;21362:1;;21378:4;;21397:15;;;;;21427;;21254:199;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21040:421;20985:476;:::o;18368:186::-;-1:-1:-1;;;;;18451:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;18451:39:0;;;;;;;;;;18506:40;;18451:39;;:31;18506:40;;;18368:186;;:::o;11927:641::-;-1:-1:-1;;;;;12024:18:0;;12016:68;;;;-1:-1:-1;;;12016:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12103:16:0;;12095:64;;;;-1:-1:-1;;;12095:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12245:15:0;;12223:19;12245:15;;;;;;;;;;;12279:21;;;;12271:72;;;;-1:-1:-1;;;12271:72:0;;16428:2:1;12271:72:0;;;16410:21:1;16467:2;16447:18;;;16440:30;16506:34;16486:18;;;16479:62;-1:-1:-1;;;16557:18:1;;;16550:36;16603:19;;12271:72:0;16226:402:1;12271:72:0;-1:-1:-1;;;;;12379:15:0;;;:9;:15;;;;;;;;;;;12397:20;;;12379:38;;12432:13;;;;;;;;;;:23;;;;;;12484:26;;1361:25:1;;;12432:13:0;;12484:26;;1334:18:1;12484:26:0;;;;;;;12523:37;22102:267;22610:369;22649:23;22675:24;22693:4;22675:9;:24::i;:::-;22649:50;;22714:15;22733:1;22714:20;22710:59;;22751:7;22610:369::o;22710:59::-;22849:18;;22802:15;;22834:33;;22830:99;;;-1:-1:-1;22899:18:0;;22830:99;22941:30;22958:12;22941:16;:30::i;8285:98::-;8343:7;8370:5;8374:1;8370;:5;:::i;:::-;8363:12;8285:98;-1:-1:-1;;;8285:98:0:o;8391:::-;8449:7;8476:5;8480:1;8476;:5;:::i;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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:180::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;-1:-1:-1;2198:23:1;;2047:180;-1:-1:-1;2047:180:1:o;2440:247::-;2499:6;2552:2;2540:9;2531:7;2527:23;2523:32;2520:52;;;2568:1;2565;2558:12;2520:52;2607:9;2594:23;2626:31;2651:5;2626:31;:::i;2692:248::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;-1:-1:-1;;2860:23:1;;;2930:2;2915:18;;;2902:32;;-1:-1:-1;2692:248:1:o;3179:118::-;3265:5;3258:13;3251:21;3244:5;3241:32;3231:60;;3287:1;3284;3277:12;3302:382;3367:6;3375;3428:2;3416:9;3407:7;3403:23;3399:32;3396:52;;;3444:1;3441;3434:12;3396:52;3483:9;3470:23;3502:31;3527:5;3502:31;:::i;:::-;3552:5;-1:-1:-1;3609:2:1;3594:18;;3581:32;3622:30;3581:32;3622:30;:::i;:::-;3671:7;3661:17;;;3302:382;;;;;:::o;3689:388::-;3757:6;3765;3818:2;3806:9;3797:7;3793:23;3789:32;3786:52;;;3834:1;3831;3824:12;3786:52;3873:9;3860:23;3892:31;3917:5;3892:31;:::i;:::-;3942:5;-1:-1:-1;3999:2:1;3984:18;;3971:32;4012:33;3971:32;4012:33;:::i;4082:380::-;4161:1;4157:12;;;;4204;;;4225:61;;4279:4;4271:6;4267:17;4257:27;;4225:61;4332:2;4324:6;4321:14;4301:18;4298:38;4295:161;;4378:10;4373:3;4369:20;4366:1;4359:31;4413:4;4410:1;4403:15;4441:4;4438:1;4431:15;4295:161;;4082:380;;;:::o;4467:127::-;4528:10;4523:3;4519:20;4516:1;4509:31;4559:4;4556:1;4549:15;4583:4;4580:1;4573:15;4599:125;4664:9;;;4685:10;;;4682:36;;;4698:18;;:::i;5693:306::-;5781:6;5789;5797;5850:2;5838:9;5829:7;5825:23;5821:32;5818:52;;;5866:1;5863;5856:12;5818:52;5895:9;5889:16;5879:26;;5945:2;5934:9;5930:18;5924:25;5914:35;;5989:2;5978:9;5974:18;5968:25;5958:35;;5693:306;;;;;:::o;6283:245::-;6350:6;6403:2;6391:9;6382:7;6378:23;6374:32;6371:52;;;6419:1;6416;6409:12;6371:52;6451:9;6445:16;6470:28;6492:5;6470:28;:::i;6533:168::-;6606:9;;;6637;;6654:15;;;6648:22;;6634:37;6624:71;;6675:18;;:::i;6706:217::-;6746:1;6772;6762:132;;6816:10;6811:3;6807:20;6804:1;6797:31;6851:4;6848:1;6841:15;6879:4;6876:1;6869:15;6762:132;-1:-1:-1;6908:9:1;;6706:217::o;8118:416::-;8207:1;8244:5;8207:1;8258:270;8279:7;8269:8;8266:21;8258:270;;;8338:4;8334:1;8330:6;8326:17;8320:4;8317:27;8314:53;;;8347:18;;:::i;:::-;8397:7;8387:8;8383:22;8380:55;;;8417:16;;;;8380:55;8496:22;;;;8456:15;;;;8258:270;;;8262:3;8118:416;;;;;:::o;8539:806::-;8588:5;8618:8;8608:80;;-1:-1:-1;8659:1:1;8673:5;;8608:80;8707:4;8697:76;;-1:-1:-1;8744:1:1;8758:5;;8697:76;8789:4;8807:1;8802:59;;;;8875:1;8870:130;;;;8782:218;;8802:59;8832:1;8823:10;;8846:5;;;8870:130;8907:3;8897:8;8894:17;8891:43;;;8914:18;;:::i;:::-;-1:-1:-1;;8970:1:1;8956:16;;8985:5;;8782:218;;9084:2;9074:8;9071:16;9065:3;9059:4;9056:13;9052:36;9046:2;9036:8;9033:16;9028:2;9022:4;9019:12;9015:35;9012:77;9009:159;;;-1:-1:-1;9121:19:1;;;9153:5;;9009:159;9200:34;9225:8;9219:4;9200:34;:::i;:::-;9270:6;9266:1;9262:6;9258:19;9249:7;9246:32;9243:58;;;9281:18;;:::i;:::-;9319:20;;8539:806;-1:-1:-1;;;8539:806:1:o;9350:140::-;9408:5;9437:47;9478:4;9468:8;9464:19;9458:4;9437:47;:::i;11068:401::-;11270:2;11252:21;;;11309:2;11289:18;;;11282:30;11348:34;11343:2;11328:18;;11321:62;-1:-1:-1;;;11414:2:1;11399:18;;11392:35;11459:3;11444:19;;11068:401::o;11474:399::-;11676:2;11658:21;;;11715:2;11695:18;;;11688:30;11754:34;11749:2;11734:18;;11727:62;-1:-1:-1;;;11820:2:1;11805:18;;11798:33;11863:3;11848:19;;11474:399::o;13422:128::-;13489:9;;;13510:11;;;13507:37;;;13524:18;;:::i;14853:127::-;14914:10;14909:3;14905:20;14902:1;14895:31;14945:4;14942:1;14935:15;14969:4;14966:1;14959:15;14985:251;15055:6;15108:2;15096:9;15087:7;15083:23;15079:32;15076:52;;;15124:1;15121;15114:12;15076:52;15156:9;15150:16;15175:31;15200:5;15175:31;:::i;15241:980::-;15503:4;15551:3;15540:9;15536:19;15582:6;15571:9;15564:25;15608:2;15646:6;15641:2;15630:9;15626:18;15619:34;15689:3;15684:2;15673:9;15669:18;15662:31;15713:6;15748;15742:13;15779:6;15771;15764:22;15817:3;15806:9;15802:19;15795:26;;15856:2;15848:6;15844:15;15830:29;;15877:1;15887:195;15901:6;15898:1;15895:13;15887:195;;;15966:13;;-1:-1:-1;;;;;15962:39:1;15950:52;;16057:15;;;;16022:12;;;;15998:1;15916:9;15887:195;;;-1:-1:-1;;;;;;;16138:32:1;;;;16133:2;16118:18;;16111:60;-1:-1:-1;;;16202:3:1;16187:19;16180:35;16099:3;15241:980;-1:-1:-1;;;15241:980:1:o
Swarm Source
ipfs://384d0d3c6d936c5d58e2a433e9a946817ad3e97933d895d6fd0ac795f24b2e36
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.