ERC-20
Overview
Max Total Supply
100,000,000 SPEPE
Holders
30
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000009007928 SPEPEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SPEPE
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-27 */ /** Saint Pepe $SPEPE Telegram: https://t.me/SaintPepeETH Website: https://saintpepe.world/ Twitter: https://twitter.com/SaintPepeETH */ // SPDX-License-Identifier: MIT pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0; 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()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { 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 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); 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"); _beforeTokenTransfer(sender, recipient, amount); 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); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: 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 _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } 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 div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface 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 Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract SPEPE is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; address private developmentWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = true; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevelopmentFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevelopmentFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Saint Pepe", "SPEPE") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 15; uint256 _buyLiquidityFee = 0; uint256 _buyDevelopmentFee = 0; uint256 _sellMarketingFee = 30; uint256 _sellLiquidityFee = 0; uint256 _sellDevelopmentFee = 0; uint256 totalSupply = 100_000_000 * 1e18; maxTransactionAmount = 2_000_000 * 1e18; maxWallet = 2_000_000 * 1e18; swapTokensAtAmount = (totalSupply * 5) / 1000; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevelopmentFee = _buyDevelopmentFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevelopmentFee = _sellDevelopmentFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee; marketingWallet = address(0x401Ffa00Df7c65b95496e0988048505eCc7143Df); developmentWallet = address(0x401Ffa00Df7c65b95496e0988048505eCc7143Df); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrade() external onlyOwner { tradingActive = true; swapEnabled = true; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevelopmentFee = _developmentFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee; } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevelopmentFee = _developmentFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee; } 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 updateMarketingWalletInfo(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDev += (fees * sellDevelopmentFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDev += (fees * buyDevelopmentFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 4) { contractBalance = swapTokensAtAmount * 4; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(developmentWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","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":[],"name":"ManualNukeLP","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b805462ffffff191662010001179055600d805460ff191660011790553480156200002f57600080fd5b50604080518082018252600a8152695361696e74205065706560b01b602080830191825283518085019094526005845264535045504560d81b9084015281519192916200007f916003916200066f565b508051620000959060049060208401906200066f565b505050620000b2620000ac620003bc60201b60201c565b620003c0565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000d481600162000412565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200011f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000145919062000715565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000193573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b9919062000715565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000207573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022d919062000715565b6001600160a01b031660a08190526200024890600162000412565b60a051620002589060016200048c565b6a01a784379d99db420000006008819055600a55600f600080601e81806a52b7d2dcc80cd2e40000006103e8620002918260056200075d565b6200029d91906200077f565b600955600f8790556010869055601185905584620002bc8789620007a2565b620002c89190620007a2565b600e5560138490556014839055601582905581620002e78486620007a2565b620002f39190620007a2565b6012556006805473401ffa00df7c65b95496e0988048505ecc7143df6001600160a01b031991821681179092556007805490911690911790556200034b620003436005546001600160a01b031690565b6001620004e0565b62000358306001620004e0565b6200036761dead6001620004e0565b620003866200037e6005546001600160a01b031690565b600162000412565b6200039330600162000412565b620003a261dead600162000412565b620003ae33826200058a565b5050505050505050620007fa565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004615760405162461bcd60e51b815260206004820181905260248201526000805160206200307d83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200052b5760405162461bcd60e51b815260206004820181905260248201526000805160206200307d833981519152604482015260640162000458565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005e25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000458565b8060026000828254620005f69190620007a2565b90915550506001600160a01b0382166000908152602081905260408120805483929062000625908490620007a2565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200067d90620007bd565b90600052602060002090601f016020900481019282620006a15760008555620006ec565b82601f10620006bc57805160ff1916838001178555620006ec565b82800160010185558215620006ec579182015b82811115620006ec578251825591602001919060010190620006cf565b50620006fa929150620006fe565b5090565b5b80821115620006fa5760008155600101620006ff565b6000602082840312156200072857600080fd5b81516001600160a01b03811681146200074057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200077a576200077a62000747565b500290565b6000826200079d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620007b857620007b862000747565b500190565b600181811c90821680620007d257607f821691505b60208210811415620007f457634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161282562000858600039600081816104e601528181610e1b015261164e0152600081816103a701528181611610015281816121830152818161223c01528181612278015281816122f2015261234f01526128256000f3fe6080604052600436106102e75760003560e01c80638095d56411610190578063c17b5b8c116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d3146108e2578063f2fde38b146108f8578063f637434214610918578063f8b45b051461092e57600080fd5b8063dd62ed3e14610871578063e2f45605146108b7578063e884f260146108cd57600080fd5b8063c17b5b8c146107cb578063c18bc195146107eb578063c876d0b91461080b578063c8c8ebe414610825578063d257b34f1461083b578063d85ba0631461085b57600080fd5b80639fccce3211610149578063b204141111610123578063b204141114610746578063b62496f51461075c578063bbc0c7421461078c578063c0246668146107ab57600080fd5b80639fccce32146106f0578063a457c2d714610706578063a9059cbb1461072657600080fd5b80638095d564146106475780638da5cb5b146106675780639213691314610685578063924de9b71461069b57806395d89b41146106bb5780639a7a23d6146106d057600080fd5b8063313ce5671161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146105dc5780637571336a146105f15780637bce5a04146106115780637d831a8b1461062757600080fd5b80636ddd17131461057157806370a0823114610591578063715018a6146105c757600080fd5b8063313ce5671461049857806339509351146104b457806349bd5a5e146104d45780634a62bb65146105085780634fbee193146105225780636a486a8e1461055b57600080fd5b806318a94cf1116102a157806318a94cf1146104005780631a8145bb146104165780631f3fed8f1461042c578063203e727e1461044257806323b872dd1461046257806327c8f8351461048257600080fd5b806299d386146102f357806306fdde031461030a578063095ea7b31461033557806310d5de53146103655780631694505e1461039557806318160ddd146103e157600080fd5b366102ee57005b600080fd5b3480156102ff57600080fd5b50610308610944565b005b34801561031657600080fd5b5061031f61098a565b60405161032c91906123cd565b60405180910390f35b34801561034157600080fd5b50610355610350366004612437565b610a1c565b604051901515815260200161032c565b34801561037157600080fd5b50610355610380366004612463565b601a6020526000908152604090205460ff1681565b3480156103a157600080fd5b506103c97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161032c565b3480156103ed57600080fd5b506002545b60405190815260200161032c565b34801561040c57600080fd5b506103f260155481565b34801561042257600080fd5b506103f260175481565b34801561043857600080fd5b506103f260165481565b34801561044e57600080fd5b5061030861045d366004612480565b610a32565b34801561046e57600080fd5b5061035561047d366004612499565b610b0f565b34801561048e57600080fd5b506103c961dead81565b3480156104a457600080fd5b506040516012815260200161032c565b3480156104c057600080fd5b506103556104cf366004612437565b610bb9565b3480156104e057600080fd5b506103c97f000000000000000000000000000000000000000000000000000000000000000081565b34801561051457600080fd5b50600b546103559060ff1681565b34801561052e57600080fd5b5061035561053d366004612463565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561056757600080fd5b506103f260125481565b34801561057d57600080fd5b50600b546103559062010000900460ff1681565b34801561059d57600080fd5b506103f26105ac366004612463565b6001600160a01b031660009081526020819052604090205490565b3480156105d357600080fd5b50610308610bf5565b3480156105e857600080fd5b50610355610c2b565b3480156105fd57600080fd5b5061030861060c3660046124ea565b610c68565b34801561061d57600080fd5b506103f2600f5481565b34801561063357600080fd5b50610308610642366004612463565b610cbd565b34801561065357600080fd5b5061030861066236600461251f565b610d44565b34801561067357600080fd5b506005546001600160a01b03166103c9565b34801561069157600080fd5b506103f260135481565b3480156106a757600080fd5b506103086106b636600461254b565b610d9a565b3480156106c757600080fd5b5061031f610de0565b3480156106dc57600080fd5b506103086106eb3660046124ea565b610def565b3480156106fc57600080fd5b506103f260185481565b34801561071257600080fd5b50610355610721366004612437565b610ecf565b34801561073257600080fd5b50610355610741366004612437565b610f68565b34801561075257600080fd5b506103f260115481565b34801561076857600080fd5b50610355610777366004612463565b601b6020526000908152604090205460ff1681565b34801561079857600080fd5b50600b5461035590610100900460ff1681565b3480156107b757600080fd5b506103086107c63660046124ea565b610f75565b3480156107d757600080fd5b506103086107e636600461251f565b610ffe565b3480156107f757600080fd5b50610308610806366004612480565b611054565b34801561081757600080fd5b50600d546103559060ff1681565b34801561083157600080fd5b506103f260085481565b34801561084757600080fd5b50610355610856366004612480565b611125565b34801561086757600080fd5b506103f2600e5481565b34801561087d57600080fd5b506103f261088c366004612566565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108c357600080fd5b506103f260095481565b3480156108d957600080fd5b5061035561127c565b3480156108ee57600080fd5b506103f260105481565b34801561090457600080fd5b50610308610913366004612463565b6112b9565b34801561092457600080fd5b506103f260145481565b34801561093a57600080fd5b506103f2600a5481565b6005546001600160a01b031633146109775760405162461bcd60e51b815260040161096e9061259f565b60405180910390fd5b600b805462ffff00191662010100179055565b606060038054610999906125d4565b80601f01602080910402602001604051908101604052809291908181526020018280546109c5906125d4565b8015610a125780601f106109e757610100808354040283529160200191610a12565b820191906000526020600020905b8154815290600101906020018083116109f557829003601f168201915b5050505050905090565b6000610a29338484611354565b50600192915050565b6005546001600160a01b03163314610a5c5760405162461bcd60e51b815260040161096e9061259f565b670de0b6b3a76400006103e8610a7160025490565b610a7c906001612625565b610a869190612644565b610a909190612644565b811015610af75760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161096e565b610b0981670de0b6b3a7640000612625565b60085550565b6000610b1c848484611478565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ba15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161096e565b610bae8533858403611354565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a29918590610bf0908690612666565b611354565b6005546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161096e9061259f565b610c296000611ccc565b565b6005546000906001600160a01b03163314610c585760405162461bcd60e51b815260040161096e9061259f565b50600b805460ff19169055600190565b6005546001600160a01b03163314610c925760405162461bcd60e51b815260040161096e9061259f565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ce75760405162461bcd60e51b815260040161096e9061259f565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d6e5760405162461bcd60e51b815260040161096e9061259f565b600f8390556010829055601181905580610d888385612666565b610d929190612666565b600e55505050565b6005546001600160a01b03163314610dc45760405162461bcd60e51b815260040161096e9061259f565b600b8054911515620100000262ff000019909216919091179055565b606060048054610999906125d4565b6005546001600160a01b03163314610e195760405162461bcd60e51b815260040161096e9061259f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610ec15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161096e565b610ecb8282611d1e565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f515760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161096e565b610f5e3385858403611354565b5060019392505050565b6000610a29338484611478565b6005546001600160a01b03163314610f9f5760405162461bcd60e51b815260040161096e9061259f565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110285760405162461bcd60e51b815260040161096e9061259f565b601383905560148290556015819055806110428385612666565b61104c9190612666565b601255505050565b6005546001600160a01b0316331461107e5760405162461bcd60e51b815260040161096e9061259f565b670de0b6b3a76400006103e861109360025490565b61109e906005612625565b6110a89190612644565b6110b29190612644565b81101561110d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161096e565b61111f81670de0b6b3a7640000612625565b600a5550565b6005546000906001600160a01b031633146111525760405162461bcd60e51b815260040161096e9061259f565b620186a061115f60025490565b61116a906001612625565b6111749190612644565b8210156111e15760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161096e565b6103e86111ed60025490565b6111f8906005612625565b6112029190612644565b82111561126e5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161096e565b50600981905560015b919050565b6005546000906001600160a01b031633146112a95760405162461bcd60e51b815260040161096e9061259f565b50600d805460ff19169055600190565b6005546001600160a01b031633146112e35760405162461bcd60e51b815260040161096e9061259f565b6001600160a01b0381166113485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161096e565b61135181611ccc565b50565b6001600160a01b0383166113b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161096e565b6001600160a01b0382166114175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161096e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661149e5760405162461bcd60e51b815260040161096e9061267e565b6001600160a01b0382166114c45760405162461bcd60e51b815260040161096e906126c3565b806114da576114d583836000611d72565b505050565b600b5460ff1615611997576005546001600160a01b0384811691161480159061151157506005546001600160a01b03838116911614155b801561152557506001600160a01b03821615155b801561153c57506001600160a01b03821661dead14155b80156115525750600554600160a01b900460ff16155b1561199757600b54610100900460ff166115ea576001600160a01b03831660009081526019602052604090205460ff16806115a557506001600160a01b03821660009081526019602052604090205460ff165b6115ea5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161096e565b600d5460ff1615611731576005546001600160a01b0383811691161480159061164557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561168357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561173157326000908152600c6020526040902054431161171e5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a40161096e565b326000908152600c602052604090204390555b6001600160a01b0383166000908152601b602052604090205460ff16801561177257506001600160a01b0382166000908152601a602052604090205460ff16155b15611856576008548111156117e75760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161096e565b600a546001600160a01b03831660009081526020819052604090205461180d9083612666565b11156118515760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161096e565b611997565b6001600160a01b0382166000908152601b602052604090205460ff16801561189757506001600160a01b0383166000908152601a602052604090205460ff16155b1561190d576008548111156118515760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161096e565b6001600160a01b0382166000908152601a602052604090205460ff1661199757600a546001600160a01b0383166000908152602081905260409020546119539083612666565b11156119975760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161096e565b30600090815260208190526040902054600954811080159081906119c35750600b5462010000900460ff165b80156119d95750600554600160a01b900460ff16155b80156119fe57506001600160a01b0385166000908152601b602052604090205460ff16155b8015611a2357506001600160a01b03851660009081526019602052604090205460ff16155b8015611a4857506001600160a01b03841660009081526019602052604090205460ff16155b15611a76576005805460ff60a01b1916600160a01b179055611a68611ec7565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526019602052604090205460ff600160a01b909204821615911680611ac457506001600160a01b03851660009081526019602052604090205460ff165b15611acd575060005b60008115611cb8576001600160a01b0386166000908152601b602052604090205460ff168015611aff57506000601254115b15611bbd57611b246064611b1e6012548861210190919063ffffffff16565b90612114565b905060125460145482611b379190612625565b611b419190612644565b60176000828254611b529190612666565b9091555050601254601554611b679083612625565b611b719190612644565b60186000828254611b829190612666565b9091555050601254601354611b979083612625565b611ba19190612644565b60166000828254611bb29190612666565b90915550611c9a9050565b6001600160a01b0387166000908152601b602052604090205460ff168015611be757506000600e54115b15611c9a57611c066064611b1e600e548861210190919063ffffffff16565b9050600e5460105482611c199190612625565b611c239190612644565b60176000828254611c349190612666565b9091555050600e54601154611c499083612625565b611c539190612644565b60186000828254611c649190612666565b9091555050600e54600f54611c799083612625565b611c839190612644565b60166000828254611c949190612666565b90915550505b8015611cab57611cab873083611d72565b611cb58186612706565b94505b611cc3878787611d72565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d985760405162461bcd60e51b815260040161096e9061267e565b6001600160a01b038216611dbe5760405162461bcd60e51b815260040161096e906126c3565b6001600160a01b03831660009081526020819052604090205481811015611e365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161096e565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e6d908490612666565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb991815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601854601654601754611eee9190612666565b611ef89190612666565b90506000821580611f07575081155b15611f1157505050565b600954611f1f906004612625565b831115611f3757600954611f34906004612625565b92505b600060028360175486611f4a9190612625565b611f549190612644565b611f5e9190612644565b90506000611f6c8583612120565b905047611f788261212c565b6000611f844783612120565b90506000611fa187611b1e6016548561210190919063ffffffff16565b90506000611fbe88611b1e6018548661210190919063ffffffff16565b9050600081611fcd8486612706565b611fd79190612706565b60006017819055601681905560188190556007546040519293506001600160a01b031691849181818185875af1925050503d8060008114612034576040519150601f19603f3d011682016040523d82523d6000602084013e612039565b606091505b5090985050861580159061204d5750600081115b156120a05761205c87826122ec565b601754604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d80600081146120ed576040519150601f19603f3d011682016040523d82523d6000602084013e6120f2565b606091505b50505050505050505050505050565b600061210d8284612625565b9392505050565b600061210d8284612644565b600061210d8284612706565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121615761216161271d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122039190612733565b816001815181106122165761221661271d565b60200260200101906001600160a01b031690816001600160a01b031681525050612261307f000000000000000000000000000000000000000000000000000000000000000084611354565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906122b6908590600090869030904290600401612750565b600060405180830381600087803b1580156122d057600080fd5b505af11580156122e4573d6000803e3d6000fd5b505050505050565b612317307f000000000000000000000000000000000000000000000000000000000000000084611354565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156123a1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123c691906127c1565b5050505050565b600060208083528351808285015260005b818110156123fa578581018301518582016040015282016123de565b8181111561240c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461135157600080fd5b6000806040838503121561244a57600080fd5b823561245581612422565b946020939093013593505050565b60006020828403121561247557600080fd5b813561210d81612422565b60006020828403121561249257600080fd5b5035919050565b6000806000606084860312156124ae57600080fd5b83356124b981612422565b925060208401356124c981612422565b929592945050506040919091013590565b8035801515811461127757600080fd5b600080604083850312156124fd57600080fd5b823561250881612422565b9150612516602084016124da565b90509250929050565b60008060006060848603121561253457600080fd5b505081359360208301359350604090920135919050565b60006020828403121561255d57600080fd5b61210d826124da565b6000806040838503121561257957600080fd5b823561258481612422565b9150602083013561259481612422565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806125e857607f821691505b6020821081141561260957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561263f5761263f61260f565b500290565b60008261266157634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156126795761267961260f565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156127185761271861260f565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561274557600080fd5b815161210d81612422565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127a05784516001600160a01b03168352938301939183019160010161277b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127d657600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220074bd5542474ce42043ba5fc93749a5a77f8282df0d9bea1e4349de08807cbae64736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106102e75760003560e01c80638095d56411610190578063c17b5b8c116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d3146108e2578063f2fde38b146108f8578063f637434214610918578063f8b45b051461092e57600080fd5b8063dd62ed3e14610871578063e2f45605146108b7578063e884f260146108cd57600080fd5b8063c17b5b8c146107cb578063c18bc195146107eb578063c876d0b91461080b578063c8c8ebe414610825578063d257b34f1461083b578063d85ba0631461085b57600080fd5b80639fccce3211610149578063b204141111610123578063b204141114610746578063b62496f51461075c578063bbc0c7421461078c578063c0246668146107ab57600080fd5b80639fccce32146106f0578063a457c2d714610706578063a9059cbb1461072657600080fd5b80638095d564146106475780638da5cb5b146106675780639213691314610685578063924de9b71461069b57806395d89b41146106bb5780639a7a23d6146106d057600080fd5b8063313ce5671161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146105dc5780637571336a146105f15780637bce5a04146106115780637d831a8b1461062757600080fd5b80636ddd17131461057157806370a0823114610591578063715018a6146105c757600080fd5b8063313ce5671461049857806339509351146104b457806349bd5a5e146104d45780634a62bb65146105085780634fbee193146105225780636a486a8e1461055b57600080fd5b806318a94cf1116102a157806318a94cf1146104005780631a8145bb146104165780631f3fed8f1461042c578063203e727e1461044257806323b872dd1461046257806327c8f8351461048257600080fd5b806299d386146102f357806306fdde031461030a578063095ea7b31461033557806310d5de53146103655780631694505e1461039557806318160ddd146103e157600080fd5b366102ee57005b600080fd5b3480156102ff57600080fd5b50610308610944565b005b34801561031657600080fd5b5061031f61098a565b60405161032c91906123cd565b60405180910390f35b34801561034157600080fd5b50610355610350366004612437565b610a1c565b604051901515815260200161032c565b34801561037157600080fd5b50610355610380366004612463565b601a6020526000908152604090205460ff1681565b3480156103a157600080fd5b506103c97f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161032c565b3480156103ed57600080fd5b506002545b60405190815260200161032c565b34801561040c57600080fd5b506103f260155481565b34801561042257600080fd5b506103f260175481565b34801561043857600080fd5b506103f260165481565b34801561044e57600080fd5b5061030861045d366004612480565b610a32565b34801561046e57600080fd5b5061035561047d366004612499565b610b0f565b34801561048e57600080fd5b506103c961dead81565b3480156104a457600080fd5b506040516012815260200161032c565b3480156104c057600080fd5b506103556104cf366004612437565b610bb9565b3480156104e057600080fd5b506103c97f0000000000000000000000006ae225cfd5d54ead1601ad2959df26e1a5585a6581565b34801561051457600080fd5b50600b546103559060ff1681565b34801561052e57600080fd5b5061035561053d366004612463565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561056757600080fd5b506103f260125481565b34801561057d57600080fd5b50600b546103559062010000900460ff1681565b34801561059d57600080fd5b506103f26105ac366004612463565b6001600160a01b031660009081526020819052604090205490565b3480156105d357600080fd5b50610308610bf5565b3480156105e857600080fd5b50610355610c2b565b3480156105fd57600080fd5b5061030861060c3660046124ea565b610c68565b34801561061d57600080fd5b506103f2600f5481565b34801561063357600080fd5b50610308610642366004612463565b610cbd565b34801561065357600080fd5b5061030861066236600461251f565b610d44565b34801561067357600080fd5b506005546001600160a01b03166103c9565b34801561069157600080fd5b506103f260135481565b3480156106a757600080fd5b506103086106b636600461254b565b610d9a565b3480156106c757600080fd5b5061031f610de0565b3480156106dc57600080fd5b506103086106eb3660046124ea565b610def565b3480156106fc57600080fd5b506103f260185481565b34801561071257600080fd5b50610355610721366004612437565b610ecf565b34801561073257600080fd5b50610355610741366004612437565b610f68565b34801561075257600080fd5b506103f260115481565b34801561076857600080fd5b50610355610777366004612463565b601b6020526000908152604090205460ff1681565b34801561079857600080fd5b50600b5461035590610100900460ff1681565b3480156107b757600080fd5b506103086107c63660046124ea565b610f75565b3480156107d757600080fd5b506103086107e636600461251f565b610ffe565b3480156107f757600080fd5b50610308610806366004612480565b611054565b34801561081757600080fd5b50600d546103559060ff1681565b34801561083157600080fd5b506103f260085481565b34801561084757600080fd5b50610355610856366004612480565b611125565b34801561086757600080fd5b506103f2600e5481565b34801561087d57600080fd5b506103f261088c366004612566565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108c357600080fd5b506103f260095481565b3480156108d957600080fd5b5061035561127c565b3480156108ee57600080fd5b506103f260105481565b34801561090457600080fd5b50610308610913366004612463565b6112b9565b34801561092457600080fd5b506103f260145481565b34801561093a57600080fd5b506103f2600a5481565b6005546001600160a01b031633146109775760405162461bcd60e51b815260040161096e9061259f565b60405180910390fd5b600b805462ffff00191662010100179055565b606060038054610999906125d4565b80601f01602080910402602001604051908101604052809291908181526020018280546109c5906125d4565b8015610a125780601f106109e757610100808354040283529160200191610a12565b820191906000526020600020905b8154815290600101906020018083116109f557829003601f168201915b5050505050905090565b6000610a29338484611354565b50600192915050565b6005546001600160a01b03163314610a5c5760405162461bcd60e51b815260040161096e9061259f565b670de0b6b3a76400006103e8610a7160025490565b610a7c906001612625565b610a869190612644565b610a909190612644565b811015610af75760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161096e565b610b0981670de0b6b3a7640000612625565b60085550565b6000610b1c848484611478565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ba15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161096e565b610bae8533858403611354565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a29918590610bf0908690612666565b611354565b6005546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161096e9061259f565b610c296000611ccc565b565b6005546000906001600160a01b03163314610c585760405162461bcd60e51b815260040161096e9061259f565b50600b805460ff19169055600190565b6005546001600160a01b03163314610c925760405162461bcd60e51b815260040161096e9061259f565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ce75760405162461bcd60e51b815260040161096e9061259f565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d6e5760405162461bcd60e51b815260040161096e9061259f565b600f8390556010829055601181905580610d888385612666565b610d929190612666565b600e55505050565b6005546001600160a01b03163314610dc45760405162461bcd60e51b815260040161096e9061259f565b600b8054911515620100000262ff000019909216919091179055565b606060048054610999906125d4565b6005546001600160a01b03163314610e195760405162461bcd60e51b815260040161096e9061259f565b7f0000000000000000000000006ae225cfd5d54ead1601ad2959df26e1a5585a656001600160a01b0316826001600160a01b03161415610ec15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161096e565b610ecb8282611d1e565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f515760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161096e565b610f5e3385858403611354565b5060019392505050565b6000610a29338484611478565b6005546001600160a01b03163314610f9f5760405162461bcd60e51b815260040161096e9061259f565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110285760405162461bcd60e51b815260040161096e9061259f565b601383905560148290556015819055806110428385612666565b61104c9190612666565b601255505050565b6005546001600160a01b0316331461107e5760405162461bcd60e51b815260040161096e9061259f565b670de0b6b3a76400006103e861109360025490565b61109e906005612625565b6110a89190612644565b6110b29190612644565b81101561110d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161096e565b61111f81670de0b6b3a7640000612625565b600a5550565b6005546000906001600160a01b031633146111525760405162461bcd60e51b815260040161096e9061259f565b620186a061115f60025490565b61116a906001612625565b6111749190612644565b8210156111e15760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161096e565b6103e86111ed60025490565b6111f8906005612625565b6112029190612644565b82111561126e5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161096e565b50600981905560015b919050565b6005546000906001600160a01b031633146112a95760405162461bcd60e51b815260040161096e9061259f565b50600d805460ff19169055600190565b6005546001600160a01b031633146112e35760405162461bcd60e51b815260040161096e9061259f565b6001600160a01b0381166113485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161096e565b61135181611ccc565b50565b6001600160a01b0383166113b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161096e565b6001600160a01b0382166114175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161096e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661149e5760405162461bcd60e51b815260040161096e9061267e565b6001600160a01b0382166114c45760405162461bcd60e51b815260040161096e906126c3565b806114da576114d583836000611d72565b505050565b600b5460ff1615611997576005546001600160a01b0384811691161480159061151157506005546001600160a01b03838116911614155b801561152557506001600160a01b03821615155b801561153c57506001600160a01b03821661dead14155b80156115525750600554600160a01b900460ff16155b1561199757600b54610100900460ff166115ea576001600160a01b03831660009081526019602052604090205460ff16806115a557506001600160a01b03821660009081526019602052604090205460ff165b6115ea5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161096e565b600d5460ff1615611731576005546001600160a01b0383811691161480159061164557507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561168357507f0000000000000000000000006ae225cfd5d54ead1601ad2959df26e1a5585a656001600160a01b0316826001600160a01b031614155b1561173157326000908152600c6020526040902054431161171e5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a40161096e565b326000908152600c602052604090204390555b6001600160a01b0383166000908152601b602052604090205460ff16801561177257506001600160a01b0382166000908152601a602052604090205460ff16155b15611856576008548111156117e75760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161096e565b600a546001600160a01b03831660009081526020819052604090205461180d9083612666565b11156118515760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161096e565b611997565b6001600160a01b0382166000908152601b602052604090205460ff16801561189757506001600160a01b0383166000908152601a602052604090205460ff16155b1561190d576008548111156118515760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161096e565b6001600160a01b0382166000908152601a602052604090205460ff1661199757600a546001600160a01b0383166000908152602081905260409020546119539083612666565b11156119975760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161096e565b30600090815260208190526040902054600954811080159081906119c35750600b5462010000900460ff165b80156119d95750600554600160a01b900460ff16155b80156119fe57506001600160a01b0385166000908152601b602052604090205460ff16155b8015611a2357506001600160a01b03851660009081526019602052604090205460ff16155b8015611a4857506001600160a01b03841660009081526019602052604090205460ff16155b15611a76576005805460ff60a01b1916600160a01b179055611a68611ec7565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526019602052604090205460ff600160a01b909204821615911680611ac457506001600160a01b03851660009081526019602052604090205460ff165b15611acd575060005b60008115611cb8576001600160a01b0386166000908152601b602052604090205460ff168015611aff57506000601254115b15611bbd57611b246064611b1e6012548861210190919063ffffffff16565b90612114565b905060125460145482611b379190612625565b611b419190612644565b60176000828254611b529190612666565b9091555050601254601554611b679083612625565b611b719190612644565b60186000828254611b829190612666565b9091555050601254601354611b979083612625565b611ba19190612644565b60166000828254611bb29190612666565b90915550611c9a9050565b6001600160a01b0387166000908152601b602052604090205460ff168015611be757506000600e54115b15611c9a57611c066064611b1e600e548861210190919063ffffffff16565b9050600e5460105482611c199190612625565b611c239190612644565b60176000828254611c349190612666565b9091555050600e54601154611c499083612625565b611c539190612644565b60186000828254611c649190612666565b9091555050600e54600f54611c799083612625565b611c839190612644565b60166000828254611c949190612666565b90915550505b8015611cab57611cab873083611d72565b611cb58186612706565b94505b611cc3878787611d72565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d985760405162461bcd60e51b815260040161096e9061267e565b6001600160a01b038216611dbe5760405162461bcd60e51b815260040161096e906126c3565b6001600160a01b03831660009081526020819052604090205481811015611e365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161096e565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e6d908490612666565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb991815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601854601654601754611eee9190612666565b611ef89190612666565b90506000821580611f07575081155b15611f1157505050565b600954611f1f906004612625565b831115611f3757600954611f34906004612625565b92505b600060028360175486611f4a9190612625565b611f549190612644565b611f5e9190612644565b90506000611f6c8583612120565b905047611f788261212c565b6000611f844783612120565b90506000611fa187611b1e6016548561210190919063ffffffff16565b90506000611fbe88611b1e6018548661210190919063ffffffff16565b9050600081611fcd8486612706565b611fd79190612706565b60006017819055601681905560188190556007546040519293506001600160a01b031691849181818185875af1925050503d8060008114612034576040519150601f19603f3d011682016040523d82523d6000602084013e612039565b606091505b5090985050861580159061204d5750600081115b156120a05761205c87826122ec565b601754604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d80600081146120ed576040519150601f19603f3d011682016040523d82523d6000602084013e6120f2565b606091505b50505050505050505050505050565b600061210d8284612625565b9392505050565b600061210d8284612644565b600061210d8284612706565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121615761216161271d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122039190612733565b816001815181106122165761221661271d565b60200260200101906001600160a01b031690816001600160a01b031681525050612261307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611354565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906122b6908590600090869030904290600401612750565b600060405180830381600087803b1580156122d057600080fd5b505af11580156122e4573d6000803e3d6000fd5b505050505050565b612317307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611354565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156123a1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123c691906127c1565b5050505050565b600060208083528351808285015260005b818110156123fa578581018301518582016040015282016123de565b8181111561240c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461135157600080fd5b6000806040838503121561244a57600080fd5b823561245581612422565b946020939093013593505050565b60006020828403121561247557600080fd5b813561210d81612422565b60006020828403121561249257600080fd5b5035919050565b6000806000606084860312156124ae57600080fd5b83356124b981612422565b925060208401356124c981612422565b929592945050506040919091013590565b8035801515811461127757600080fd5b600080604083850312156124fd57600080fd5b823561250881612422565b9150612516602084016124da565b90509250929050565b60008060006060848603121561253457600080fd5b505081359360208301359350604090920135919050565b60006020828403121561255d57600080fd5b61210d826124da565b6000806040838503121561257957600080fd5b823561258481612422565b9150602083013561259481612422565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806125e857607f821691505b6020821081141561260957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561263f5761263f61260f565b500290565b60008261266157634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156126795761267961260f565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156127185761271861260f565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561274557600080fd5b815161210d81612422565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127a05784516001600160a01b03168352938301939183019160010161277b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127d657600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220074bd5542474ce42043ba5fc93749a5a77f8282df0d9bea1e4349de08807cbae64736f6c634300080a0033
Deployed Bytecode Sourcemap
15214:15245:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19277:110;;;;;;;;;;;;;:::i;:::-;;2885:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3807:169;;;;;;;;;;-1:-1:-1;3807:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;3807:169:0;1072:187:1;16398:63:0;;;;;;;;;;-1:-1:-1;16398:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15290:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1707:32:1;;;1689:51;;1677:2;1662:18;15290:51:0;1516:230:1;3212:108:0;;;;;;;;;;-1:-1:-1;3300:12:0;;3212:108;;;1897:25:1;;;1885:2;1870:18;3212:108:0;1751:177:1;16181:33:0;;;;;;;;;;;;;;;;16263;;;;;;;;;;;;;;;;16223;;;;;;;;;;;;;;;;20172:275;;;;;;;;;;-1:-1:-1;20172:275:0;;;;;:::i;:::-;;:::i;3984:492::-;;;;;;;;;;-1:-1:-1;3984:492:0;;;;;:::i;:::-;;:::i;15393:53::-;;;;;;;;;;;;15439:6;15393:53;;3109:93;;;;;;;;;;-1:-1:-1;3109:93:0;;3192:2;2929:36:1;;2917:2;2902:18;3109:93:0;2787:184:1;4484:215:0;;;;;;;;;;-1:-1:-1;4484:215:0;;;;;:::i;:::-;;:::i;15348:38::-;;;;;;;;;;;;;;;15680:33;;;;;;;;;;-1:-1:-1;15680:33:0;;;;;;;;22695:126;;;;;;;;;;-1:-1:-1;22695:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;22785:28:0;22761:4;22785:28;;;:19;:28;;;;;;;;;22695:126;16070:28;;;;;;;;;;;;;;;;15760:30;;;;;;;;;;-1:-1:-1;15760:30:0;;;;;;;;;;;3328:127;;;;;;;;;;-1:-1:-1;3328:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3429:18:0;3402:7;3429:18;;;;;;;;;;;;3328:127;985:103;;;;;;;;;;;;;:::i;19395:121::-;;;;;;;;;;;;;:::i;20719:167::-;;;;;;;;;;-1:-1:-1;20719:167:0;;;;;:::i;:::-;;:::i;15955:30::-;;;;;;;;;;;;;;;;22452:235;;;;;;;;;;-1:-1:-1;22452:235:0;;;;;:::i;:::-;;:::i;21002:364::-;;;;;;;;;;-1:-1:-1;21002:364:0;;;;;:::i;:::-;;:::i;760:87::-;;;;;;;;;;-1:-1:-1;833:6:0;;-1:-1:-1;;;;;833:6:0;760:87;;16105:31;;;;;;;;;;;;;;;;20894:100;;;;;;;;;;-1:-1:-1;20894:100:0;;;;;:::i;:::-;;:::i;2995:104::-;;;;;;;;;;;;;:::i;21944:304::-;;;;;;;;;;-1:-1:-1;21944:304:0;;;;;:::i;:::-;;:::i;16303:27::-;;;;;;;;;;;;;;;;4707:413;;;;;;;;;;-1:-1:-1;4707:413:0;;;;;:::i;:::-;;:::i;3463:175::-;;;;;;;;;;-1:-1:-1;3463:175:0;;;;;:::i;:::-;;:::i;16029:32::-;;;;;;;;;;;;;;;;16470:57;;;;;;;;;;-1:-1:-1;16470:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15720:33;;;;;;;;;;-1:-1:-1;15720:33:0;;;;;;;;;;;21754:182;;;;;;;;;;-1:-1:-1;21754:182:0;;;;;:::i;:::-;;:::i;21374:372::-;;;;;;;;;;-1:-1:-1;21374:372:0;;;;;:::i;:::-;;:::i;20455:256::-;;;;;;;;;;-1:-1:-1;20455:256:0;;;;;:::i;:::-;;:::i;15873:39::-;;;;;;;;;;-1:-1:-1;15873:39:0;;;;;;;;15565:35;;;;;;;;;;;;;;;;19667:497;;;;;;;;;;-1:-1:-1;19667:497:0;;;;;:::i;:::-;;:::i;15921:27::-;;;;;;;;;;;;;;;;3648:151;;;;;;;;;;-1:-1:-1;3648:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3764:18:0;;;3737:7;3764:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3648:151;15607:33;;;;;;;;;;;;;;;;19524:135;;;;;;;;;;;;;:::i;15992:30::-;;;;;;;;;;;;;;;;1096:201;;;;;;;;;;-1:-1:-1;1096:201:0;;;;;:::i;:::-;;:::i;16143:31::-;;;;;;;;;;;;;;;;15647:24;;;;;;;;;;;;;;;;19277:110;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;;;;;;;;;19330:13:::1;:20:::0;;-1:-1:-1;;19361:18:0;;;;;19277:110::o;2885:100::-;2939:13;2972:5;2965:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2885:100;:::o;3807:169::-;3890:4;3907:39;384:10;3930:7;3939:6;3907:8;:39::i;:::-;-1:-1:-1;3964:4:0;3807:169;;;;:::o;20172:275::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;20309:4:::1;20301;20280:13;3300:12:::0;;;3212:108;20280:13:::1;:17;::::0;20296:1:::1;20280:17;:::i;:::-;20279:26;;;;:::i;:::-;20278:35;;;;:::i;:::-;20268:6;:45;;20246:142;;;::::0;-1:-1:-1;;;20246:142:0;;5835:2:1;20246:142:0::1;::::0;::::1;5817:21:1::0;5874:2;5854:18;;;5847:30;5913:34;5893:18;;;5886:62;-1:-1:-1;;;5964:18:1;;;5957:45;6019:19;;20246:142:0::1;5633:411:1::0;20246:142:0::1;20422:17;:6:::0;20432::::1;20422:17;:::i;:::-;20399:20;:40:::0;-1:-1:-1;20172:275:0:o;3984:492::-;4124:4;4141:36;4151:6;4159:9;4170:6;4141:9;:36::i;:::-;-1:-1:-1;;;;;4217:19:0;;4190:24;4217:19;;;:11;:19;;;;;;;;384:10;4217:33;;;;;;;;4269:26;;;;4261:79;;;;-1:-1:-1;;;4261:79:0;;6251:2:1;4261:79:0;;;6233:21:1;6290:2;6270:18;;;6263:30;6329:34;6309:18;;;6302:62;-1:-1:-1;;;6380:18:1;;;6373:38;6428:19;;4261:79:0;6049:404:1;4261:79:0;4376:57;4385:6;384:10;4426:6;4407:16;:25;4376:8;:57::i;:::-;-1:-1:-1;4464:4:0;;3984:492;-1:-1:-1;;;;3984:492:0:o;4484:215::-;384:10;4572:4;4621:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4621:34:0;;;;;;;;;;4572:4;;4589:80;;4612:7;;4621:47;;4658:10;;4621:47;:::i;:::-;4589:8;:80::i;985:103::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;1050:30:::1;1077:1;1050:18;:30::i;:::-;985:103::o:0;19395:121::-;833:6;;19447:4;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;-1:-1:-1;19464:14:0::1;:22:::0;;-1:-1:-1;;19464:22:0::1;::::0;;;19395:121;:::o;20719:167::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20832:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;20832:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20719:167::o;22452:235::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;22616:15:::1;::::0;22573:59:::1;::::0;-1:-1:-1;;;;;22616:15:0;;::::1;::::0;22573:59;::::1;::::0;::::1;::::0;22616:15:::1;::::0;22573:59:::1;22643:15;:36:::0;;-1:-1:-1;;;;;;22643:36:0::1;-1:-1:-1::0;;;;;22643:36:0;;;::::1;::::0;;;::::1;::::0;;22452:235::o;21002:364::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;21160:15:::1;:31:::0;;;21202:15:::1;:31:::0;;;21244:17:::1;:35:::0;;;21264:15;21305:33:::1;21220:13:::0;21178;21305:33:::1;:::i;:::-;:53;;;;:::i;:::-;21290:12;:68:::0;-1:-1:-1;;;21002:364:0:o;20894:100::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;20965:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;20965:21:0;;::::1;::::0;;;::::1;::::0;;20894:100::o;2995:104::-;3051:13;3084:7;3077:14;;;;;:::i;21944:304::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;22088:13:::1;-1:-1:-1::0;;;;;22080:21:0::1;:4;-1:-1:-1::0;;;;;22080:21:0::1;;;22058:128;;;::::0;-1:-1:-1;;;22058:128:0;;6793:2:1;22058:128:0::1;::::0;::::1;6775:21:1::0;6832:2;6812:18;;;6805:30;6871:34;6851:18;;;6844:62;6942:27;6922:18;;;6915:55;6987:19;;22058:128:0::1;6591:421:1::0;22058:128:0::1;22199:41;22228:4;22234:5;22199:28;:41::i;:::-;21944:304:::0;;:::o;4707:413::-;384:10;4800:4;4844:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4844:34:0;;;;;;;;;;4897:35;;;;4889:85;;;;-1:-1:-1;;;4889:85:0;;7219:2:1;4889:85:0;;;7201:21:1;7258:2;7238:18;;;7231:30;7297:34;7277:18;;;7270:62;-1:-1:-1;;;7348:18:1;;;7341:35;7393:19;;4889:85:0;7017:401:1;4889:85:0;5010:67;384:10;5033:7;5061:15;5042:16;:34;5010:8;:67::i;:::-;-1:-1:-1;5108:4:0;;4707:413;-1:-1:-1;;;4707:413:0:o;3463:175::-;3549:4;3566:42;384:10;3590:9;3601:6;3566:9;:42::i;21754:182::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21839:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;21839:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21894:34;;1212:41:1;;;21894:34:0::1;::::0;1185:18:1;21894:34:0::1;;;;;;;21754:182:::0;;:::o;21374:372::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;21533:16:::1;:32:::0;;;21576:16:::1;:32:::0;;;21619:18:::1;:36:::0;;;21640:15;21682:35:::1;21595:13:::0;21552;21682:35:::1;:::i;:::-;:56;;;;:::i;:::-;21666:13;:72:::0;-1:-1:-1;;;21374:372:0:o;20455:256::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;20595:4:::1;20587;20566:13;3300:12:::0;;;3212:108;20566:13:::1;:17;::::0;20582:1:::1;20566:17;:::i;:::-;20565:26;;;;:::i;:::-;20564:35;;;;:::i;:::-;20554:6;:45;;20532:131;;;::::0;-1:-1:-1;;;20532:131:0;;7625:2:1;20532:131:0::1;::::0;::::1;7607:21:1::0;7664:2;7644:18;;;7637:30;7703:34;7683:18;;;7676:62;-1:-1:-1;;;7754:18:1;;;7747:34;7798:19;;20532:131:0::1;7423:400:1::0;20532:131:0::1;20686:17;:6:::0;20696::::1;20686:17;:::i;:::-;20674:9;:29:::0;-1:-1:-1;20455:256:0:o;19667:497::-;833:6;;19775:4;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;19854:6:::1;19833:13;3300:12:::0;;;3212:108;19833:13:::1;:17;::::0;19849:1:::1;19833:17;:::i;:::-;19832:28;;;;:::i;:::-;19819:9;:41;;19797:144;;;::::0;-1:-1:-1;;;19797:144:0;;8030:2:1;19797:144:0::1;::::0;::::1;8012:21:1::0;8069:2;8049:18;;;8042:30;8108:34;8088:18;;;8081:62;-1:-1:-1;;;8159:18:1;;;8152:51;8220:19;;19797:144:0::1;7828:417:1::0;19797:144:0::1;20009:4;19988:13;3300:12:::0;;;3212:108;19988:13:::1;:17;::::0;20004:1:::1;19988:17;:::i;:::-;19987:26;;;;:::i;:::-;19974:9;:39;;19952:141;;;::::0;-1:-1:-1;;;19952:141:0;;8452:2:1;19952:141:0::1;::::0;::::1;8434:21:1::0;8491:2;8471:18;;;8464:30;8530:34;8510:18;;;8503:62;-1:-1:-1;;;8581:18:1;;;8574:50;8641:19;;19952:141:0::1;8250:416:1::0;19952:141:0::1;-1:-1:-1::0;20104:18:0::1;:30:::0;;;20152:4:::1;966:1;19667:497:::0;;;:::o;19524:135::-;833:6;;19584:4;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;-1:-1:-1;19601:20:0::1;:28:::0;;-1:-1:-1;;19601:28:0::1;::::0;;;19524:135;:::o;1096:201::-;833:6;;-1:-1:-1;;;;;833:6:0;384:10;895:23;887:68;;;;-1:-1:-1;;;887:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1185:22:0;::::1;1177:73;;;::::0;-1:-1:-1;;;1177:73:0;;8873:2:1;1177:73:0::1;::::0;::::1;8855:21:1::0;8912:2;8892:18;;;8885:30;8951:34;8931:18;;;8924:62;-1:-1:-1;;;9002:18:1;;;8995:36;9048:19;;1177:73:0::1;8671:402:1::0;1177:73:0::1;1261:28;1280:8;1261:18;:28::i;:::-;1096:201:::0;:::o;6875:380::-;-1:-1:-1;;;;;7011:19:0;;7003:68;;;;-1:-1:-1;;;7003:68:0;;9280:2:1;7003:68:0;;;9262:21:1;9319:2;9299:18;;;9292:30;9358:34;9338:18;;;9331:62;-1:-1:-1;;;9409:18:1;;;9402:34;9453:19;;7003:68:0;9078:400:1;7003:68:0;-1:-1:-1;;;;;7090:21:0;;7082:68;;;;-1:-1:-1;;;7082:68:0;;9685:2:1;7082:68:0;;;9667:21:1;9724:2;9704:18;;;9697:30;9763:34;9743:18;;;9736:62;-1:-1:-1;;;9814:18:1;;;9807:32;9856:19;;7082:68:0;9483:398:1;7082:68:0;-1:-1:-1;;;;;7163:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7215:32;;1897:25:1;;;7215:32:0;;1870:18:1;7215:32:0;;;;;;;6875:380;;;:::o;22829:4733::-;-1:-1:-1;;;;;22961:18:0;;22953:68;;;;-1:-1:-1;;;22953:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23040:16:0;;23032:64;;;;-1:-1:-1;;;23032:64:0;;;;;;;:::i;:::-;23113:11;23109:93;;23141:28;23157:4;23163:2;23167:1;23141:15;:28::i;:::-;22829:4733;;;:::o;23109:93::-;23218:14;;;;23214:2487;;;833:6;;-1:-1:-1;;;;;23271:15:0;;;833:6;;23271:15;;;;:49;;-1:-1:-1;833:6:0;;-1:-1:-1;;;;;23307:13:0;;;833:6;;23307:13;;23271:49;:86;;;;-1:-1:-1;;;;;;23341:16:0;;;;23271:86;:128;;;;-1:-1:-1;;;;;;23378:21:0;;23392:6;23378:21;;23271:128;:158;;;;-1:-1:-1;23421:8:0;;-1:-1:-1;;;23421:8:0;;;;23420:9;23271:158;23249:2441;;;23469:13;;;;;;;23464:223;;-1:-1:-1;;;;;23541:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;23570:23:0;;;;;;:19;:23;;;;;;;;23541:52;23507:160;;;;-1:-1:-1;;;23507:160:0;;10898:2:1;23507:160:0;;;10880:21:1;10937:2;10917:18;;;10910:30;-1:-1:-1;;;10956:18:1;;;10949:52;11018:18;;23507:160:0;10696:346:1;23507:160:0;23843:20;;;;23839:641;;;833:6;;-1:-1:-1;;;;;23918:13:0;;;833:6;;23918:13;;;;:72;;;23974:15;-1:-1:-1;;;;;23960:30:0;:2;-1:-1:-1;;;;;23960:30:0;;;23918:72;:129;;;;;24033:13;-1:-1:-1;;;;;24019:28:0;:2;-1:-1:-1;;;;;24019:28:0;;;23918:129;23888:573;;;24165:9;24136:39;;;;:28;:39;;;;;;24211:12;-1:-1:-1;24098:258:0;;;;-1:-1:-1;;;24098:258:0;;11249:2:1;24098:258:0;;;11231:21:1;11288:2;11268:18;;;11261:30;11327:34;11307:18;;;11300:62;11398:34;11378:18;;;11371:62;-1:-1:-1;;;11449:19:1;;;11442:40;11499:19;;24098:258:0;11047:477:1;24098:258:0;24412:9;24383:39;;;;:28;:39;;;;;24425:12;24383:54;;23888:573;-1:-1:-1;;;;;24554:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;24611:35:0;;;;;;:31;:35;;;;;;;;24610:36;24554:92;24528:1147;;;24733:20;;24723:6;:30;;24689:169;;;;-1:-1:-1;;;24689:169:0;;11731:2:1;24689:169:0;;;11713:21:1;11770:2;11750:18;;;11743:30;11809:34;11789:18;;;11782:62;-1:-1:-1;;;11860:18:1;;;11853:51;11921:19;;24689:169:0;11529:417:1;24689:169:0;24941:9;;-1:-1:-1;;;;;3429:18:0;;3402:7;3429:18;;;;;;;;;;;24915:22;;:6;:22;:::i;:::-;:35;;24881:140;;;;-1:-1:-1;;;24881:140:0;;12153:2:1;24881:140:0;;;12135:21:1;12192:2;12172:18;;;12165:30;-1:-1:-1;;;12211:18:1;;;12204:49;12270:18;;24881:140:0;11951:343:1;24881:140:0;24528:1147;;;-1:-1:-1;;;;;25119:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;25174:37:0;;;;;;:31;:37;;;;;;;;25173:38;25119:92;25093:582;;;25298:20;;25288:6;:30;;25254:170;;;;-1:-1:-1;;;25254:170:0;;12501:2:1;25254:170:0;;;12483:21:1;12540:2;12520:18;;;12513:30;12579:34;12559:18;;;12552:62;-1:-1:-1;;;12630:18:1;;;12623:52;12692:19;;25254:170:0;12299:418:1;25093:582:0;-1:-1:-1;;;;;25455:35:0;;;;;;:31;:35;;;;;;;;25450:225;;25575:9;;-1:-1:-1;;;;;3429:18:0;;3402:7;3429:18;;;;;;;;;;;25549:22;;:6;:22;:::i;:::-;:35;;25515:140;;;;-1:-1:-1;;;25515:140:0;;12153:2:1;25515:140:0;;;12135:21:1;12192:2;12172:18;;;12165:30;-1:-1:-1;;;12211:18:1;;;12204:49;12270:18;;25515:140:0;11951:343:1;25515:140:0;25762:4;25713:28;3429:18;;;;;;;;;;;25820;;25796:42;;;;;;;25869:35;;-1:-1:-1;25893:11:0;;;;;;;25869:35;:61;;;;-1:-1:-1;25922:8:0;;-1:-1:-1;;;25922:8:0;;;;25921:9;25869:61;:110;;;;-1:-1:-1;;;;;;25948:31:0;;;;;;:25;:31;;;;;;;;25947:32;25869:110;:153;;;;-1:-1:-1;;;;;;25997:25:0;;;;;;:19;:25;;;;;;;;25996:26;25869:153;:194;;;;-1:-1:-1;;;;;;26040:23:0;;;;;;:19;:23;;;;;;;;26039:24;25869:194;25851:326;;;26090:8;:15;;-1:-1:-1;;;;26090:15:0;-1:-1:-1;;;26090:15:0;;;26122:10;:8;:10::i;:::-;26149:8;:16;;-1:-1:-1;;;;26149:16:0;;;25851:326;26205:8;;-1:-1:-1;;;;;26315:25:0;;26189:12;26315:25;;;:19;:25;;;;;;26205:8;-1:-1:-1;;;26205:8:0;;;;;26204:9;;26315:25;;:52;;-1:-1:-1;;;;;;26344:23:0;;;;;;:19;:23;;;;;;;;26315:52;26311:100;;;-1:-1:-1;26394:5:0;26311:100;26423:12;26528:7;26524:985;;;-1:-1:-1;;;;;26580:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;26629:1;26613:13;;:17;26580:50;26576:784;;;26658:34;26688:3;26658:25;26669:13;;26658:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;26651:41;;26761:13;;26741:16;;26734:4;:23;;;;:::i;:::-;26733:41;;;;:::i;:::-;26711:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;26839:13:0;;26817:18;;26810:25;;:4;:25;:::i;:::-;26809:43;;;;:::i;:::-;26793:12;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;26921:13:0;;26901:16;;26894:23;;:4;:23;:::i;:::-;26893:41;;;;:::i;:::-;26871:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;26576:784:0;;-1:-1:-1;26576:784:0;;-1:-1:-1;;;;;26996:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;27046:1;27031:12;;:16;26996:51;26992:368;;;27075:33;27104:3;27075:24;27086:12;;27075:6;:10;;:24;;;;:::i;:33::-;27068:40;;27176:12;;27157:15;;27150:4;:22;;;;:::i;:::-;27149:39;;;;:::i;:::-;27127:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27252:12:0;;27231:17;;27224:24;;:4;:24;:::i;:::-;27223:41;;;;:::i;:::-;27207:12;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;27332:12:0;;27313:15;;27306:22;;:4;:22;:::i;:::-;27305:39;;;;:::i;:::-;27283:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;26992:368:0;27380:8;;27376:91;;27409:42;27425:4;27439;27446;27409:15;:42::i;:::-;27483:14;27493:4;27483:14;;:::i;:::-;;;26524:985;27521:33;27537:4;27543:2;27547:6;27521:15;:33::i;:::-;22942:4620;;;;22829:4733;;;:::o;1307:191::-;1400:6;;;-1:-1:-1;;;;;1417:17:0;;;-1:-1:-1;;;;;;1417:17:0;;;;;;;1450:40;;1400:6;;;1417:17;1400:6;;1450:40;;1381:16;;1450:40;1370:128;1307:191;:::o;22256:188::-;-1:-1:-1;;;;;22339:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;22339:39:0;;;;;;;;;;22396:40;;22339:39;;:31;22396:40;;;22256:188;;:::o;5128:733::-;-1:-1:-1;;;;;5268:20:0;;5260:70;;;;-1:-1:-1;;;5260:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5349:23:0;;5341:71;;;;-1:-1:-1;;;5341:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5509:17:0;;5485:21;5509:17;;;;;;;;;;;5545:23;;;;5537:74;;;;-1:-1:-1;;;5537:74:0;;13054:2:1;5537:74:0;;;13036:21:1;13093:2;13073:18;;;13066:30;13132:34;13112:18;;;13105:62;-1:-1:-1;;;13183:18:1;;;13176:36;13229:19;;5537:74:0;12852:402:1;5537:74:0;-1:-1:-1;;;;;5647:17:0;;;:9;:17;;;;;;;;;;;5667:22;;;5647:42;;5711:20;;;;;;;;:30;;5683:6;;5647:9;5711:30;;5683:6;;5711:30;:::i;:::-;;;;;;;;5776:9;-1:-1:-1;;;;;5759:35:0;5768:6;-1:-1:-1;;;;;5759:35:0;;5787:6;5759:35;;;;1897:25:1;;1885:2;1870:18;;1751:177;5759:35:0;;;;;;;;5249:612;5128:733;;;:::o;28692:1762::-;28775:4;28731:23;3429:18;;;;;;;;;;;28731:50;;28792:25;28888:12;;28854:18;;28820;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;28792:108;-1:-1:-1;28911:12:0;28940:20;;;:46;;-1:-1:-1;28964:22:0;;28940:46;28936:85;;;29003:7;;;28692:1762::o;28936:85::-;29055:18;;:22;;29076:1;29055:22;:::i;:::-;29037:15;:40;29033:113;;;29112:18;;:22;;29133:1;29112:22;:::i;:::-;29094:40;;29033:113;29207:23;29320:1;29287:17;29252:18;;29234:15;:36;;;;:::i;:::-;29233:71;;;;:::i;:::-;:88;;;;:::i;:::-;29207:114;-1:-1:-1;29332:26:0;29361:36;:15;29207:114;29361:19;:36::i;:::-;29332:65;-1:-1:-1;29438:21:0;29472:36;29332:65;29472:16;:36::i;:::-;29521:18;29542:44;:21;29568:17;29542:25;:44::i;:::-;29521:65;;29599:23;29625:81;29678:17;29625:34;29640:18;;29625:10;:14;;:34;;;;:::i;:81::-;29599:107;;29717:17;29737:51;29770:17;29737:28;29752:12;;29737:10;:14;;:28;;;;:::i;:51::-;29717:71;-1:-1:-1;29801:23:0;29717:71;29827:28;29840:15;29827:10;:28;:::i;:::-;:40;;;;:::i;:::-;29901:1;29880:18;:22;;;29913:18;:22;;;29946:12;:16;;;29997:17;;29989:53;;29801:66;;-1:-1:-1;;;;;;29997:17:0;;30028:9;;29989:53;29901:1;29989:53;30028:9;29997:17;29989:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29975:67:0;;-1:-1:-1;;30059:19:0;;;;;:42;;;30100:1;30082:15;:19;30059:42;30055:278;;;30118:46;30131:15;30148;30118:12;:46::i;:::-;30288:18;;30184:137;;;13671:25:1;;;13727:2;13712:18;;13705:34;;;13755:18;;;13748:34;;;;30184:137:0;;;;;;13659:2:1;30184:137:0;;;30055:278;30367:15;;30359:87;;-1:-1:-1;;;;;30367:15:0;;;;30410:21;;30359:87;;;;30410:21;30367:15;30359:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;28692:1762:0:o;8887:98::-;8945:7;8972:5;8976:1;8972;:5;:::i;:::-;8965:12;8887:98;-1:-1:-1;;;8887:98:0:o;8993:::-;9051:7;9078:5;9082:1;9078;:5;:::i;8781:98::-;8839:7;8866:5;8870:1;8866;:5;:::i;27570:589::-;27720:16;;;27734:1;27720:16;;;;;;;;27696:21;;27720:16;;;;;;;;;;-1:-1:-1;27720:16:0;27696:40;;27765:4;27747;27752:1;27747:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27747:23:0;;;-1:-1:-1;;;;;27747:23:0;;;;;27791:15;-1:-1:-1;;;;;27791:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27781:4;27786:1;27781:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27781:32:0;;;-1:-1:-1;;;;;27781:32:0;;;;;27826:62;27843:4;27858:15;27876:11;27826:8;:62::i;:::-;27927:224;;-1:-1:-1;;;27927:224:0;;-1:-1:-1;;;;;27927:15:0;:66;;;;:224;;28008:11;;28034:1;;28078:4;;28105;;28125:15;;27927:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27625:534;27570:589;:::o;28167:517::-;28315:62;28332:4;28347:15;28365:11;28315:8;:62::i;:::-;28420:256;;-1:-1:-1;;;28420:256:0;;28492:4;28420:256;;;15639:34:1;15689:18;;;15682:34;;;28538:1:0;15732:18:1;;;15725:34;;;15775:18;;;15768:34;15439:6:0;15818:19:1;;;15811:44;28650:15:0;15871:19:1;;;15864:35;28420:15:0;-1:-1:-1;;;;;28420:31:0;;;;28459:9;;15573:19:1;;28420:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28167:517;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:247::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1431:9;1418:23;1450:31;1475:5;1450:31;:::i;1933:180::-;1992:6;2045:2;2033:9;2024:7;2020:23;2016:32;2013:52;;;2061:1;2058;2051:12;2013:52;-1:-1:-1;2084:23:1;;1933:180;-1:-1:-1;1933:180:1:o;2118:456::-;2195:6;2203;2211;2264:2;2252:9;2243:7;2239:23;2235:32;2232:52;;;2280:1;2277;2270:12;2232:52;2319:9;2306:23;2338:31;2363:5;2338:31;:::i;:::-;2388:5;-1:-1:-1;2445:2:1;2430:18;;2417:32;2458:33;2417:32;2458:33;:::i;:::-;2118:456;;2510:7;;-1:-1:-1;;;2564:2:1;2549:18;;;;2536:32;;2118:456::o;2976:160::-;3041:20;;3097:13;;3090:21;3080:32;;3070:60;;3126:1;3123;3116:12;3141:315;3206:6;3214;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:31;3366:5;3341:31;:::i;:::-;3391:5;-1:-1:-1;3415:35:1;3446:2;3431:18;;3415:35;:::i;:::-;3405:45;;3141:315;;;;;:::o;3461:316::-;3538:6;3546;3554;3607:2;3595:9;3586:7;3582:23;3578:32;3575:52;;;3623:1;3620;3613:12;3575:52;-1:-1:-1;;3646:23:1;;;3716:2;3701:18;;3688:32;;-1:-1:-1;3767:2:1;3752:18;;;3739:32;;3461:316;-1:-1:-1;3461:316:1:o;3782:180::-;3838:6;3891:2;3879:9;3870:7;3866:23;3862:32;3859:52;;;3907:1;3904;3897:12;3859:52;3930:26;3946:9;3930:26;:::i;3967:388::-;4035:6;4043;4096:2;4084:9;4075:7;4071:23;4067:32;4064:52;;;4112:1;4109;4102:12;4064:52;4151:9;4138:23;4170:31;4195:5;4170:31;:::i;:::-;4220:5;-1:-1:-1;4277:2:1;4262:18;;4249:32;4290:33;4249:32;4290:33;:::i;:::-;4342:7;4332:17;;;3967:388;;;;;:::o;4360:356::-;4562:2;4544:21;;;4581:18;;;4574:30;4640:34;4635:2;4620:18;;4613:62;4707:2;4692:18;;4360:356::o;4721:380::-;4800:1;4796:12;;;;4843;;;4864:61;;4918:4;4910:6;4906:17;4896:27;;4864:61;4971:2;4963:6;4960:14;4940:18;4937:38;4934:161;;;5017:10;5012:3;5008:20;5005:1;4998:31;5052:4;5049:1;5042:15;5080:4;5077:1;5070:15;4934:161;;4721:380;;;:::o;5106:127::-;5167:10;5162:3;5158:20;5155:1;5148:31;5198:4;5195:1;5188:15;5222:4;5219:1;5212:15;5238:168;5278:7;5344:1;5340;5336:6;5332:14;5329:1;5326:21;5321:1;5314:9;5307:17;5303:45;5300:71;;;5351:18;;:::i;:::-;-1:-1:-1;5391:9:1;;5238:168::o;5411:217::-;5451:1;5477;5467:132;;5521:10;5516:3;5512:20;5509:1;5502:31;5556:4;5553:1;5546:15;5584:4;5581:1;5574:15;5467:132;-1:-1:-1;5613:9:1;;5411:217::o;6458:128::-;6498:3;6529:1;6525:6;6522:1;6519:13;6516:39;;;6535:18;;:::i;:::-;-1:-1:-1;6571:9:1;;6458:128::o;9886:401::-;10088:2;10070:21;;;10127:2;10107:18;;;10100:30;10166:34;10161:2;10146:18;;10139:62;-1:-1:-1;;;10232:2:1;10217:18;;10210:35;10277:3;10262:19;;9886:401::o;10292:399::-;10494:2;10476:21;;;10533:2;10513:18;;;10506:30;10572:34;10567:2;10552:18;;10545:62;-1:-1:-1;;;10638:2:1;10623:18;;10616:33;10681:3;10666:19;;10292:399::o;12722:125::-;12762:4;12790:1;12787;12784:8;12781:34;;;12795:18;;:::i;:::-;-1:-1:-1;12832:9:1;;12722:125::o;13925:127::-;13986:10;13981:3;13977:20;13974:1;13967:31;14017:4;14014:1;14007:15;14041:4;14038:1;14031:15;14057:251;14127:6;14180:2;14168:9;14159:7;14155:23;14151:32;14148:52;;;14196:1;14193;14186:12;14148:52;14228:9;14222:16;14247:31;14272:5;14247:31;:::i;14313:980::-;14575:4;14623:3;14612:9;14608:19;14654:6;14643:9;14636:25;14680:2;14718:6;14713:2;14702:9;14698:18;14691:34;14761:3;14756:2;14745:9;14741:18;14734:31;14785:6;14820;14814:13;14851:6;14843;14836:22;14889:3;14878:9;14874:19;14867:26;;14928:2;14920:6;14916:15;14902:29;;14949:1;14959:195;14973:6;14970:1;14967:13;14959:195;;;15038:13;;-1:-1:-1;;;;;15034:39:1;15022:52;;15129:15;;;;15094:12;;;;15070:1;14988:9;14959:195;;;-1:-1:-1;;;;;;;15210:32:1;;;;15205:2;15190:18;;15183:60;-1:-1:-1;;;15274:3:1;15259:19;15252:35;15171:3;14313:980;-1:-1:-1;;;14313:980:1:o;15910:306::-;15998:6;16006;16014;16067:2;16055:9;16046:7;16042:23;16038:32;16035:52;;;16083:1;16080;16073:12;16035:52;16112:9;16106:16;16096:26;;16162:2;16151:9;16147:18;16141:25;16131:35;;16206:2;16195:9;16191:18;16185:25;16175:35;;15910:306;;;;;:::o
Swarm Source
ipfs://074bd5542474ce42043ba5fc93749a5a77f8282df0d9bea1e4349de08807cbae
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.