ERC-20
Overview
Max Total Supply
100,000,000 ROI
Holders
24
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ROI
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-05 */ /* $ROI - each buy and sell makes your $ROI balance higher! Telegram: https://t.me/ROI4YOUERC Twitter: https://twitter.com/roi4youerc/ Website: https://www.roi4u.io/ Medium: https://medium.com/@ROI4uERC */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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 ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract ROI is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Return On Investment"; string private constant _symbol = "ROI"; uint8 private constant _decimals = 18; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 100_000_000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public _redisFeeOnBuy = 2; uint256 public _taxFeeOnBuy = 1; uint256 public _liquidityFeeOnBuy = 1; uint256 public _redisFeeOnSell = 2; uint256 public _taxFeeOnSell = 1; uint256 public _liquidityFeeOnSell = 1; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping (address => bool) public preTrader; address payable private _developmentAddress = payable(0x3901A440ae8417D9D22fC5bcA26F305866BC6FF9); address payable private _marketingAddress = payable(0xDD9728c1D74596dc7fbbB8d94Cde7cBF6acC46eD); address public constant deadAddress = address(0xdead); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled = false; uint256 public _maxTxAmount = 2_000_000 * 10**18; uint256 public _maxWalletSize = 2_000_000 * 10**18; uint256 public _swapTokensAtAmount = 40_000 * 10**18; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); preTrader[owner()] = true; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { 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 _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner() && !preTrader[from] && !preTrader[to]) { //Trade start check if (!tradingOpen) { require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { if (contractTokenBalance >= _swapTokensAtAmount * 20) { contractTokenBalance = _swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractTokenBalance * _liquidityFeeOnSell) / _taxFeeOnSell / 2; uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint ethForMarketing = ethBalance.mul(_taxFeeOnSell.sub(_liquidityFeeOnSell)).div(_taxFeeOnSell); uint256 ethForLiquidity = ethBalance - ethForMarketing; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); } uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function setTrading() public onlyOwner { tradingOpen = true; swapEnabled = true; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell, uint256 liquidityFeeOnBuy, uint256 liquidityFeeOnSell) public onlyOwner { require(redisFeeOnBuy + taxFeeOnBuy + liquidityFeeOnBuy <= 25, "TOKEN: Buy tax too high."); require(redisFeeOnSell + taxFeeOnSell + liquidityFeeOnSell <= 25, "TOKEN: Sell tax too high."); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; _liquidityFeeOnBuy = liquidityFeeOnBuy; _liquidityFeeOnSell = liquidityFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { require(maxTxAmount >= (_tTotal / 1000), "Cannot set maxTransactionAmount lower than 0.1%"); _maxTxAmount = maxTxAmount; } //Set maximum wallet size function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { require(maxWalletSize >= (_tTotal * 5 / 1000), "Cannot set maxWallet lower than 0.5%"); _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } 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 allowPreTrading(address[] calldata accounts) public { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); for(uint256 i = 0; i < accounts.length; i++) { preTrader[accounts[i]] = true; } } function removePreTrading(address[] calldata accounts) public { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); for(uint256 i = 0; i < accounts.length; i++) { delete preTrader[accounts[i]]; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redisFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redisFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removePreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526200001c6a52b7d2dcc80cd2e40000005f1962000375565b62000029905f1962000395565b6006556002600881905560016009819055600a819055600b829055600c819055600d819055600e829055600f819055601091909155601155601380546001600160a01b0319908116733901a440ae8417d9d22fc5bca26f305866bc6ff9179091556014805490911673dd9728c1d74596dc7fbbb8d94cde7cbf6acc46ed1790556016805462ffffff60a01b191690556a01a784379d99db420000006017819055601855690878678326eac9000000601955348015620000e6575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c69190620003bb565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000212573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002389190620003bb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000283573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a99190620003bb565b601680546001600160a01b0319166001600160a01b039283161790555f805482168152601260209081526040808320805460ff1990811660019081179092558454861685526005845282852080548216831790553085528285208054821683179055601354861685528285208054821683179055601454909516845281842080549095161790935591516a52b7d2dcc80cd2e4000000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620003ea565b5f826200039057634e487b7160e01b5f52601260045260245ffd5b500690565b81810381811115620003b557634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003cc575f80fd5b81516001600160a01b0381168114620003e3575f80fd5b9392505050565b6120c680620003f85f395ff3fe60806040526004361061020a575f3560e01c80637d1db4a511610113578063bd9a3b6d1161009d578063c492f0461161006d578063c492f046146105c5578063d52dfc14146105e4578063dd62ed3e146105f9578063ea1644d51461063d578063f2fde38b1461065c575f80fd5b8063bd9a3b6d1461054f578063bdd795ef1461056e578063bf5976d31461059c578063c3c8cd80146105b1575f80fd5b806395d89b41116100e357806395d89b41146104b257806398a5c315146104dd578063a01abe5c146104fc578063a9059cbb14610511578063b5a6522314610530575f80fd5b80637d1db4a5146104575780638199040e1461046c5780638da5cb5b146104815780638f9a55c01461049d575f80fd5b80633c0a73ae116101945780636fc3eaec116101645780636fc3eaec146103dd57806370a08231146103f1578063715018a61461041057806374010ece146104245780637c519ffb14610443575f80fd5b80633c0a73ae1461036957806349bd5a5e1461037e57806367aadb7e1461039d5780636d8aa8f8146103be575f80fd5b806323b872dd116101da57806323b872dd146102f057806327c8f8351461030f5780632fd689e314610324578063313ce5671461033957806331cc43bd14610354575f80fd5b806306fdde0314610215578063095ea7b3146102635780631694505e1461029257806318160ddd146102c9575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b5060408051808201909152601481527314995d1d5c9b8813db88125b9d995cdd1b595b9d60621b60208201525b60405161025a9190611c84565b60405180910390f35b34801561026e575f80fd5b5061028261027d366004611ce4565b61067b565b604051901515815260200161025a565b34801561029d575f80fd5b506015546102b1906001600160a01b031681565b6040516001600160a01b03909116815260200161025a565b3480156102d4575f80fd5b506a52b7d2dcc80cd2e40000005b60405190815260200161025a565b3480156102fb575f80fd5b5061028261030a366004611d0e565b610691565b34801561031a575f80fd5b506102b161dead81565b34801561032f575f80fd5b506102e260195481565b348015610344575f80fd5b506040516012815260200161025a565b34801561035f575f80fd5b506102e260085481565b348015610374575f80fd5b506102e2600a5481565b348015610389575f80fd5b506016546102b1906001600160a01b031681565b3480156103a8575f80fd5b506103bc6103b7366004611d94565b6106f8565b005b3480156103c9575f80fd5b506103bc6103d8366004611de7565b610796565b3480156103e8575f80fd5b506103bc6107e6565b3480156103fc575f80fd5b506102e261040b366004611e00565b610830565b34801561041b575f80fd5b506103bc610851565b34801561042f575f80fd5b506103bc61043e366004611e1b565b6108c2565b34801561044e575f80fd5b506103bc61096e565b348015610462575f80fd5b506102e260175481565b348015610477575f80fd5b506102e2600c5481565b34801561048c575f80fd5b505f546001600160a01b03166102b1565b3480156104a8575f80fd5b506102e260185481565b3480156104bd575f80fd5b50604080518082019091526003815262524f4960e81b602082015261024d565b3480156104e8575f80fd5b506103bc6104f7366004611e1b565b6109b0565b348015610507575f80fd5b506102e2600b5481565b34801561051c575f80fd5b5061028261052b366004611ce4565b6109de565b34801561053b575f80fd5b506103bc61054a366004611d94565b6109ea565b34801561055a575f80fd5b506103bc610569366004611e32565b610a8c565b348015610579575f80fd5b50610282610588366004611e00565b60126020525f908152604090205460ff1681565b3480156105a7575f80fd5b506102e260095481565b3480156105bc575f80fd5b506103bc610b9c565b3480156105d0575f80fd5b506103bc6105df366004611e71565b610bee565b3480156105ef575f80fd5b506102e2600d5481565b348015610604575f80fd5b506102e2610613366004611ec1565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610648575f80fd5b506103bc610657366004611e1b565b610c81565b348015610667575f80fd5b506103bc610676366004611e00565b610d2d565b5f610687338484610e14565b5060015b92915050565b5f61069d848484610f37565b6106ee84336106e985604051806060016040528060288152602001612069602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906114dd565b610e14565b5060019392505050565b6013546001600160a01b0316336001600160a01b0316148061072d57506014546001600160a01b0316336001600160a01b0316145b610735575f80fd5b5f5b818110156107915760125f84848481811061075457610754611ef8565b90506020020160208101906107699190611e00565b6001600160a01b0316815260208101919091526040015f20805460ff19169055600101610737565b505050565b5f546001600160a01b031633146107c85760405162461bcd60e51b81526004016107bf90611f0c565b60405180910390fd5b60168054911515600160b01b0260ff60b01b19909216919091179055565b6013546001600160a01b0316336001600160a01b0316148061081b57506014546001600160a01b0316336001600160a01b0316145b610823575f80fd5b4761082d81611515565b50565b6001600160a01b0381165f9081526002602052604081205461068b90611550565b5f546001600160a01b0316331461087a5760405162461bcd60e51b81526004016107bf90611f0c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108eb5760405162461bcd60e51b81526004016107bf90611f0c565b6109026103e86a52b7d2dcc80cd2e4000000611f55565b8110156109695760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084016107bf565b601755565b5f546001600160a01b031633146109975760405162461bcd60e51b81526004016107bf90611f0c565b6016805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b031633146109d95760405162461bcd60e51b81526004016107bf90611f0c565b601955565b5f610687338484610f37565b6013546001600160a01b0316336001600160a01b03161480610a1f57506014546001600160a01b0316336001600160a01b0316145b610a27575f80fd5b5f5b8181101561079157600160125f858585818110610a4857610a48611ef8565b9050602002016020810190610a5d9190611e00565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610a29565b5f546001600160a01b03163314610ab55760405162461bcd60e51b81526004016107bf90611f0c565b601982610ac28689611f74565b610acc9190611f74565b1115610b1a5760405162461bcd60e51b815260206004820152601860248201527f544f4b454e3a204275792074617820746f6f20686967682e000000000000000060448201526064016107bf565b601981610b278588611f74565b610b319190611f74565b1115610b7f5760405162461bcd60e51b815260206004820152601960248201527f544f4b454e3a2053656c6c2074617820746f6f20686967682e0000000000000060448201526064016107bf565b600895909555600b93909355600991909155600c55600a55600d55565b6013546001600160a01b0316336001600160a01b03161480610bd157506014546001600160a01b0316336001600160a01b0316145b610bd9575f80fd5b5f610be330610830565b905061082d816115d2565b5f546001600160a01b03163314610c175760405162461bcd60e51b81526004016107bf90611f0c565b5f5b82811015610c7b578160055f868685818110610c3757610c37611ef8565b9050602002016020810190610c4c9190611e00565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c19565b50505050565b5f546001600160a01b03163314610caa5760405162461bcd60e51b81526004016107bf90611f0c565b6103e8610cc36a52b7d2dcc80cd2e40000006005611f87565b610ccd9190611f55565b811015610d285760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016107bf565b601855565b5f546001600160a01b03163314610d565760405162461bcd60e51b81526004016107bf90611f0c565b6001600160a01b038116610dbb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bf565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107bf565b6001600160a01b038216610ed75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107bf565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f9b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107bf565b6001600160a01b038216610ffd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107bf565b5f811161105e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107bf565b5f546001600160a01b0384811691161480159061108857505f546001600160a01b03838116911614155b80156110ac57506001600160a01b0383165f9081526012602052604090205460ff16155b80156110d057506001600160a01b0382165f9081526012602052604090205460ff16155b156113d957601654600160a01b900460ff16611173576001600160a01b0383165f9081526012602052604090205460ff166111735760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016107bf565b6017548111156111c55760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016107bf565b6016546001600160a01b0383811691161461124a57601854816111e784610830565b6111f19190611f74565b1061124a5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016107bf565b5f61125430610830565b601954909150811080159081906112755750601654600160a81b900460ff16155b801561128f57506016546001600160a01b03868116911614155b80156112a45750601654600160b01b900460ff165b80156112c857506001600160a01b0385165f9081526005602052604090205460ff16155b80156112ec57506001600160a01b0384165f9081526005602052604090205460ff16155b156113d6576019546112ff906014611f87565b821061131657601954611313906014611f87565b91505b5f6002600c54600d548561132a9190611f87565b6113349190611f55565b61133e9190611f55565b90505f61134b8483611742565b905047611357826115d2565b5f6113624783611742565b90505f611392600c5461138c611385600d54600c5461174290919063ffffffff16565b8590611783565b90611801565b90505f61139f8284611f9e565b90505f861180156113af57505f81115b156113be576113be8682611842565b4780156113ce576113ce47611515565b505050505050505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061141957506001600160a01b0383165f9081526005602052604090205460ff165b8061144b57506016546001600160a01b0385811691161480159061144b57506016546001600160a01b03848116911614155b1561145757505f6114d1565b6016546001600160a01b03858116911614801561148257506015546001600160a01b03848116911614155b1561149457600854600e55600954600f555b6016546001600160a01b0384811691161480156114bf57506015546001600160a01b03858116911614155b156114d157600b54600e55600c54600f555b610c7b848484846118f1565b5f81848411156115005760405162461bcd60e51b81526004016107bf9190611c84565b505f61150c8486611f9e565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561154c573d5f803e3d5ffd5b5050565b5f6006548211156115b65760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107bf565b5f6115bf61191f565b90506115cb8382611801565b9392505050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061161857611618611ef8565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561166f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190611fb1565b816001815181106116a6576116a6611ef8565b6001600160a01b0392831660209182029290920101526015546116cc9130911684610e14565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906117049085905f90869030904290600401611fcc565b5f604051808303815f87803b15801561171b575f80fd5b505af115801561172d573d5f803e3d5ffd5b50506016805460ff60a81b1916905550505050565b5f6115cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114dd565b5f825f0361179257505f61068b565b5f61179d8385611f87565b9050826117aa8583611f55565b146115cb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107bf565b5f6115cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611940565b60155461185a9030906001600160a01b031684610e14565b60155460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156118c5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118ea919061203d565b5050505050565b806118fe576118fe61196c565b611909848484611999565b80610c7b57610c7b601054600e55601154600f55565b5f805f61192a611a8a565b90925090506119398282611801565b9250505090565b5f81836119605760405162461bcd60e51b81526004016107bf9190611c84565b505f61150c8486611f55565b600e5415801561197c5750600f54155b1561198357565b600e8054601055600f80546011555f9182905555565b5f805f805f806119a887611acf565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506119d99087611742565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054611a079086611b24565b6001600160a01b0389165f90815260026020526040902055611a2881611b82565b611a328483611bc8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a7791815260200190565b60405180910390a3505050505050505050565b6006545f9081906a52b7d2dcc80cd2e4000000611aa78282611801565b821015611ac6575050600654926a52b7d2dcc80cd2e400000092509050565b90939092509050565b5f805f805f805f805f611ae78a600e54600f54611bec565b9250925092505f611af661191f565b90505f805f611b078e878787611c38565b919e509c509a509598509396509194505050505091939550919395565b5f80611b308385611f74565b9050838110156115cb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107bf565b5f611b8b61191f565b90505f611b988383611783565b305f90815260026020526040902054909150611bb49082611b24565b305f90815260026020526040902055505050565b600654611bd59083611742565b600655600754611be59082611b24565b6007555050565b5f808080611bff606461138c8989611783565b90505f611c11606461138c8a89611783565b90505f611c2882611c228b86611742565b90611742565b9992985090965090945050505050565b5f808080611c468886611783565b90505f611c538887611783565b90505f611c608888611783565b90505f611c7182611c228686611742565b939b939a50919850919650505050505050565b5f602080835283518060208501525f5b81811015611cb057858101830151858201604001528201611c94565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461082d575f80fd5b5f8060408385031215611cf5575f80fd5b8235611d0081611cd0565b946020939093013593505050565b5f805f60608486031215611d20575f80fd5b8335611d2b81611cd0565b92506020840135611d3b81611cd0565b929592945050506040919091013590565b5f8083601f840112611d5c575f80fd5b50813567ffffffffffffffff811115611d73575f80fd5b6020830191508360208260051b8501011115611d8d575f80fd5b9250929050565b5f8060208385031215611da5575f80fd5b823567ffffffffffffffff811115611dbb575f80fd5b611dc785828601611d4c565b90969095509350505050565b80358015158114611de2575f80fd5b919050565b5f60208284031215611df7575f80fd5b6115cb82611dd3565b5f60208284031215611e10575f80fd5b81356115cb81611cd0565b5f60208284031215611e2b575f80fd5b5035919050565b5f805f805f8060c08789031215611e47575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f60408486031215611e83575f80fd5b833567ffffffffffffffff811115611e99575f80fd5b611ea586828701611d4c565b9094509250611eb8905060208501611dd3565b90509250925092565b5f8060408385031215611ed2575f80fd5b8235611edd81611cd0565b91506020830135611eed81611cd0565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611f6f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561068b5761068b611f41565b808202811582820484141761068b5761068b611f41565b8181038181111561068b5761068b611f41565b5f60208284031215611fc1575f80fd5b81516115cb81611cd0565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561201c5784516001600160a01b031683529383019391830191600101611ff7565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561204f575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201b250c524ceda74ee30e69d208f585f5cd108e35fea9d4eefd3e9f5620d75bb164736f6c63430008180033
Deployed Bytecode
0x60806040526004361061020a575f3560e01c80637d1db4a511610113578063bd9a3b6d1161009d578063c492f0461161006d578063c492f046146105c5578063d52dfc14146105e4578063dd62ed3e146105f9578063ea1644d51461063d578063f2fde38b1461065c575f80fd5b8063bd9a3b6d1461054f578063bdd795ef1461056e578063bf5976d31461059c578063c3c8cd80146105b1575f80fd5b806395d89b41116100e357806395d89b41146104b257806398a5c315146104dd578063a01abe5c146104fc578063a9059cbb14610511578063b5a6522314610530575f80fd5b80637d1db4a5146104575780638199040e1461046c5780638da5cb5b146104815780638f9a55c01461049d575f80fd5b80633c0a73ae116101945780636fc3eaec116101645780636fc3eaec146103dd57806370a08231146103f1578063715018a61461041057806374010ece146104245780637c519ffb14610443575f80fd5b80633c0a73ae1461036957806349bd5a5e1461037e57806367aadb7e1461039d5780636d8aa8f8146103be575f80fd5b806323b872dd116101da57806323b872dd146102f057806327c8f8351461030f5780632fd689e314610324578063313ce5671461033957806331cc43bd14610354575f80fd5b806306fdde0314610215578063095ea7b3146102635780631694505e1461029257806318160ddd146102c9575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b5060408051808201909152601481527314995d1d5c9b8813db88125b9d995cdd1b595b9d60621b60208201525b60405161025a9190611c84565b60405180910390f35b34801561026e575f80fd5b5061028261027d366004611ce4565b61067b565b604051901515815260200161025a565b34801561029d575f80fd5b506015546102b1906001600160a01b031681565b6040516001600160a01b03909116815260200161025a565b3480156102d4575f80fd5b506a52b7d2dcc80cd2e40000005b60405190815260200161025a565b3480156102fb575f80fd5b5061028261030a366004611d0e565b610691565b34801561031a575f80fd5b506102b161dead81565b34801561032f575f80fd5b506102e260195481565b348015610344575f80fd5b506040516012815260200161025a565b34801561035f575f80fd5b506102e260085481565b348015610374575f80fd5b506102e2600a5481565b348015610389575f80fd5b506016546102b1906001600160a01b031681565b3480156103a8575f80fd5b506103bc6103b7366004611d94565b6106f8565b005b3480156103c9575f80fd5b506103bc6103d8366004611de7565b610796565b3480156103e8575f80fd5b506103bc6107e6565b3480156103fc575f80fd5b506102e261040b366004611e00565b610830565b34801561041b575f80fd5b506103bc610851565b34801561042f575f80fd5b506103bc61043e366004611e1b565b6108c2565b34801561044e575f80fd5b506103bc61096e565b348015610462575f80fd5b506102e260175481565b348015610477575f80fd5b506102e2600c5481565b34801561048c575f80fd5b505f546001600160a01b03166102b1565b3480156104a8575f80fd5b506102e260185481565b3480156104bd575f80fd5b50604080518082019091526003815262524f4960e81b602082015261024d565b3480156104e8575f80fd5b506103bc6104f7366004611e1b565b6109b0565b348015610507575f80fd5b506102e2600b5481565b34801561051c575f80fd5b5061028261052b366004611ce4565b6109de565b34801561053b575f80fd5b506103bc61054a366004611d94565b6109ea565b34801561055a575f80fd5b506103bc610569366004611e32565b610a8c565b348015610579575f80fd5b50610282610588366004611e00565b60126020525f908152604090205460ff1681565b3480156105a7575f80fd5b506102e260095481565b3480156105bc575f80fd5b506103bc610b9c565b3480156105d0575f80fd5b506103bc6105df366004611e71565b610bee565b3480156105ef575f80fd5b506102e2600d5481565b348015610604575f80fd5b506102e2610613366004611ec1565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610648575f80fd5b506103bc610657366004611e1b565b610c81565b348015610667575f80fd5b506103bc610676366004611e00565b610d2d565b5f610687338484610e14565b5060015b92915050565b5f61069d848484610f37565b6106ee84336106e985604051806060016040528060288152602001612069602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906114dd565b610e14565b5060019392505050565b6013546001600160a01b0316336001600160a01b0316148061072d57506014546001600160a01b0316336001600160a01b0316145b610735575f80fd5b5f5b818110156107915760125f84848481811061075457610754611ef8565b90506020020160208101906107699190611e00565b6001600160a01b0316815260208101919091526040015f20805460ff19169055600101610737565b505050565b5f546001600160a01b031633146107c85760405162461bcd60e51b81526004016107bf90611f0c565b60405180910390fd5b60168054911515600160b01b0260ff60b01b19909216919091179055565b6013546001600160a01b0316336001600160a01b0316148061081b57506014546001600160a01b0316336001600160a01b0316145b610823575f80fd5b4761082d81611515565b50565b6001600160a01b0381165f9081526002602052604081205461068b90611550565b5f546001600160a01b0316331461087a5760405162461bcd60e51b81526004016107bf90611f0c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108eb5760405162461bcd60e51b81526004016107bf90611f0c565b6109026103e86a52b7d2dcc80cd2e4000000611f55565b8110156109695760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084016107bf565b601755565b5f546001600160a01b031633146109975760405162461bcd60e51b81526004016107bf90611f0c565b6016805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b031633146109d95760405162461bcd60e51b81526004016107bf90611f0c565b601955565b5f610687338484610f37565b6013546001600160a01b0316336001600160a01b03161480610a1f57506014546001600160a01b0316336001600160a01b0316145b610a27575f80fd5b5f5b8181101561079157600160125f858585818110610a4857610a48611ef8565b9050602002016020810190610a5d9190611e00565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610a29565b5f546001600160a01b03163314610ab55760405162461bcd60e51b81526004016107bf90611f0c565b601982610ac28689611f74565b610acc9190611f74565b1115610b1a5760405162461bcd60e51b815260206004820152601860248201527f544f4b454e3a204275792074617820746f6f20686967682e000000000000000060448201526064016107bf565b601981610b278588611f74565b610b319190611f74565b1115610b7f5760405162461bcd60e51b815260206004820152601960248201527f544f4b454e3a2053656c6c2074617820746f6f20686967682e0000000000000060448201526064016107bf565b600895909555600b93909355600991909155600c55600a55600d55565b6013546001600160a01b0316336001600160a01b03161480610bd157506014546001600160a01b0316336001600160a01b0316145b610bd9575f80fd5b5f610be330610830565b905061082d816115d2565b5f546001600160a01b03163314610c175760405162461bcd60e51b81526004016107bf90611f0c565b5f5b82811015610c7b578160055f868685818110610c3757610c37611ef8565b9050602002016020810190610c4c9190611e00565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c19565b50505050565b5f546001600160a01b03163314610caa5760405162461bcd60e51b81526004016107bf90611f0c565b6103e8610cc36a52b7d2dcc80cd2e40000006005611f87565b610ccd9190611f55565b811015610d285760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016107bf565b601855565b5f546001600160a01b03163314610d565760405162461bcd60e51b81526004016107bf90611f0c565b6001600160a01b038116610dbb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bf565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107bf565b6001600160a01b038216610ed75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107bf565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f9b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107bf565b6001600160a01b038216610ffd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107bf565b5f811161105e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107bf565b5f546001600160a01b0384811691161480159061108857505f546001600160a01b03838116911614155b80156110ac57506001600160a01b0383165f9081526012602052604090205460ff16155b80156110d057506001600160a01b0382165f9081526012602052604090205460ff16155b156113d957601654600160a01b900460ff16611173576001600160a01b0383165f9081526012602052604090205460ff166111735760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016107bf565b6017548111156111c55760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016107bf565b6016546001600160a01b0383811691161461124a57601854816111e784610830565b6111f19190611f74565b1061124a5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016107bf565b5f61125430610830565b601954909150811080159081906112755750601654600160a81b900460ff16155b801561128f57506016546001600160a01b03868116911614155b80156112a45750601654600160b01b900460ff165b80156112c857506001600160a01b0385165f9081526005602052604090205460ff16155b80156112ec57506001600160a01b0384165f9081526005602052604090205460ff16155b156113d6576019546112ff906014611f87565b821061131657601954611313906014611f87565b91505b5f6002600c54600d548561132a9190611f87565b6113349190611f55565b61133e9190611f55565b90505f61134b8483611742565b905047611357826115d2565b5f6113624783611742565b90505f611392600c5461138c611385600d54600c5461174290919063ffffffff16565b8590611783565b90611801565b90505f61139f8284611f9e565b90505f861180156113af57505f81115b156113be576113be8682611842565b4780156113ce576113ce47611515565b505050505050505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061141957506001600160a01b0383165f9081526005602052604090205460ff165b8061144b57506016546001600160a01b0385811691161480159061144b57506016546001600160a01b03848116911614155b1561145757505f6114d1565b6016546001600160a01b03858116911614801561148257506015546001600160a01b03848116911614155b1561149457600854600e55600954600f555b6016546001600160a01b0384811691161480156114bf57506015546001600160a01b03858116911614155b156114d157600b54600e55600c54600f555b610c7b848484846118f1565b5f81848411156115005760405162461bcd60e51b81526004016107bf9190611c84565b505f61150c8486611f9e565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561154c573d5f803e3d5ffd5b5050565b5f6006548211156115b65760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107bf565b5f6115bf61191f565b90506115cb8382611801565b9392505050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061161857611618611ef8565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561166f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190611fb1565b816001815181106116a6576116a6611ef8565b6001600160a01b0392831660209182029290920101526015546116cc9130911684610e14565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906117049085905f90869030904290600401611fcc565b5f604051808303815f87803b15801561171b575f80fd5b505af115801561172d573d5f803e3d5ffd5b50506016805460ff60a81b1916905550505050565b5f6115cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114dd565b5f825f0361179257505f61068b565b5f61179d8385611f87565b9050826117aa8583611f55565b146115cb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107bf565b5f6115cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611940565b60155461185a9030906001600160a01b031684610e14565b60155460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156118c5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118ea919061203d565b5050505050565b806118fe576118fe61196c565b611909848484611999565b80610c7b57610c7b601054600e55601154600f55565b5f805f61192a611a8a565b90925090506119398282611801565b9250505090565b5f81836119605760405162461bcd60e51b81526004016107bf9190611c84565b505f61150c8486611f55565b600e5415801561197c5750600f54155b1561198357565b600e8054601055600f80546011555f9182905555565b5f805f805f806119a887611acf565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506119d99087611742565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054611a079086611b24565b6001600160a01b0389165f90815260026020526040902055611a2881611b82565b611a328483611bc8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a7791815260200190565b60405180910390a3505050505050505050565b6006545f9081906a52b7d2dcc80cd2e4000000611aa78282611801565b821015611ac6575050600654926a52b7d2dcc80cd2e400000092509050565b90939092509050565b5f805f805f805f805f611ae78a600e54600f54611bec565b9250925092505f611af661191f565b90505f805f611b078e878787611c38565b919e509c509a509598509396509194505050505091939550919395565b5f80611b308385611f74565b9050838110156115cb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107bf565b5f611b8b61191f565b90505f611b988383611783565b305f90815260026020526040902054909150611bb49082611b24565b305f90815260026020526040902055505050565b600654611bd59083611742565b600655600754611be59082611b24565b6007555050565b5f808080611bff606461138c8989611783565b90505f611c11606461138c8a89611783565b90505f611c2882611c228b86611742565b90611742565b9992985090965090945050505050565b5f808080611c468886611783565b90505f611c538887611783565b90505f611c608888611783565b90505f611c7182611c228686611742565b939b939a50919850919650505050505050565b5f602080835283518060208501525f5b81811015611cb057858101830151858201604001528201611c94565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461082d575f80fd5b5f8060408385031215611cf5575f80fd5b8235611d0081611cd0565b946020939093013593505050565b5f805f60608486031215611d20575f80fd5b8335611d2b81611cd0565b92506020840135611d3b81611cd0565b929592945050506040919091013590565b5f8083601f840112611d5c575f80fd5b50813567ffffffffffffffff811115611d73575f80fd5b6020830191508360208260051b8501011115611d8d575f80fd5b9250929050565b5f8060208385031215611da5575f80fd5b823567ffffffffffffffff811115611dbb575f80fd5b611dc785828601611d4c565b90969095509350505050565b80358015158114611de2575f80fd5b919050565b5f60208284031215611df7575f80fd5b6115cb82611dd3565b5f60208284031215611e10575f80fd5b81356115cb81611cd0565b5f60208284031215611e2b575f80fd5b5035919050565b5f805f805f8060c08789031215611e47575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f60408486031215611e83575f80fd5b833567ffffffffffffffff811115611e99575f80fd5b611ea586828701611d4c565b9094509250611eb8905060208501611dd3565b90509250925092565b5f8060408385031215611ed2575f80fd5b8235611edd81611cd0565b91506020830135611eed81611cd0565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611f6f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561068b5761068b611f41565b808202811582820484141761068b5761068b611f41565b8181038181111561068b5761068b611f41565b5f60208284031215611fc1575f80fd5b81516115cb81611cd0565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561201c5784516001600160a01b031683529383019391830191600101611ff7565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561204f575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201b250c524ceda74ee30e69d208f585f5cd108e35fea9d4eefd3e9f5620d75bb164736f6c63430008180033
Deployed Bytecode Sourcemap
4283:15829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6940:83;;;;;;;;;;-1:-1:-1;7010:5:0;;;;;;;;;;;;-1:-1:-1;;;7010:5:0;;;;6940:83;;;;;;;:::i;:::-;;;;;;;;7865:193;;;;;;;;;;-1:-1:-1;7865:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7865:193:0;1023:187:1;5739:41:0;;;;;;;;;;-1:-1:-1;5739:41:0;;;;-1:-1:-1;;;;;5739:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5739:41:0;1215:229:1;7217:95:0;;;;;;;;;;-1:-1:-1;4837:20:0;7217:95;;;1595:25:1;;;1583:2;1568:18;7217:95:0;1449:177:1;8066:446:0;;;;;;;;;;-1:-1:-1;8066:446:0;;;;;:::i;:::-;;:::i;5677:53::-;;;;;;;;;;;;5723:6;5677:53;;6050:52;;;;;;;;;;;;;;;;7126:83;;;;;;;;;;-1:-1:-1;7126:83:0;;4510:2;2442:36:1;;2430:2;2415:18;7126:83:0;2300:184:1;4953:33:0;;;;;;;;;;;;;;;;5031:37;;;;;;;;;;;;;;;;5787:28;;;;;;;;;;-1:-1:-1;5787:28:0;;;;-1:-1:-1;;;;;5787:28:0;;;19836:273;;;;;;;;;;-1:-1:-1;19836:273:0;;;;;:::i;:::-;;:::i;:::-;;18180:101;;;;;;;;;;-1:-1:-1;18180:101:0;;;;;:::i;:::-;;:::i;13644:235::-;;;;;;;;;;;;;:::i;7320:138::-;;;;;;;;;;-1:-1:-1;7320:138:0;;;;;:::i;:::-;;:::i;1770:148::-;;;;;;;;;;;;;:::i;18320:210::-;;;;;;;;;;-1:-1:-1;18320:210:0;;;;;:::i;:::-;;:::i;13287:105::-;;;;;;;;;;;;;:::i;5938:48::-;;;;;;;;;;;;;;;;5116:32;;;;;;;;;;;;;;;;1556:79;;;;;;;;;;-1:-1:-1;1594:7:0;1621:6;-1:-1:-1;;;;;1621:6:0;1556:79;;5993:50;;;;;;;;;;;;;;;;7031:87;;;;;;;;;;-1:-1:-1;7103:7:0;;;;;;;;;;;;-1:-1:-1;;;7103:7:0;;;;7031:87;;17989:139;;;;;;;;;;-1:-1:-1;17989:139:0;;;;;:::i;:::-;;:::i;5075:34::-;;;;;;;;;;;;;;;;7466:199;;;;;;;;;;-1:-1:-1;7466:199:0;;;;;:::i;:::-;;:::i;19556:272::-;;;;;;;;;;-1:-1:-1;19556:272:0;;;;;:::i;:::-;;:::i;17285:652::-;;;;;;;;;;-1:-1:-1;17285:652:0;;;;;:::i;:::-;;:::i;5422:42::-;;;;;;;;;;-1:-1:-1;5422:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4993:31;;;;;;;;;;;;;;;;13400:236;;;;;;;;;;;;;:::i;18789:234::-;;;;;;;;;;-1:-1:-1;18789:234:0;;;;;:::i;:::-;;:::i;5155:38::-;;;;;;;;;;;;;;;;7673:184;;;;;;;;;;-1:-1:-1;7673:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7822:18:0;;;7790:7;7822:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7673:184;18569:212;;;;;;;;;;-1:-1:-1;18569:212:0;;;;;:::i;:::-;;:::i;1926:244::-;;;;;;;;;;-1:-1:-1;1926:244:0;;;;;:::i;:::-;;:::i;7865:193::-;7967:4;7989:39;395:10;8012:7;8021:6;7989:8;:39::i;:::-;-1:-1:-1;8046:4:0;7865:193;;;;;:::o;8066:446::-;8198:4;8215:36;8225:6;8233:9;8244:6;8215:9;:36::i;:::-;8262:220;8285:6;395:10;8333:138;8389:6;8333:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8333:19:0;;;;;;:11;:19;;;;;;;;395:10;8333:33;;;;;;;;;;:37;:138::i;:::-;8262:8;:220::i;:::-;-1:-1:-1;8500:4:0;8066:446;;;;;:::o;19836:273::-;19933:19;;-1:-1:-1;;;;;19933:19:0;395:10;-1:-1:-1;;;;;19917:35:0;;:72;;;-1:-1:-1;19972:17:0;;-1:-1:-1;;;;;19972:17:0;395:10;-1:-1:-1;;;;;19956:33:0;;19917:72;19909:81;;;;;;20005:9;20001:101;20020:19;;;20001:101;;;20068:9;:22;20078:8;;20087:1;20078:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20068:22:0;;;;;;;;;;;;-1:-1:-1;20068:22:0;20061:29;;-1:-1:-1;;20061:29:0;;;;20041:3;20001:101;;;;19836:273;;:::o;18180:101::-;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;;;;;;;;;18247:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;18247:26:0::1;-1:-1:-1::0;;;;18247:26:0;;::::1;::::0;;;::::1;::::0;;18180:101::o;13644:235::-;13710:19;;-1:-1:-1;;;;;13710:19:0;395:10;-1:-1:-1;;;;;13694:35:0;;:72;;;-1:-1:-1;13749:17:0;;-1:-1:-1;;;;;13749:17:0;395:10;-1:-1:-1;;;;;13733:33:0;;13694:72;13686:81;;;;;;13807:21;13839:32;13807:21;13839:12;:32::i;:::-;13675:204;13644:235::o;7320:138::-;-1:-1:-1;;;;;7433:16:0;;7386:7;7433:16;;;:7;:16;;;;;;7413:37;;:19;:37::i;1770:148::-;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;1877:1:::1;1861:6:::0;;1840:40:::1;::::0;-1:-1:-1;;;;;1861:6:0;;::::1;::::0;1840:40:::1;::::0;1877:1;;1840:40:::1;1908:1;1891:19:::0;;-1:-1:-1;;;;;;1891:19:0::1;::::0;;1770:148::o;18320:210::-;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;18418:14:::1;18428:4;4837:20;18418:14;:::i;:::-;18402:11;:31;;18394:91;;;::::0;-1:-1:-1;;;18394:91:0;;6570:2:1;18394:91:0::1;::::0;::::1;6552:21:1::0;6609:2;6589:18;;;6582:30;6648:34;6628:18;;;6621:62;-1:-1:-1;;;6699:18:1;;;6692:45;6754:19;;18394:91:0::1;6368:411:1::0;18394:91:0::1;18496:12;:26:::0;18320:210::o;13287:105::-;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;13337:11:::1;:18:::0;;-1:-1:-1;;;;13366:18:0;-1:-1:-1;;;13366:18:0;;;13287:105::o;17989:139::-;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;18080:19:::1;:40:::0;17989:139::o;7466:199::-;7571:4;7593:42;395:10;7617:9;7628:6;7593:9;:42::i;19556:272::-;19652:19;;-1:-1:-1;;;;;19652:19:0;395:10;-1:-1:-1;;;;;19636:35:0;;:72;;;-1:-1:-1;19691:17:0;;-1:-1:-1;;;;;19691:17:0;395:10;-1:-1:-1;;;;;19675:33:0;;19636:72;19628:81;;;;;;19724:9;19720:101;19739:19;;;19720:101;;;19805:4;19780:9;:22;19790:8;;19799:1;19790:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19780:22:0;;;;;;;;;;;;-1:-1:-1;19780:22:0;:29;;-1:-1:-1;;19780:29:0;;;;;;;;;;-1:-1:-1;19760:3:0;19720:101;;17285:652;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;17533:2:::1;17512:17:::0;17482:27:::1;17498:11:::0;17482:13;:27:::1;:::i;:::-;:47;;;;:::i;:::-;:53;;17474:90;;;::::0;-1:-1:-1;;;17474:90:0;;7116:2:1;17474:90:0::1;::::0;::::1;7098:21:1::0;7155:2;7135:18;;;7128:30;7194:26;7174:18;;;7167:54;7238:18;;17474:90:0::1;6914:348:1::0;17474:90:0::1;17637:2;17615:18:::0;17583:29:::1;17600:12:::0;17583:14;:29:::1;:::i;:::-;:50;;;;:::i;:::-;:56;;17575:94;;;::::0;-1:-1:-1;;;17575:94:0;;7469:2:1;17575:94:0::1;::::0;::::1;7451:21:1::0;7508:2;7488:18;;;7481:30;7547:27;7527:18;;;7520:55;7592:18;;17575:94:0::1;7267:349:1::0;17575:94:0::1;17680:14;:30:::0;;;;17721:15:::1;:32:::0;;;;17764:12:::1;:26:::0;;;;17801:13:::1;:28:::0;17840:18:::1;:38:::0;17889:19:::1;:40:::0;17285:652::o;13400:236::-;13466:19;;-1:-1:-1;;;;;13466:19:0;395:10;-1:-1:-1;;;;;13450:35:0;;:72;;;-1:-1:-1;13505:17:0;;-1:-1:-1;;;;;13505:17:0;395:10;-1:-1:-1;;;;;13489:33:0;;13450:72;13442:81;;;;;;13534:23;13560:24;13578:4;13560:9;:24::i;:::-;13534:50;;13595:33;13612:15;13595:16;:33::i;18789:234::-;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;18906:9:::1;18902:114;18921:19:::0;;::::1;18902:114;;;18996:8;18962:18;:31;18981:8;;18990:1;18981:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18962:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18962:31:0;:42;;-1:-1:-1;;18962:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18942:3:0::1;18902:114;;;;18789:234:::0;;;:::o;18569:212::-;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;18686:4:::1;18672:11;4837:20;18682:1;18672:11;:::i;:::-;:18;;;;:::i;:::-;18654:13;:37;;18646:86;;;::::0;-1:-1:-1;;;18646:86:0;;7996:2:1;18646:86:0::1;::::0;::::1;7978:21:1::0;8035:2;8015:18;;;8008:30;8074:34;8054:18;;;8047:62;-1:-1:-1;;;8125:18:1;;;8118:34;8169:19;;18646:86:0::1;7794:400:1::0;18646:86:0::1;18743:14;:30:::0;18569:212::o;1926:244::-;1683:6;;-1:-1:-1;;;;;1683:6:0;395:10;1683:22;1675:67;;;;-1:-1:-1;;;1675:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2015:22:0;::::1;2007:73;;;::::0;-1:-1:-1;;;2007:73:0;;8401:2:1;2007:73:0::1;::::0;::::1;8383:21:1::0;8440:2;8420:18;;;8413:30;8479:34;8459:18;;;8452:62;-1:-1:-1;;;8530:18:1;;;8523:36;8576:19;;2007:73:0::1;8199:402:1::0;2007:73:0::1;2117:6;::::0;;2096:38:::1;::::0;-1:-1:-1;;;;;2096:38:0;;::::1;::::0;2117:6;::::1;::::0;2096:38:::1;::::0;::::1;2145:6;:17:::0;;-1:-1:-1;;;;;;2145:17:0::1;-1:-1:-1::0;;;;;2145:17:0;;;::::1;::::0;;;::::1;::::0;;1926:244::o;9203:369::-;-1:-1:-1;;;;;9330:19:0;;9322:68;;;;-1:-1:-1;;;9322:68:0;;8808:2:1;9322:68:0;;;8790:21:1;8847:2;8827:18;;;8820:30;8886:34;8866:18;;;8859:62;-1:-1:-1;;;8937:18:1;;;8930:34;8981:19;;9322:68:0;8606:400:1;9322:68:0;-1:-1:-1;;;;;9409:21:0;;9401:68;;;;-1:-1:-1;;;9401:68:0;;9213:2:1;9401:68:0;;;9195:21:1;9252:2;9232:18;;;9225:30;9291:34;9271:18;;;9264:62;-1:-1:-1;;;9342:18:1;;;9335:32;9384:19;;9401:68:0;9011:398:1;9401:68:0;-1:-1:-1;;;;;9480:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9532:32;;1595:25:1;;;9532:32:0;;1568:18:1;9532:32:0;;;;;;;9203:369;;;:::o;9580:3101::-;-1:-1:-1;;;;;9702:18:0;;9694:68;;;;-1:-1:-1;;;9694:68:0;;9616:2:1;9694:68:0;;;9598:21:1;9655:2;9635:18;;;9628:30;9694:34;9674:18;;;9667:62;-1:-1:-1;;;9745:18:1;;;9738:35;9790:19;;9694:68:0;9414:401:1;9694:68:0;-1:-1:-1;;;;;9781:16:0;;9773:64;;;;-1:-1:-1;;;9773:64:0;;10022:2:1;9773:64:0;;;10004:21:1;10061:2;10041:18;;;10034:30;10100:34;10080:18;;;10073:62;-1:-1:-1;;;10151:18:1;;;10144:33;10194:19;;9773:64:0;9820:399:1;9773:64:0;9865:1;9856:6;:10;9848:64;;;;-1:-1:-1;;;9848:64:0;;10426:2:1;9848:64:0;;;10408:21:1;10465:2;10445:18;;;10438:30;10504:34;10484:18;;;10477:62;-1:-1:-1;;;10555:18:1;;;10548:39;10604:19;;9848:64:0;10224:405:1;9848:64:0;1594:7;1621:6;-1:-1:-1;;;;;9929:15:0;;;1621:6;;9929:15;;;;:32;;-1:-1:-1;1594:7:0;1621:6;-1:-1:-1;;;;;9948:13:0;;;1621:6;;9948:13;;9929:32;:52;;;;-1:-1:-1;;;;;;9966:15:0;;;;;;:9;:15;;;;;;;;9965:16;9929:52;:70;;;;-1:-1:-1;;;;;;9986:13:0;;;;;;:9;:13;;;;;;;;9985:14;9929:70;9925:2030;;;10056:11;;-1:-1:-1;;;10056:11:0;;;;10051:144;;-1:-1:-1;;;;;10096:15:0;;;;;;:9;:15;;;;;;;;10088:91;;;;-1:-1:-1;;;10088:91:0;;10836:2:1;10088:91:0;;;10818:21:1;10875:2;10855:18;;;10848:30;10914:34;10894:18;;;10887:62;10985:33;10965:18;;;10958:61;11036:19;;10088:91:0;10634:427:1;10088:91:0;10229:12;;10219:6;:22;;10211:63;;;;-1:-1:-1;;;10211:63:0;;11268:2:1;10211:63:0;;;11250:21:1;11307:2;11287:18;;;11280:30;11346;11326:18;;;11319:58;11394:18;;10211:63:0;11066:352:1;10211:63:0;10300:13;;-1:-1:-1;;;;;10294:19:0;;;10300:13;;10294:19;10291:146;;10367:14;;10358:6;10342:13;10352:2;10342:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10334:87;;;;-1:-1:-1;;;10334:87:0;;11625:2:1;10334:87:0;;;11607:21:1;11664:2;11644:18;;;11637:30;11703:34;11683:18;;;11676:62;-1:-1:-1;;;11754:18:1;;;11747:33;11797:19;;10334:87:0;11423:399:1;10334:87:0;10453:28;10484:24;10502:4;10484:9;:24::i;:::-;10562:19;;10453:55;;-1:-1:-1;10538:43:0;;;;;;;10602:18;;-1:-1:-1;10614:6:0;;-1:-1:-1;;;10614:6:0;;;;10613:7;10602:18;:43;;;;-1:-1:-1;10632:13:0;;-1:-1:-1;;;;;10624:21:0;;;10632:13;;10624:21;;10602:43;:58;;;;-1:-1:-1;10649:11:0;;-1:-1:-1;;;10649:11:0;;;;10602:58;:87;;;;-1:-1:-1;;;;;;10665:24:0;;;;;;:18;:24;;;;;;;;10664:25;10602:87;:114;;;;-1:-1:-1;;;;;;10694:22:0;;;;;;:18;:22;;;;;;;;10693:23;10602:114;10598:1346;;;10765:19;;:24;;10787:2;10765:24;:::i;:::-;10741:20;:48;10737:144;;10837:19;;:24;;10859:2;10837:24;:::i;:::-;10814:47;;10737:144;10958:23;11047:1;11031:13;;11008:19;;10985:20;:42;;;;:::i;:::-;10984:60;;;;:::i;:::-;:64;;;;:::i;:::-;10958:90;-1:-1:-1;11069:26:0;11098:41;:20;10958:90;11098:24;:41::i;:::-;11069:70;-1:-1:-1;11196:21:0;11246:36;11069:70;11246:16;:36::i;:::-;11311:18;11332:44;:21;11358:17;11332:25;:44::i;:::-;11311:65;;11397:20;11420:73;11479:13;;11420:54;11435:38;11453:19;;11435:13;;:17;;:38;;;;:::i;:::-;11420:10;;:14;:54::i;:::-;:58;;:73::i;:::-;11397:96;-1:-1:-1;11522:23:0;11548:28;11397:96;11548:10;:28;:::i;:::-;11522:54;;11619:1;11601:15;:19;:42;;;;;11642:1;11624:15;:19;11601:42;11597:137;;;11668:46;11681:15;11698;11668:12;:46::i;:::-;11781:21;11827:22;;11823:106;;11874:35;11887:21;11874:12;:35::i;:::-;10718:1226;;;;;;;10598:1346;10001:1954;;9925:2030;-1:-1:-1;;;;;12031:24:0;;11967:12;12031:24;;;:18;:24;;;;;;11982:4;;12031:24;;;:50;;-1:-1:-1;;;;;;12059:22:0;;;;;;:18;:22;;;;;;;;12031:50;12030:102;;;-1:-1:-1;12095:13:0;;-1:-1:-1;;;;;12087:21:0;;;12095:13;;12087:21;;;;:44;;-1:-1:-1;12118:13:0;;-1:-1:-1;;;;;12112:19:0;;;12118:13;;12112:19;;12087:44;12026:594;;;-1:-1:-1;12159:5:0;12026:594;;;12242:13;;-1:-1:-1;;;;;12234:21:0;;;12242:13;;12234:21;:55;;;;-1:-1:-1;12273:15:0;;-1:-1:-1;;;;;12259:30:0;;;12273:15;;12259:30;;12234:55;12231:162;;;12322:14;;12310:9;:26;12365:12;;12355:7;:22;12231:162;12452:13;;-1:-1:-1;;;;;12446:19:0;;;12452:13;;12446:19;:55;;;;-1:-1:-1;12485:15:0;;-1:-1:-1;;;;;12469:32:0;;;12485:15;;12469:32;;12446:55;12442:165;;;12534:15;;12522:9;:27;12578:13;;12568:7;:23;12442:165;12632:41;12647:4;12653:2;12657:6;12665:7;12632:14;:41::i;2534:224::-;2654:7;2690:12;2682:6;;;;2674:29;;;;-1:-1:-1;;;2674:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2714:9:0;2726:5;2730:1;2726;:5;:::i;:::-;2714:17;2534:224;-1:-1:-1;;;;;2534:224:0:o;13180:99::-;13237:17;;:34;;-1:-1:-1;;;;;13237:17:0;;;;:34;;;;;13264:6;;13237:17;:34;:17;:34;13264:6;13237:17;:34;;;;;;;;;;;;;;;;;;;;;13180:99;:::o;8520:323::-;8615:7;8673;;8662;:18;;8640:110;;;;-1:-1:-1;;;8640:110:0;;12162:2:1;8640:110:0;;;12144:21:1;12201:2;12181:18;;;12174:30;12240:34;12220:18;;;12213:62;-1:-1:-1;;;12291:18:1;;;12284:40;12341:19;;8640:110:0;11960:406:1;8640:110:0;8761:19;8783:10;:8;:10::i;:::-;8761:32;-1:-1:-1;8811:24:0;:7;8761:32;8811:11;:24::i;:::-;8804:31;8520:323;-1:-1:-1;;;8520:323:0:o;12689:483::-;6196:6;:13;;-1:-1:-1;;;;6196:13:0;-1:-1:-1;;;6196:13:0;;;12791:16:::1;::::0;;12805:1:::1;12791:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12791:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12791:16:0::1;12767:40;;12836:4;12818;12823:1;12818:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12818:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12862:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12862:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12818:7;;12862:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12852:4;12857:1;12852:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12852:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12927:15:::1;::::0;12895:62:::1;::::0;12912:4:::1;::::0;12927:15:::1;12945:11:::0;12895:8:::1;:62::i;:::-;12968:15;::::0;:196:::1;::::0;-1:-1:-1;;;12968:196:0;;-1:-1:-1;;;;;12968:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13049:11;;12968:15:::1;::::0;13091:4;;13118::::1;::::0;13138:15:::1;::::0;12968:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6232:6:0;:14;;-1:-1:-1;;;;6232:14:0;;;-1:-1:-1;;;;12689:483:0:o;2390:136::-;2448:7;2475:43;2479:1;2482;2475:43;;;;;;;;;;;;;;;;;:3;:43::i;2766:246::-;2824:7;2848:1;2853;2848:6;2844:47;;-1:-1:-1;2878:1:0;2871:8;;2844:47;2901:9;2913:5;2917:1;2913;:5;:::i;:::-;2901:17;-1:-1:-1;2946:1:0;2937:5;2941:1;2901:17;2937:5;:::i;:::-;:10;2929:56;;;;-1:-1:-1;;;2929:56:0;;13946:2:1;2929:56:0;;;13928:21:1;13985:2;13965:18;;;13958:30;14024:34;14004:18;;;13997:62;-1:-1:-1;;;14075:18:1;;;14068:31;14116:19;;2929:56:0;13744:397:1;3020:132:0;3078:7;3105:39;3109:1;3112;3105:39;;;;;;;;;;;;;;;;;:3;:39::i;19031:517::-;19211:15;;19179:62;;19196:4;;-1:-1:-1;;;;;19211:15:0;19229:11;19179:8;:62::i;:::-;19284:15;;:256;;-1:-1:-1;;;19284:256:0;;19356:4;19284:256;;;14487:34:1;14537:18;;;14530:34;;;19284:15:0;14580:18:1;;;14573:34;;;14623:18;;;14616:34;5723:6:0;14666:19:1;;;14659:44;19514:15:0;14719:19:1;;;14712:35;-1:-1:-1;;;;;19284:15:0;;;;:31;;19323:9;;14421:19:1;;19284:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19031:517;;:::o;13887:282::-;14043:7;14038:28;;14052:14;:12;:14::i;:::-;14077:44;14095:6;14103:9;14114:6;14077:17;:44::i;:::-;14137:7;14132:29;;14146:15;9134:17;;9122:9;:29;9172:15;;9162:7;:25;9078:117;16848:164;16890:7;16911:15;16928;16947:19;:17;:19::i;:::-;16910:56;;-1:-1:-1;16910:56:0;-1:-1:-1;16984:20:0;16910:56;;16984:11;:20::i;:::-;16977:27;;;;16848:164;:::o;3160:223::-;3280:7;3315:12;3308:5;3300:28;;;;-1:-1:-1;;;3300:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3339:9:0;3351:5;3355:1;3351;:5;:::i;8851:219::-;8898:9;;:14;:30;;;;-1:-1:-1;8916:7:0;;:12;8898:30;8894:43;;;8851:219::o;8894:43::-;8969:9;;;8949:17;:29;9007:7;;;8989:15;:25;-1:-1:-1;9027:13:0;;;;9051:11;8851:219::o;14177:610::-;14324:15;14354:23;14392:12;14419:23;14457:12;14484:13;14511:19;14522:7;14511:10;:19::i;:::-;-1:-1:-1;;;;;14559:15:0;;;;;;:7;:15;;;;;;14309:221;;-1:-1:-1;14309:221:0;;-1:-1:-1;14309:221:0;;-1:-1:-1;14309:221:0;-1:-1:-1;14309:221:0;-1:-1:-1;14309:221:0;-1:-1:-1;14559:28:0;;14309:221;14559:19;:28::i;:::-;-1:-1:-1;;;;;14541:15:0;;;;;;;:7;:15;;;;;;:46;;;;14619:18;;;;;;;:39;;14642:15;14619:22;:39::i;:::-;-1:-1:-1;;;;;14598:18:0;;;;;;:7;:18;;;;;:60;14669:16;14679:5;14669:9;:16::i;:::-;14696:23;14708:4;14714;14696:11;:23::i;:::-;14752:9;-1:-1:-1;;;;;14735:44:0;14744:6;-1:-1:-1;;;;;14735:44:0;;14763:15;14735:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;14735:44:0;;;;;;;;14298:489;;;;;;14177:610;;;:::o;17020:257::-;17118:7;;17071;;;;4837:20;17186;17118:7;4837:20;17186:11;:20::i;:::-;17176:7;:30;17172:61;;;-1:-1:-1;;17216:7:0;;;4837:20;;-1:-1:-1;17020:257:0;-1:-1:-1;17020:257:0:o;17172:61::-;17252:7;;17261;;-1:-1:-1;17020:257:0;-1:-1:-1;17020:257:0:o;15206:615::-;15306:7;15328;15350;15372;15394;15416;15452:23;15477:12;15491:13;15521:40;15533:7;15542:9;;15553:7;;15521:11;:40::i;:::-;15451:110;;;;;;15572:19;15594:10;:8;:10::i;:::-;15572:32;;15616:15;15633:23;15658:12;15687:46;15699:7;15708:4;15714:5;15721:11;15687;:46::i;:::-;15615:118;;-1:-1:-1;15615:118:0;-1:-1:-1;15615:118:0;-1:-1:-1;15784:15:0;;-1:-1:-1;15801:4:0;;-1:-1:-1;15807:5:0;;-1:-1:-1;;;;;15206:615:0;;;;;;;:::o;2203:179::-;2261:7;;2293:5;2297:1;2293;:5;:::i;:::-;2281:17;;2322:1;2317;:6;;2309:46;;;;-1:-1:-1;;;2309:46:0;;15271:2:1;2309:46:0;;;15253:21:1;15310:2;15290:18;;;15283:30;15349:29;15329:18;;;15322:57;15396:18;;2309:46:0;15069:351:1;14795:211:0;14848:19;14870:10;:8;:10::i;:::-;14848:32;-1:-1:-1;14891:13:0;14907:22;:5;14848:32;14907:9;:22::i;:::-;14981:4;14965:22;;;;:7;:22;;;;;;14891:38;;-1:-1:-1;14965:33:0;;14891:38;14965:26;:33::i;:::-;14956:4;14940:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14795:211:0:o;15014:147::-;15092:7;;:17;;15104:4;15092:11;:17::i;:::-;15082:7;:27;15133:10;;:20;;15148:4;15133:14;:20::i;:::-;15120:10;:33;-1:-1:-1;;15014:147:0:o;15829:469::-;15998:7;;;;16092:30;16118:3;16092:21;:7;16104:8;16092:11;:21::i;:30::-;16077:45;-1:-1:-1;16133:13:0;16149:28;16173:3;16149:19;:7;16161:6;16149:11;:19::i;:28::-;16133:44;-1:-1:-1;16188:23:0;16214:28;16133:44;16214:17;:7;16226:4;16214:11;:17::i;:::-;:21;;:28::i;:::-;16188:54;16278:4;;-1:-1:-1;16284:5:0;;-1:-1:-1;15829:469:0;;-1:-1:-1;;;;;15829:469:0:o;16306:534::-;16500:7;;;;16597:24;:7;16609:11;16597;:24::i;:::-;16579:42;-1:-1:-1;16632:12:0;16647:21;:4;16656:11;16647:8;:21::i;:::-;16632:36;-1:-1:-1;16679:13:0;16695:22;:5;16705:11;16695:9;:22::i;:::-;16679:38;-1:-1:-1;16728:23:0;16754:28;16679:38;16754:17;:7;16766:4;16754:11;:17::i;:28::-;16801:7;;;;-1:-1:-1;16827:4:0;;-1:-1:-1;16306:534:0;;-1:-1:-1;;;;;;;16306:534:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:367::-;2552:8;2562:6;2616:3;2609:4;2601:6;2597:17;2593:27;2583:55;;2634:1;2631;2624:12;2583:55;-1:-1:-1;2657:20:1;;2700:18;2689:30;;2686:50;;;2732:1;2729;2722:12;2686:50;2769:4;2761:6;2757:17;2745:29;;2829:3;2822:4;2812:6;2809:1;2805:14;2797:6;2793:27;2789:38;2786:47;2783:67;;;2846:1;2843;2836:12;2783:67;2489:367;;;;;:::o;2861:437::-;2947:6;2955;3008:2;2996:9;2987:7;2983:23;2979:32;2976:52;;;3024:1;3021;3014:12;2976:52;3064:9;3051:23;3097:18;3089:6;3086:30;3083:50;;;3129:1;3126;3119:12;3083:50;3168:70;3230:7;3221:6;3210:9;3206:22;3168:70;:::i;:::-;3257:8;;3142:96;;-1:-1:-1;2861:437:1;-1:-1:-1;;;;2861:437:1:o;3303:160::-;3368:20;;3424:13;;3417:21;3407:32;;3397:60;;3453:1;3450;3443:12;3397:60;3303:160;;;:::o;3468:180::-;3524:6;3577:2;3565:9;3556:7;3552:23;3548:32;3545:52;;;3593:1;3590;3583:12;3545:52;3616:26;3632:9;3616:26;:::i;3653:247::-;3712:6;3765:2;3753:9;3744:7;3740:23;3736:32;3733:52;;;3781:1;3778;3771:12;3733:52;3820:9;3807:23;3839:31;3864:5;3839:31;:::i;3905:180::-;3964:6;4017:2;4005:9;3996:7;3992:23;3988:32;3985:52;;;4033:1;4030;4023:12;3985:52;-1:-1:-1;4056:23:1;;3905:180;-1:-1:-1;3905:180:1:o;4090:523::-;4194:6;4202;4210;4218;4226;4234;4287:3;4275:9;4266:7;4262:23;4258:33;4255:53;;;4304:1;4301;4294:12;4255:53;-1:-1:-1;;4327:23:1;;;4397:2;4382:18;;4369:32;;-1:-1:-1;4448:2:1;4433:18;;4420:32;;4499:2;4484:18;;4471:32;;-1:-1:-1;4550:3:1;4535:19;;4522:33;;-1:-1:-1;4602:3:1;4587:19;4574:33;;-1:-1:-1;4090:523:1;-1:-1:-1;4090:523:1:o;4618:505::-;4710:6;4718;4726;4779:2;4767:9;4758:7;4754:23;4750:32;4747:52;;;4795:1;4792;4785:12;4747:52;4835:9;4822:23;4868:18;4860:6;4857:30;4854:50;;;4900:1;4897;4890:12;4854:50;4939:70;5001:7;4992:6;4981:9;4977:22;4939:70;:::i;:::-;5028:8;;-1:-1:-1;4913:96:1;-1:-1:-1;5082:35:1;;-1:-1:-1;5113:2:1;5098:18;;5082:35;:::i;:::-;5072:45;;4618:505;;;;;:::o;5128:388::-;5196:6;5204;5257:2;5245:9;5236:7;5232:23;5228:32;5225:52;;;5273:1;5270;5263:12;5225:52;5312:9;5299:23;5331:31;5356:5;5331:31;:::i;:::-;5381:5;-1:-1:-1;5438:2:1;5423:18;;5410:32;5451:33;5410:32;5451:33;:::i;:::-;5503:7;5493:17;;;5128:388;;;;;:::o;5521:127::-;5582:10;5577:3;5573:20;5570:1;5563:31;5613:4;5610:1;5603:15;5637:4;5634:1;5627:15;5653:356;5855:2;5837:21;;;5874:18;;;5867:30;5933:34;5928:2;5913:18;;5906:62;6000:2;5985:18;;5653:356::o;6014:127::-;6075:10;6070:3;6066:20;6063:1;6056:31;6106:4;6103:1;6096:15;6130:4;6127:1;6120:15;6146:217;6186:1;6212;6202:132;;6256:10;6251:3;6247:20;6244:1;6237:31;6291:4;6288:1;6281:15;6319:4;6316:1;6309:15;6202:132;-1:-1:-1;6348:9:1;;6146:217::o;6784:125::-;6849:9;;;6870:10;;;6867:36;;;6883:18;;:::i;7621:168::-;7694:9;;;7725;;7742:15;;;7736:22;;7722:37;7712:71;;7763:18;;:::i;11827:128::-;11894:9;;;11915:11;;;11912:37;;;11929:18;;:::i;12503:251::-;12573:6;12626:2;12614:9;12605:7;12601:23;12597:32;12594:52;;;12642:1;12639;12632:12;12594:52;12674:9;12668:16;12693:31;12718:5;12693:31;:::i;12759:980::-;13021:4;13069:3;13058:9;13054:19;13100:6;13089:9;13082:25;13126:2;13164:6;13159:2;13148:9;13144:18;13137:34;13207:3;13202:2;13191:9;13187:18;13180:31;13231:6;13266;13260:13;13297:6;13289;13282:22;13335:3;13324:9;13320:19;13313:26;;13374:2;13366:6;13362:15;13348:29;;13395:1;13405:195;13419:6;13416:1;13413:13;13405:195;;;13484:13;;-1:-1:-1;;;;;13480:39:1;13468:52;;13575:15;;;;13540:12;;;;13516:1;13434:9;13405:195;;;-1:-1:-1;;;;;;;13656:32:1;;;;13651:2;13636:18;;13629:60;-1:-1:-1;;;13720:3:1;13705:19;13698:35;13617:3;12759:980;-1:-1:-1;;;12759:980:1:o;14758:306::-;14846:6;14854;14862;14915:2;14903:9;14894:7;14890:23;14886:32;14883:52;;;14931:1;14928;14921:12;14883:52;14960:9;14954:16;14944:26;;15010:2;14999:9;14995:18;14989:25;14979:35;;15054:2;15043:9;15039:18;15033:25;15023:35;;14758:306;;;;;:::o
Swarm Source
ipfs://1b250c524ceda74ee30e69d208f585f5cd108e35fea9d4eefd3e9f5620d75bb1
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.