ERC-20
Overview
Max Total Supply
100,000,000,000,000 KOMODO
Holders
143
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
9,681,747,371,133.174323657 KOMODOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Komodo
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-06 */ // File: scriptsV2/SafeMath.sol pragma solidity ^0.8.4; 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; } } // File: scriptsV2/IUniswapV2Factory.sol pragma solidity ^0.8.0; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } // File: scriptsV2/IERC20.sol pragma solidity ^0.8.4; 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); } // File: scriptsV2/IUniswapV2Router02.sol pragma solidity ^0.8.0; interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } // File: scriptsV2/contextHelper.sol pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } // File: scriptsV2/ERC20Ownable.sol pragma solidity ^0.8.4; contract ERC20Ownable 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); } } // File: contracts/komodo.sol pragma solidity ^0.8.7; contract Komodo is IERC20,Context,ERC20Ownable { using SafeMath for uint256; IUniswapV2Router02 private uniswapV2Router; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1e14 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _maxTxAmount = _tTotal; uint256 private _tFeeTotal; uint256 private _taxFee1; uint256 private _taxFee2; bool private OpenTrades; bool private inSwap = false; bool private enableSwap = false; bool private coolDownEnabled = false; mapping (address => uint256) private _ownAmt; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isBlackListed; mapping (address => uint) private _setCoolDown; mapping (address => bool) private _noFeeList; event MaxTxAmountUpdated(uint _maxTxAmount); modifier swapLock { inSwap = true; _; inSwap = false; } address payable private _taxWallet; address private uniswapV2Pair; /* TOKENS BASIC INFORMATION ------------------------- **/ /* TOKENS BASIC INFORMATION ------------------------- **/ string private constant _name = "KOMODO INU"; string private constant _symbol = "KOMODO"; uint8 private constant _decimal = 9; /* TOKENS CONSTRUCTOR ------------------ **/ //-------------------------------------------- constructor () { _taxWallet = payable(0xd520Bc27cAfe04df2E8B98AEa69715536a2724a4); _ownAmt[_msgSender()] = _rTotal; _noFeeList[owner()] = true; _noFeeList[address(this)] = true; _noFeeList[_taxWallet] = true; /* BLACK LIST OF BOTS ------------------ **/ blackList(0x91B305F0890Fd0534B66D8d479da6529C35A3eeC); blackList(0x7F5622afb5CEfbA39f96CA3b2814eCF0E383AAA4); blackList(0xfcf6a3d7eb8c62a5256a020e48f153c6D5Dd6909); blackList(0x74BC89a9e831ab5f33b90607Dd9eB5E01452A064); blackList(0x1F53592C3aA6b827C64C4a3174523182c52Ece84); blackList(0x460545C01c4246194C2e511F166D84bbC8a07608); blackList(0x2E5d67a1d15ccCF65152B3A8ec5315E73461fBcd); blackList(0xb5aF12B837aAf602298B3385640F61a0fF0F4E0d); blackList(0xEd3e444A30Bd440FBab5933dCCC652959DfCB5Ba); blackList(0xEC366bbA6266ac8960198075B14FC1D38ea7de88); blackList(0xa85C92Df9f8ce6F2A1E760272a1997460082380e); blackList(0x68D6c60946D78E4D27a81DbDB8d0248b8cFb46Dd); blackList(0x3e28eBEC40D0E3D6cfb9bE6e605b8CCFD730e464); blackList(0xDD75C6D962B5cFa34c4b3943F91Bf0007c29Ca75); blackList(0x10Bf6836600D7cFE1c06b145A8Ac774F8Ba91FDD); /* BLACK LIST OF BOTS ------------------ **/ /*IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); //uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); enableSwap = true; coolDownEnabled = true; _maxTxAmount = 5e15 * 10**9; OpenTrades = true; IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); */ /* BLACK LIST OF BOTS ------------------ **/ /* BLACK LIST OF BOTS ------------------ **/ openTrading(); emit Transfer(address(0), address(this), _tTotal); } receive() external payable {} 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 _decimal; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenReflection(_ownAmt[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 setCooldownEnabled(bool onoff) external onlyOwner() { coolDownEnabled = onoff; } /* ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** **/ function blackList(address _user) public onlyOwner { require(!_isBlackListed[_user], "user already blacklisted"); _isBlackListed[_user] = true; } /* ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** **/ function removeFromBlacklist(address _user) public onlyOwner { require(_isBlackListed[_user], "user already whitelisted"); _isBlackListed[_user] = false; } /* ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** **/ function tokenReflection(uint256 rAmount) private view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } 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"); _taxFee1 = 2; _taxFee2 = 8; if (from != owner() && to != owner()) { require(!_isBlackListed[to] && !_isBlackListed[from]); if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _noFeeList[to] && coolDownEnabled) { // Cooldown require(amount <= _maxTxAmount); require(_setCoolDown[to] < block.timestamp); _setCoolDown[to] = block.timestamp + (30 seconds); } if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _noFeeList[from]) { _taxFee1 = 2; _taxFee2 = 8; } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && from != uniswapV2Pair && enableSwap) { swapTokensForETH(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendTax(address(this).balance); } } } _tokenTransfer(from,to,amount); } /* ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** **/ function openTrading() public onlyOwner() { require(!OpenTrades,"trading is already open"); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); //uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); enableSwap = true; coolDownEnabled = true; _maxTxAmount = 1e14 * 10**9; OpenTrades = true; IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function _tokenTransfer(address sender, address recipient, uint256 amount) private { _transferStandard(sender, recipient, amount); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTax) = _getValues(tAmount); _ownAmt[sender] = _ownAmt[sender].sub(rAmount); _ownAmt[recipient] = _ownAmt[recipient].add(rTransferAmount); _takeTax(tTax); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function sendTax(uint256 amount) private { _taxWallet.transfer(amount.div(2)); _taxWallet.transfer(amount.div(2)); } /* ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** **/ function swapTokensForETH(uint256 tokenAmount) private swapLock { 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 _takeTax(uint256 tTax) private { uint256 currentRate = _getRate(); uint256 rTax = tTax.mul(currentRate); _ownAmt[address(this)] = _ownAmt[address(this)].add(rTax); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } /* ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** ************************************************************************************************************************************************************ ****************************************************************************** ****************************************************************************** **/ function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTax) = _getTValues(tAmount, _taxFee1, _taxFee2); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTax, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTax); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 liqTax) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTax = tAmount.mul(liqTax).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTax); return (tTransferAmount, tFee, tTax); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTax, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTax = tTax.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTax); 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); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"blackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526200001c69152d02c7e14af680000060001962000935565b6200002a906000196200090f565b60035569152d02c7e14af68000006004556008805463ffffff00191690553480156200005557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e80546001600160a01b03191673d520bc27cafe04df2e8b98aea69715536a2724a417905560035460096000620000cc3390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600d6000620001066200038060201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600d909352818320805485166001908117909155600e549091168352912080549092161790556200017c7391b305f0890fd0534b66d8d479da6529c35a3eec6200038f565b6200019b737f5622afb5cefba39f96ca3b2814ecf0e383aaa46200038f565b620001ba73fcf6a3d7eb8c62a5256a020e48f153c6d5dd69096200038f565b620001d97374bc89a9e831ab5f33b90607dd9eb5e01452a0646200038f565b620001f8731f53592c3aa6b827c64c4a3174523182c52ece846200038f565b6200021773460545c01c4246194c2e511f166d84bbc8a076086200038f565b62000236732e5d67a1d15cccf65152b3a8ec5315e73461fbcd6200038f565b6200025573b5af12b837aaf602298b3385640f61a0ff0f4e0d6200038f565b6200027473ed3e444a30bd440fbab5933dccc652959dfcb5ba6200038f565b6200029373ec366bba6266ac8960198075b14fc1d38ea7de886200038f565b620002b273a85c92df9f8ce6f2a1e760272a1997460082380e6200038f565b620002d17368d6c60946d78e4d27a81dbdb8d0248b8cfb46dd6200038f565b620002f0733e28ebec40d0e3d6cfb9be6e605b8ccfd730e4646200038f565b6200030f73dd75c6d962b5cfa34c4b3943f91bf0007c29ca756200038f565b6200032e7310bf6836600d7cfe1c06b145a8ac774f8ba91fdd6200038f565b620003386200046d565b60405169152d02c7e14af6800000815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000958565b6000546001600160a01b031690565b6000546001600160a01b03163314620003de5760405162461bcd60e51b815260206004820181905260248201526000805160206200214083398151915260448201526064015b60405180910390fd5b6001600160a01b0381166000908152600b602052604090205460ff1615620004495760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c697374656400000000000000006044820152606401620003d5565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b03163314620004b85760405162461bcd60e51b81526020600482018190526024820152600080516020620021408339815191526044820152606401620003d5565b60085460ff16156200050d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401620003d5565b600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556200054d308269152d02c7e14af680000062000791565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200058757600080fd5b505afa1580156200059c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c29190620008b9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200060b57600080fd5b505afa15801562000620573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006469190620008b9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200068f57600080fd5b505af1158015620006a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006ca9190620008b9565b600f80546001600160a01b0319166001600160a01b039283169081179091556008805469152d02c7e14af6800000600490815563ffff00ff1990911663010100011790915560025460405163095ea7b360e01b815293169083015260001960248301529063095ea7b390604401602060405180830381600087803b1580156200075257600080fd5b505af115801562000767573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078d9190620008eb565b5050565b6001600160a01b038316620007f55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620003d5565b6001600160a01b038216620008585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003d5565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208284031215620008cc57600080fd5b81516001600160a01b0381168114620008e457600080fd5b9392505050565b600060208284031215620008fe57600080fd5b81518015158114620008e457600080fd5b6000828210156200093057634e487b7160e01b600052601160045260246000fd5b500390565b6000826200095357634e487b7160e01b600052601260045260246000fd5b500690565b6117d880620009686000396000f3fe6080604052600436106100ec5760003560e01c80635932ead11161008a57806395d89b411161005957806395d89b411461028f578063a9059cbb146102be578063c9567bf9146102de578063dd62ed3e146102f357600080fd5b80635932ead11461021257806370a0823114610232578063715018a6146102525780638da5cb5b1461026757600080fd5b806323b872dd116100c657806323b872dd14610194578063313ce567146101b45780634838d165146101d0578063537df3b6146101f257600080fd5b806306fdde03146100f8578063095ea7b31461013d57806318160ddd1461016d57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b5060408051808201909152600a8152694b4f4d4f444f20494e5560b01b60208201525b60405161013491906115bd565b60405180910390f35b34801561014957600080fd5b5061015d610158366004611557565b610339565b6040519015158152602001610134565b34801561017957600080fd5b5069152d02c7e14af68000005b604051908152602001610134565b3480156101a057600080fd5b5061015d6101af366004611516565b610350565b3480156101c057600080fd5b5060405160098152602001610134565b3480156101dc57600080fd5b506101f06101eb3660046114a3565b6103b9565b005b3480156101fe57600080fd5b506101f061020d3660046114a3565b610479565b34801561021e57600080fd5b506101f061022d366004611583565b61052c565b34801561023e57600080fd5b5061018661024d3660046114a3565b610574565b34801561025e57600080fd5b506101f0610596565b34801561027357600080fd5b506000546040516001600160a01b039091168152602001610134565b34801561029b57600080fd5b506040805180820190915260068152654b4f4d4f444f60d01b6020820152610127565b3480156102ca57600080fd5b5061015d6102d9366004611557565b61060a565b3480156102ea57600080fd5b506101f0610617565b3480156102ff57600080fd5b5061018661030e3660046114dd565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6000610346338484610906565b5060015b92915050565b600061035d848484610a2a565b6103af84336103aa8560405180606001604052806028815260200161177b602891396001600160a01b038a166000908152600a602090815260408083203384529091529020549190610d74565b610906565b5060019392505050565b6000546001600160a01b031633146103ec5760405162461bcd60e51b81526004016103e390611612565b60405180910390fd5b6001600160a01b0381166000908152600b602052604090205460ff16156104555760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c6973746564000000000000000060448201526064016103e3565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146104a35760405162461bcd60e51b81526004016103e390611612565b6001600160a01b0381166000908152600b602052604090205460ff1661050b5760405162461bcd60e51b815260206004820152601860248201527f7573657220616c72656164792077686974656c6973746564000000000000000060448201526064016103e3565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146105565760405162461bcd60e51b81526004016103e390611612565b6008805491151563010000000263ff00000019909216919091179055565b6001600160a01b03811660009081526009602052604081205461034a90610dae565b6000546001600160a01b031633146105c05760405162461bcd60e51b81526004016103e390611612565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610346338484610a2a565b6000546001600160a01b031633146106415760405162461bcd60e51b81526004016103e390611612565b60085460ff16156106945760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103e3565b600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106d2308269152d02c7e14af6800000610906565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561070b57600080fd5b505afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074391906114c0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561078b57600080fd5b505afa15801561079f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c391906114c0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084391906114c0565b600f80546001600160a01b0319166001600160a01b039283169081179091556008805469152d02c7e14af6800000600490815563ffff00ff1990911663010100011790915560025460405163095ea7b360e01b815293169083015260001960248301529063095ea7b390604401602060405180830381600087803b1580156108ca57600080fd5b505af11580156108de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090291906115a0565b5050565b6001600160a01b0383166109685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103e3565b6001600160a01b0382166109c95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103e3565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a8e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103e3565b6001600160a01b038216610af05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103e3565b60008111610b525760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103e3565b600260065560086007556000546001600160a01b03848116911614801590610b8857506000546001600160a01b03838116911614155b15610d64576001600160a01b0382166000908152600b602052604090205460ff16158015610bcf57506001600160a01b0383166000908152600b602052604090205460ff16155b610bd857600080fd5b600f546001600160a01b038481169116148015610c0357506002546001600160a01b03838116911614155b8015610c2857506001600160a01b0382166000908152600d602052604090205460ff16155b8015610c3d57506008546301000000900460ff165b15610c9a57600454811115610c5157600080fd5b6001600160a01b0382166000908152600c60205260409020544211610c7557600080fd5b610c8042601e6116b8565b6001600160a01b0383166000908152600c60205260409020555b600f546001600160a01b038381169116148015610cc557506002546001600160a01b03848116911614155b8015610cea57506001600160a01b0383166000908152600d602052604090205460ff16155b15610cfa57600260065560086007555b6000610d0530610574565b600854909150610100900460ff16158015610d2e5750600f546001600160a01b03858116911614155b8015610d42575060085462010000900460ff165b15610d6257610d5081610e32565b478015610d6057610d6047610fb5565b505b505b610d6f83838361103a565b505050565b60008184841115610d985760405162461bcd60e51b81526004016103e391906115bd565b506000610da58486611711565b95945050505050565b6000600354821115610e155760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016103e3565b6000610e1f611045565b9050610e2b8382611068565b9392505050565b6008805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e7657610e7661173e565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0291906114c0565b81600181518110610f1557610f1561173e565b6001600160a01b039283166020918202929092010152600254610f3b9130911684610906565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f74908590600090869030904290600401611647565b600060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b50506008805461ff001916905550505050565b600e546001600160a01b03166108fc610fcf836002611068565b6040518115909202916000818181858888f19350505050158015610ff7573d6000803e3d6000fd5b50600e546001600160a01b03166108fc611012836002611068565b6040518115909202916000818181858888f19350505050158015610902573d6000803e3d6000fd5b610d6f8383836110aa565b60008060006110526111a1565b90925090506110618282611068565b9250505090565b6000610e2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111e5565b6000806000806000806110bc87611213565b6001600160a01b038f16600090815260096020526040902054959b509399509197509550935091506110ee9087611270565b6001600160a01b03808b1660009081526009602052604080822093909355908a168152205461111d90866112b2565b6001600160a01b03891660009081526009602052604090205561113f81611311565b611149848361135b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161118e91815260200190565b60405180910390a3505050505050505050565b600354600090819069152d02c7e14af68000006111be8282611068565b8210156111dc5750506003549269152d02c7e14af680000092509050565b90939092509050565b600081836112065760405162461bcd60e51b81526004016103e391906115bd565b506000610da584866116d0565b60008060008060008060008060006112308a60065460075461137f565b9250925092506000611240611045565b905060008060006112538e8787876113d4565b919e509c509a509598509396509194505050505091939550919395565b6000610e2b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d74565b6000806112bf83856116b8565b905083811015610e2b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103e3565b600061131b611045565b905060006113298383611424565b3060009081526009602052604090205490915061134690826112b2565b30600090815260096020526040902055505050565b6003546113689083611270565b60035560055461137890826112b2565b6005555050565b600080808061139960646113938989611424565b90611068565b905060006113ac60646113938a89611424565b905060006113c4826113be8b86611270565b90611270565b9992985090965090945050505050565b60008080806113e38886611424565b905060006113f18887611424565b905060006113ff8888611424565b90506000611411826113be8686611270565b939b939a50919850919650505050505050565b6000826114335750600061034a565b600061143f83856116f2565b90508261144c85836116d0565b14610e2b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103e3565b6000602082840312156114b557600080fd5b8135610e2b81611754565b6000602082840312156114d257600080fd5b8151610e2b81611754565b600080604083850312156114f057600080fd5b82356114fb81611754565b9150602083013561150b81611754565b809150509250929050565b60008060006060848603121561152b57600080fd5b833561153681611754565b9250602084013561154681611754565b929592945050506040919091013590565b6000806040838503121561156a57600080fd5b823561157581611754565b946020939093013593505050565b60006020828403121561159557600080fd5b8135610e2b8161176c565b6000602082840312156115b257600080fd5b8151610e2b8161176c565b600060208083528351808285015260005b818110156115ea578581018301518582016040015282016115ce565b818111156115fc576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116975784516001600160a01b031683529383019391830191600101611672565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156116cb576116cb611728565b500190565b6000826116ed57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561170c5761170c611728565b500290565b60008282101561172357611723611728565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461176957600080fd5b50565b801515811461176957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220efef50fa8f649c1ee13fd69a07936ca7e3169d54f5a3ee928005beea668a06d364736f6c634300080700334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106100ec5760003560e01c80635932ead11161008a57806395d89b411161005957806395d89b411461028f578063a9059cbb146102be578063c9567bf9146102de578063dd62ed3e146102f357600080fd5b80635932ead11461021257806370a0823114610232578063715018a6146102525780638da5cb5b1461026757600080fd5b806323b872dd116100c657806323b872dd14610194578063313ce567146101b45780634838d165146101d0578063537df3b6146101f257600080fd5b806306fdde03146100f8578063095ea7b31461013d57806318160ddd1461016d57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b5060408051808201909152600a8152694b4f4d4f444f20494e5560b01b60208201525b60405161013491906115bd565b60405180910390f35b34801561014957600080fd5b5061015d610158366004611557565b610339565b6040519015158152602001610134565b34801561017957600080fd5b5069152d02c7e14af68000005b604051908152602001610134565b3480156101a057600080fd5b5061015d6101af366004611516565b610350565b3480156101c057600080fd5b5060405160098152602001610134565b3480156101dc57600080fd5b506101f06101eb3660046114a3565b6103b9565b005b3480156101fe57600080fd5b506101f061020d3660046114a3565b610479565b34801561021e57600080fd5b506101f061022d366004611583565b61052c565b34801561023e57600080fd5b5061018661024d3660046114a3565b610574565b34801561025e57600080fd5b506101f0610596565b34801561027357600080fd5b506000546040516001600160a01b039091168152602001610134565b34801561029b57600080fd5b506040805180820190915260068152654b4f4d4f444f60d01b6020820152610127565b3480156102ca57600080fd5b5061015d6102d9366004611557565b61060a565b3480156102ea57600080fd5b506101f0610617565b3480156102ff57600080fd5b5061018661030e3660046114dd565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6000610346338484610906565b5060015b92915050565b600061035d848484610a2a565b6103af84336103aa8560405180606001604052806028815260200161177b602891396001600160a01b038a166000908152600a602090815260408083203384529091529020549190610d74565b610906565b5060019392505050565b6000546001600160a01b031633146103ec5760405162461bcd60e51b81526004016103e390611612565b60405180910390fd5b6001600160a01b0381166000908152600b602052604090205460ff16156104555760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c6973746564000000000000000060448201526064016103e3565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146104a35760405162461bcd60e51b81526004016103e390611612565b6001600160a01b0381166000908152600b602052604090205460ff1661050b5760405162461bcd60e51b815260206004820152601860248201527f7573657220616c72656164792077686974656c6973746564000000000000000060448201526064016103e3565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146105565760405162461bcd60e51b81526004016103e390611612565b6008805491151563010000000263ff00000019909216919091179055565b6001600160a01b03811660009081526009602052604081205461034a90610dae565b6000546001600160a01b031633146105c05760405162461bcd60e51b81526004016103e390611612565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610346338484610a2a565b6000546001600160a01b031633146106415760405162461bcd60e51b81526004016103e390611612565b60085460ff16156106945760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103e3565b600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106d2308269152d02c7e14af6800000610906565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561070b57600080fd5b505afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074391906114c0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561078b57600080fd5b505afa15801561079f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c391906114c0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084391906114c0565b600f80546001600160a01b0319166001600160a01b039283169081179091556008805469152d02c7e14af6800000600490815563ffff00ff1990911663010100011790915560025460405163095ea7b360e01b815293169083015260001960248301529063095ea7b390604401602060405180830381600087803b1580156108ca57600080fd5b505af11580156108de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090291906115a0565b5050565b6001600160a01b0383166109685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103e3565b6001600160a01b0382166109c95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103e3565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a8e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103e3565b6001600160a01b038216610af05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103e3565b60008111610b525760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103e3565b600260065560086007556000546001600160a01b03848116911614801590610b8857506000546001600160a01b03838116911614155b15610d64576001600160a01b0382166000908152600b602052604090205460ff16158015610bcf57506001600160a01b0383166000908152600b602052604090205460ff16155b610bd857600080fd5b600f546001600160a01b038481169116148015610c0357506002546001600160a01b03838116911614155b8015610c2857506001600160a01b0382166000908152600d602052604090205460ff16155b8015610c3d57506008546301000000900460ff165b15610c9a57600454811115610c5157600080fd5b6001600160a01b0382166000908152600c60205260409020544211610c7557600080fd5b610c8042601e6116b8565b6001600160a01b0383166000908152600c60205260409020555b600f546001600160a01b038381169116148015610cc557506002546001600160a01b03848116911614155b8015610cea57506001600160a01b0383166000908152600d602052604090205460ff16155b15610cfa57600260065560086007555b6000610d0530610574565b600854909150610100900460ff16158015610d2e5750600f546001600160a01b03858116911614155b8015610d42575060085462010000900460ff165b15610d6257610d5081610e32565b478015610d6057610d6047610fb5565b505b505b610d6f83838361103a565b505050565b60008184841115610d985760405162461bcd60e51b81526004016103e391906115bd565b506000610da58486611711565b95945050505050565b6000600354821115610e155760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016103e3565b6000610e1f611045565b9050610e2b8382611068565b9392505050565b6008805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e7657610e7661173e565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0291906114c0565b81600181518110610f1557610f1561173e565b6001600160a01b039283166020918202929092010152600254610f3b9130911684610906565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f74908590600090869030904290600401611647565b600060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b50506008805461ff001916905550505050565b600e546001600160a01b03166108fc610fcf836002611068565b6040518115909202916000818181858888f19350505050158015610ff7573d6000803e3d6000fd5b50600e546001600160a01b03166108fc611012836002611068565b6040518115909202916000818181858888f19350505050158015610902573d6000803e3d6000fd5b610d6f8383836110aa565b60008060006110526111a1565b90925090506110618282611068565b9250505090565b6000610e2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111e5565b6000806000806000806110bc87611213565b6001600160a01b038f16600090815260096020526040902054959b509399509197509550935091506110ee9087611270565b6001600160a01b03808b1660009081526009602052604080822093909355908a168152205461111d90866112b2565b6001600160a01b03891660009081526009602052604090205561113f81611311565b611149848361135b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161118e91815260200190565b60405180910390a3505050505050505050565b600354600090819069152d02c7e14af68000006111be8282611068565b8210156111dc5750506003549269152d02c7e14af680000092509050565b90939092509050565b600081836112065760405162461bcd60e51b81526004016103e391906115bd565b506000610da584866116d0565b60008060008060008060008060006112308a60065460075461137f565b9250925092506000611240611045565b905060008060006112538e8787876113d4565b919e509c509a509598509396509194505050505091939550919395565b6000610e2b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d74565b6000806112bf83856116b8565b905083811015610e2b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103e3565b600061131b611045565b905060006113298383611424565b3060009081526009602052604090205490915061134690826112b2565b30600090815260096020526040902055505050565b6003546113689083611270565b60035560055461137890826112b2565b6005555050565b600080808061139960646113938989611424565b90611068565b905060006113ac60646113938a89611424565b905060006113c4826113be8b86611270565b90611270565b9992985090965090945050505050565b60008080806113e38886611424565b905060006113f18887611424565b905060006113ff8888611424565b90506000611411826113be8686611270565b939b939a50919850919650505050505050565b6000826114335750600061034a565b600061143f83856116f2565b90508261144c85836116d0565b14610e2b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103e3565b6000602082840312156114b557600080fd5b8135610e2b81611754565b6000602082840312156114d257600080fd5b8151610e2b81611754565b600080604083850312156114f057600080fd5b82356114fb81611754565b9150602083013561150b81611754565b809150509250929050565b60008060006060848603121561152b57600080fd5b833561153681611754565b9250602084013561154681611754565b929592945050506040919091013590565b6000806040838503121561156a57600080fd5b823561157581611754565b946020939093013593505050565b60006020828403121561159557600080fd5b8135610e2b8161176c565b6000602082840312156115b257600080fd5b8151610e2b8161176c565b600060208083528351808285015260005b818110156115ea578581018301518582016040015282016115ce565b818111156115fc576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116975784516001600160a01b031683529383019391830191600101611672565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156116cb576116cb611728565b500190565b6000826116ed57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561170c5761170c611728565b500290565b60008282101561172357611723611728565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461176957600080fd5b50565b801515811461176957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220efef50fa8f649c1ee13fd69a07936ca7e3169d54f5a3ee928005beea668a06d364736f6c63430008070033
Deployed Bytecode Sourcemap
3941:35571:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8460:83;;;;;;;;;;-1:-1:-1;8530:5:0;;;;;;;;;;;;-1:-1:-1;;;8530:5:0;;;;8460:83;;;;;;;:::i;:::-;;;;;;;;9839:161;;;;;;;;;;-1:-1:-1;9839:161:0;;;;;:::i;:::-;;:::i;:::-;;;3153:14:1;;3146:22;3128:41;;3116:2;3101:18;9839:161:0;2988:187:1;8976:95:0;;;;;;;;;;-1:-1:-1;4223:12:0;8976:95;;;8544:25:1;;;8532:2;8517:18;8976:95:0;8398:177:1;10078:313:0;;;;;;;;;;-1:-1:-1;10078:313:0;;;;;:::i;:::-;;:::i;8810:82::-;;;;;;;;;;-1:-1:-1;8810:82:0;;5575:1;9707:36:1;;9695:2;9680:18;8810:82:0;9565:184:1;13090:168:0;;;;;;;;;;-1:-1:-1;13090:168:0;;;;;:::i;:::-;;:::i;:::-;;15759:178;;;;;;;;;;-1:-1:-1;15759:178:0;;;;;:::i;:::-;;:::i;10481:103::-;;;;;;;;;;-1:-1:-1;10481:103:0;;;;;:::i;:::-;;:::i;9155:134::-;;;;;;;;;;-1:-1:-1;9155:134:0;;;;;:::i;:::-;;:::i;3706:148::-;;;;;;;;;;;;;:::i;3492:79::-;;;;;;;;;;-1:-1:-1;3530:7:0;3557:6;3492:79;;-1:-1:-1;;;;;3557:6:0;;;2338:51:1;;2326:2;2311:18;3492:79:0;2192:203:1;8639:87:0;;;;;;;;;;-1:-1:-1;8711:7:0;;;;;;;;;;;;-1:-1:-1;;;8711:7:0;;;;8639:87;;9379:167;;;;;;;;;;-1:-1:-1;9379:167:0;;;;;:::i;:::-;;:::i;25408:806::-;;;;;;;;;;;;;:::i;9630:143::-;;;;;;;;;;-1:-1:-1;9630:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9738:18:0;;;9711:7;9738:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9630:143;9839:161;9914:4;9931:39;3037:10;9954:7;9963:6;9931:8;:39::i;:::-;-1:-1:-1;9988:4:0;9839:161;;;;;:::o;10078:313::-;10176:4;10193:36;10203:6;10211:9;10222:6;10193:9;:36::i;:::-;10240:121;10249:6;3037:10;10271:89;10309:6;10271:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10271:19:0;;;;;;:11;:19;;;;;;;;3037:10;10271:33;;;;;;;;;;:37;:89::i;:::-;10240:8;:121::i;:::-;-1:-1:-1;10379:4:0;10078:313;;;;;:::o;13090:168::-;3619:6;;-1:-1:-1;;;;;3619:6:0;3037:10;3619:22;3611:67;;;;-1:-1:-1;;;3611:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;13161:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;;::::1;;13160:22;13152:59;;;::::0;-1:-1:-1;;;13152:59:0;;5558:2:1;13152:59:0::1;::::0;::::1;5540:21:1::0;5597:2;5577:18;;;5570:30;5636:26;5616:18;;;5609:54;5680:18;;13152:59:0::1;5356:348:1::0;13152:59:0::1;-1:-1:-1::0;;;;;13222:21:0::1;;::::0;;;:14:::1;:21;::::0;;;;:28;;-1:-1:-1;;13222:28:0::1;13246:4;13222:28;::::0;;13090:168::o;15759:178::-;3619:6;;-1:-1:-1;;;;;3619:6:0;3037:10;3619:22;3611:67;;;;-1:-1:-1;;;3611:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15839:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;;::::1;;15831:58;;;::::0;-1:-1:-1;;;15831:58:0;;5911:2:1;15831:58:0::1;::::0;::::1;5893:21:1::0;5950:2;5930:18;;;5923:30;5989:26;5969:18;;;5962:54;6033:18;;15831:58:0::1;5709:348:1::0;15831:58:0::1;-1:-1:-1::0;;;;;15900:21:0::1;15924:5;15900:21:::0;;;:14:::1;:21;::::0;;;;:29;;-1:-1:-1;;15900:29:0::1;::::0;;15759:178::o;10481:103::-;3619:6;;-1:-1:-1;;;;;3619:6:0;3037:10;3619:22;3611:67;;;;-1:-1:-1;;;3611:67:0;;;;;;;:::i;:::-;10553:15:::1;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;10553:23:0;;::::1;::::0;;;::::1;::::0;;10481:103::o;9155:134::-;-1:-1:-1;;;;;9264:16:0;;9221:7;9264:16;;;:7;:16;;;;;;9248:33;;:15;:33::i;3706:148::-;3619:6;;-1:-1:-1;;;;;3619:6:0;3037:10;3619:22;3611:67;;;;-1:-1:-1;;;3611:67:0;;;;;;;:::i;:::-;3813:1:::1;3797:6:::0;;3776:40:::1;::::0;-1:-1:-1;;;;;3797:6:0;;::::1;::::0;3776:40:::1;::::0;3813:1;;3776:40:::1;3844:1;3827:19:::0;;-1:-1:-1;;;;;;3827:19:0::1;::::0;;3706:148::o;9379:167::-;9457:4;9474:42;3037:10;9498:9;9509:6;9474:9;:42::i;25408:806::-;3619:6;;-1:-1:-1;;;;;3619:6:0;3037:10;3619:22;3611:67;;;;-1:-1:-1;;;3611:67:0;;;;;;;:::i;:::-;25470:10:::1;::::0;::::1;;25469:11;25461:46;;;::::0;-1:-1:-1;;;25461:46:0;;8248:2:1;25461:46:0::1;::::0;::::1;8230:21:1::0;8287:2;8267:18;;;8260:30;8326:25;8306:18;;;8299:53;8369:18;;25461:46:0::1;8046:347:1::0;25461:46:0::1;25629:15;:34:::0;;-1:-1:-1;;;;;;25629:34:0::1;25575:42;25629:34:::0;;::::1;::::0;;;25674:58:::1;25691:4;25575:42:::0;4223:12:::1;25674:8;:58::i;:::-;25777:16;-1:-1:-1::0;;;;;25777:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25759:56:0::1;;25824:4;25831:16;-1:-1:-1::0;;;;;25831:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25759:96;::::0;-1:-1:-1;;;;;;25759:96:0::1;::::0;;;;;;-1:-1:-1;;;;;2630:15:1;;;25759:96:0::1;::::0;::::1;2612:34:1::0;2682:15;;2662:18;;;2655:43;2547:18;;25759:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25743:13;:112:::0;;-1:-1:-1;;;;;;25743:112:0::1;-1:-1:-1::0;;;;;25743:112:0;;::::1;::::0;;::::1;::::0;;;26008:10:::1;:17:::0;;26084:12:::1;26069;:27:::0;;;-1:-1:-1;;26107:17:0;;;;;;;;26008:10:::1;26173:15:::0;26135:71:::1;::::0;-1:-1:-1;;;26135:71:0;;26173:15;::::1;26135:71:::0;;::::1;2883:51:1::0;-1:-1:-1;;2950:18:1;;;2943:34;25743:112:0;26135:29:::1;::::0;2856:18:1;;26135:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25450:764;25408:806::o:0;18724:335::-;-1:-1:-1;;;;;18817:19:0;;18809:68;;;;-1:-1:-1;;;18809:68:0;;7843:2:1;18809:68:0;;;7825:21:1;7882:2;7862:18;;;7855:30;7921:34;7901:18;;;7894:62;-1:-1:-1;;;7972:18:1;;;7965:34;8016:19;;18809:68:0;7641:400:1;18809:68:0;-1:-1:-1;;;;;18896:21:0;;18888:68;;;;-1:-1:-1;;;18888:68:0;;4799:2:1;18888:68:0;;;4781:21:1;4838:2;4818:18;;;4811:30;4877:34;4857:18;;;4850:62;-1:-1:-1;;;4928:18:1;;;4921:32;4970:19;;18888:68:0;4597:398:1;18888:68:0;-1:-1:-1;;;;;18967:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19019:32;;8544:25:1;;;19019:32:0;;8517:18:1;19019:32:0;;;;;;;18724:335;;;:::o;21524:1431::-;-1:-1:-1;;;;;21612:18:0;;21604:68;;;;-1:-1:-1;;;21604:68:0;;7437:2:1;21604:68:0;;;7419:21:1;7476:2;7456:18;;;7449:30;7515:34;7495:18;;;7488:62;-1:-1:-1;;;7566:18:1;;;7559:35;7611:19;;21604:68:0;7235:401:1;21604:68:0;-1:-1:-1;;;;;21691:16:0;;21683:64;;;;-1:-1:-1;;;21683:64:0;;3984:2:1;21683:64:0;;;3966:21:1;4023:2;4003:18;;;3996:30;4062:34;4042:18;;;4035:62;-1:-1:-1;;;4113:18:1;;;4106:33;4156:19;;21683:64:0;3782:399:1;21683:64:0;21775:1;21766:6;:10;21758:64;;;;-1:-1:-1;;;21758:64:0;;7027:2:1;21758:64:0;;;7009:21:1;7066:2;7046:18;;;7039:30;7105:34;7085:18;;;7078:62;-1:-1:-1;;;7156:18:1;;;7149:39;7205:19;;21758:64:0;6825:405:1;21758:64:0;21844:1;21833:8;:12;21867:1;21856:8;:12;-1:-1:-1;3557:6:0;-1:-1:-1;;;;;21883:15:0;;;3557:6;;21883:15;;;;:32;;-1:-1:-1;3530:7:0;3557:6;-1:-1:-1;;;;;21902:13:0;;;3557:6;;21902:13;;21883:32;21879:1028;;;-1:-1:-1;;;;;21941:18:0;;;;;;:14;:18;;;;;;;;21940:19;:44;;;;-1:-1:-1;;;;;;21964:20:0;;;;;;:14;:20;;;;;;;;21963:21;21940:44;21932:53;;;;;;22012:13;;-1:-1:-1;;;;;22004:21:0;;;22012:13;;22004:21;:55;;;;-1:-1:-1;22043:15:0;;-1:-1:-1;;;;;22029:30:0;;;22043:15;;22029:30;;22004:55;:75;;;;-1:-1:-1;;;;;;22065:14:0;;;;;;:10;:14;;;;;;;;22063:16;22004:75;:94;;;;-1:-1:-1;22083:15:0;;;;;;;22004:94;22000:325;;;22166:12;;22156:6;:22;;22148:31;;;;;;-1:-1:-1;;;;;22206:16:0;;;;;;:12;:16;;;;;;22225:15;-1:-1:-1;22198:43:0;;;;;;22279:30;:15;22298:10;22279:30;:::i;:::-;-1:-1:-1;;;;;22260:16:0;;;;;;:12;:16;;;;;:49;22000:325;22349:13;;-1:-1:-1;;;;;22343:19:0;;;22349:13;;22343:19;:55;;;;-1:-1:-1;22382:15:0;;-1:-1:-1;;;;;22366:32:0;;;22382:15;;22366:32;;22343:55;:77;;;;-1:-1:-1;;;;;;22404:16:0;;;;;;:10;:16;;;;;;;;22402:18;22343:77;22339:161;;;22452:1;22441:8;:12;22483:1;22472:8;:12;22339:161;22514:28;22545:24;22563:4;22545:9;:24::i;:::-;22589:6;;22514:55;;-1:-1:-1;22589:6:0;;;;;22588:7;:32;;;;-1:-1:-1;22607:13:0;;-1:-1:-1;;;;;22599:21:0;;;22607:13;;22599:21;;22588:32;:46;;;;-1:-1:-1;22624:10:0;;;;;;;22588:46;22584:312;;;22655:38;22672:20;22655:16;:38::i;:::-;22741:21;22784:22;;22781:100;;22831:30;22839:21;22831:7;:30::i;:::-;22636:260;22584:312;21917:990;21879:1028;22917:30;22932:4;22937:2;22940:6;22917:14;:30::i;:::-;21524:1431;;;:::o;421:190::-;507:7;543:12;535:6;;;;527:29;;;;-1:-1:-1;;;527:29:0;;;;;;;;:::i;:::-;-1:-1:-1;567:9:0;579:5;583:1;579;:5;:::i;:::-;567:17;421:190;-1:-1:-1;;;;;421:190:0:o;18426:250::-;18489:7;18528;;18517;:18;;18509:73;;;;-1:-1:-1;;;18509:73:0;;4388:2:1;18509:73:0;;;4370:21:1;4427:2;4407:18;;;4400:30;4466:34;4446:18;;;4439:62;-1:-1:-1;;;4517:18:1;;;4510:40;4567:19;;18509:73:0;4186:406:1;18509:73:0;18593:19;18616:10;:8;:10::i;:::-;18593:33;-1:-1:-1;18644:24:0;:7;18593:33;18644:11;:24::i;:::-;18637:31;18426:250;-1:-1:-1;;;18426:250:0:o;29545:480::-;5098:6;:13;;-1:-1:-1;;5098:13:0;;;;;29644:16:::1;::::0;;29658:1:::1;29644:16:::0;;;;;::::1;::::0;;-1:-1:-1;;29644:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;29644:16:0::1;29620:40;;29689:4;29671;29676:1;29671:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29671:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;29715:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;29715:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;29671:7;;29715:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29705:4;29710:1;29705:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29705:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;29780:15:::1;::::0;29748:62:::1;::::0;29765:4:::1;::::0;29780:15:::1;29798:11:::0;29748:8:::1;:62::i;:::-;29821:15;::::0;:196:::1;::::0;-1:-1:-1;;;29821:196:0;;-1:-1:-1;;;;;29821:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;29902:11;;29821:15:::1;::::0;29944:4;;29971::::1;::::0;29991:15:::1;::::0;29821:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5134:6:0;:14;;-1:-1:-1;;5134:14:0;;;-1:-1:-1;;;;29545:480:0:o;26953:139::-;27005:10;;-1:-1:-1;;;;;27005:10:0;:34;27025:13;:6;27036:1;27025:10;:13::i;:::-;27005:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27050:10:0;;-1:-1:-1;;;;;27050:10:0;:34;27070:13;:6;27081:1;27070:10;:13::i;:::-;27050:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26250:146;26344:44;26362:6;26370:9;26381:6;26344:17;:44::i;36631:163::-;36672:7;36693:15;36710;36729:19;:17;:19::i;:::-;36692:56;;-1:-1:-1;36692:56:0;-1:-1:-1;36766:20:0;36692:56;;36766:11;:20::i;:::-;36759:27;;;;36631:163;:::o;873:132::-;931:7;958:39;962:1;965;958:39;;;;;;;;;;;;;;;;;:3;:39::i;26432:485::-;26531:15;26548:23;26573:12;26587:23;26612:12;26626;26642:19;26653:7;26642:10;:19::i;:::-;-1:-1:-1;;;;;26690:15:0;;;;;;:7;:15;;;;;;26530:131;;-1:-1:-1;26530:131:0;;-1:-1:-1;26530:131:0;;-1:-1:-1;26530:131:0;-1:-1:-1;26530:131:0;-1:-1:-1;26530:131:0;-1:-1:-1;26690:28:0;;26530:131;26690:19;:28::i;:::-;-1:-1:-1;;;;;26672:15:0;;;;;;;:7;:15;;;;;;:46;;;;26750:18;;;;;;;:39;;26773:15;26750:22;:39::i;:::-;-1:-1:-1;;;;;26729:18:0;;;;;;:7;:18;;;;;:60;26801:14;26810:4;26801:8;:14::i;:::-;26826:23;26838:4;26844;26826:11;:23::i;:::-;26882:9;-1:-1:-1;;;;;26865:44:0;26874:6;-1:-1:-1;;;;;26865:44:0;;26893:15;26865:44;;;;8544:25:1;;8532:2;8517:18;;8398:177;26865:44:0;;;;;;;;26519:398;;;;;;26432:485;;;:::o;39247:262::-;39344:7;;39297;;;;4223:12;39418:20;39344:7;4223:12;39418:11;:20::i;:::-;39408:7;:30;39404:61;;;-1:-1:-1;;39448:7:0;;;4223:12;;-1:-1:-1;39247:262:0;-1:-1:-1;39247:262:0:o;39404:61::-;39484:7;;39493;;-1:-1:-1;39247:262:0;-1:-1:-1;39247:262:0:o;1013:189::-;1099:7;1134:12;1127:5;1119:28;;;;-1:-1:-1;;;1119:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1158:9:0;1170:5;1174:1;1170;:5;:::i;32892:466::-;32951:7;32960;32969;32978;32987;32996;33017:23;33042:12;33056;33072:40;33084:7;33093:8;;33103;;33072:11;:40::i;:::-;33016:96;;;;;;33123:19;33146:10;:8;:10::i;:::-;33123:33;;33168:15;33185:23;33210:12;33226:45;33238:7;33247:4;33253;33259:11;33226;:45::i;:::-;33167:104;;-1:-1:-1;33167:104:0;-1:-1:-1;33167:104:0;-1:-1:-1;33322:15:0;;-1:-1:-1;33339:4:0;;-1:-1:-1;33345:4:0;;-1:-1:-1;;;;;32892:466:0;;;;;;;:::o;277:136::-;335:7;362:43;366:1;369;362:43;;;;;;;;;;;;;;;;;:3;:43::i;90:179::-;148:7;;180:5;184:1;180;:5;:::i;:::-;168:17;;209:1;204;:6;;196:46;;;;-1:-1:-1;;;196:46:0;;5202:2:1;196:46:0;;;5184:21:1;5241:2;5221:18;;;5214:30;5280:29;5260:18;;;5253:57;5327:18;;196:46:0;5000:351:1;30061:207:0;30112:19;30135:10;:8;:10::i;:::-;30112:33;-1:-1:-1;30156:12:0;30171:21;:4;30112:33;30171:8;:21::i;:::-;30244:4;30228:22;;;;:7;:22;;;;;;30156:36;;-1:-1:-1;30228:32:0;;30156:36;30228:26;:32::i;:::-;30219:4;30203:22;;;;:7;:22;;;;;:57;-1:-1:-1;;;30061:207:0:o;30298:147::-;30376:7;;:17;;30388:4;30376:11;:17::i;:::-;30366:7;:27;30417:10;;:20;;30432:4;30417:14;:20::i;:::-;30404:10;:33;-1:-1:-1;;30298:147:0:o;33394:346::-;33486:7;;;;33539:28;33563:3;33539:19;:7;33551:6;33539:11;:19::i;:::-;:23;;:28::i;:::-;33524:43;-1:-1:-1;33578:12:0;33593:28;33617:3;33593:19;:7;33605:6;33593:11;:19::i;:28::-;33578:43;-1:-1:-1;33632:23:0;33658:27;33578:43;33658:17;:7;33670:4;33658:11;:17::i;:::-;:21;;:27::i;:::-;33632:53;33721:4;;-1:-1:-1;33727:4:0;;-1:-1:-1;33394:346:0;;-1:-1:-1;;;;;33394:346:0:o;33776:405::-;33885:7;;;;33941:24;:7;33953:11;33941;:24::i;:::-;33923:42;-1:-1:-1;33976:12:0;33991:21;:4;34000:11;33991:8;:21::i;:::-;33976:36;-1:-1:-1;34023:12:0;34038:21;:4;34047:11;34038:8;:21::i;:::-;34023:36;-1:-1:-1;34070:23:0;34096:27;34023:36;34096:17;:7;34108:4;34096:11;:17::i;:27::-;34142:7;;;;-1:-1:-1;34168:4:0;;-1:-1:-1;33776:405:0;;-1:-1:-1;;;;;;;33776:405:0:o;619:246::-;677:7;701:6;697:47;;-1:-1:-1;731:1:0;724:8;;697:47;754:9;766:5;770:1;766;:5;:::i;:::-;754:17;-1:-1:-1;799:1:0;790:5;794:1;754:17;790:5;:::i;:::-;:10;782:56;;;;-1:-1:-1;;;782:56:0;;6264:2:1;782:56:0;;;6246:21:1;6303:2;6283:18;;;6276:30;6342:34;6322:18;;;6315:62;-1:-1:-1;;;6393:18:1;;;6386:31;6434:19;;782:56:0;6062:397:1;14:247;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:52;;;1521:1;1518;1511:12;1473:52;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1376:315:1:o;1696:241::-;1752:6;1805:2;1793:9;1784:7;1780:23;1776:32;1773:52;;;1821:1;1818;1811:12;1773:52;1860:9;1847:23;1879:28;1901:5;1879:28;:::i;1942:245::-;2009:6;2062:2;2050:9;2041:7;2037:23;2033:32;2030:52;;;2078:1;2075;2068:12;2030:52;2110:9;2104:16;2129:28;2151:5;2129:28;:::i;3180:597::-;3292:4;3321:2;3350;3339:9;3332:21;3382:6;3376:13;3425:6;3420:2;3409:9;3405:18;3398:34;3450:1;3460:140;3474:6;3471:1;3468:13;3460:140;;;3569:14;;;3565:23;;3559:30;3535:17;;;3554:2;3531:26;3524:66;3489:10;;3460:140;;;3618:6;3615:1;3612:13;3609:91;;;3688:1;3683:2;3674:6;3663:9;3659:22;3655:31;3648:42;3609:91;-1:-1:-1;3761:2:1;3740:15;-1:-1:-1;;3736:29:1;3721:45;;;;3768:2;3717:54;;3180:597;-1:-1:-1;;;3180:597:1:o;6464:356::-;6666:2;6648:21;;;6685:18;;;6678:30;6744:34;6739:2;6724:18;;6717:62;6811:2;6796:18;;6464:356::o;8580:980::-;8842:4;8890:3;8879:9;8875:19;8921:6;8910:9;8903:25;8947:2;8985:6;8980:2;8969:9;8965:18;8958:34;9028:3;9023:2;9012:9;9008:18;9001:31;9052:6;9087;9081:13;9118:6;9110;9103:22;9156:3;9145:9;9141:19;9134:26;;9195:2;9187:6;9183:15;9169:29;;9216:1;9226:195;9240:6;9237:1;9234:13;9226:195;;;9305:13;;-1:-1:-1;;;;;9301:39:1;9289:52;;9396:15;;;;9361:12;;;;9337:1;9255:9;9226:195;;;-1:-1:-1;;;;;;;9477:32:1;;;;9472:2;9457:18;;9450:60;-1:-1:-1;;;9541:3:1;9526:19;9519:35;9438:3;8580:980;-1:-1:-1;;;8580:980:1:o;9754:128::-;9794:3;9825:1;9821:6;9818:1;9815:13;9812:39;;;9831:18;;:::i;:::-;-1:-1:-1;9867:9:1;;9754:128::o;9887:217::-;9927:1;9953;9943:132;;9997:10;9992:3;9988:20;9985:1;9978:31;10032:4;10029:1;10022:15;10060:4;10057:1;10050:15;9943:132;-1:-1:-1;10089:9:1;;9887:217::o;10109:168::-;10149:7;10215:1;10211;10207:6;10203:14;10200:1;10197:21;10192:1;10185:9;10178:17;10174:45;10171:71;;;10222:18;;:::i;:::-;-1:-1:-1;10262:9:1;;10109:168::o;10282:125::-;10322:4;10350:1;10347;10344:8;10341:34;;;10355:18;;:::i;:::-;-1:-1:-1;10392:9:1;;10282:125::o;10412:127::-;10473:10;10468:3;10464:20;10461:1;10454:31;10504:4;10501:1;10494:15;10528:4;10525:1;10518:15;10544:127;10605:10;10600:3;10596:20;10593:1;10586:31;10636:4;10633:1;10626:15;10660:4;10657:1;10650:15;10808:131;-1:-1:-1;;;;;10883:31:1;;10873:42;;10863:70;;10929:1;10926;10919:12;10863:70;10808:131;:::o;10944:118::-;11030:5;11023:13;11016:21;11009:5;11006:32;10996:60;;11052:1;11049;11042:12
Swarm Source
ipfs://efef50fa8f649c1ee13fd69a07936ca7e3169d54f5a3ee928005beea668a06d3
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.