ERC-20
Overview
Max Total Supply
100,000,000,000 Etheroll
Holders
66
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
85,537,465,986.609451667951179257 EtherollValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Etheroll
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-12 */ /* #Etheroll is the best slot game! If you're lucky, play; if not, hold it! Game: t.me/etherollgame_bot TG: t.me/Etheroll_Portal etheroll.fun https://x.com/etherollcoin https://medium.com/@etherollcoin */ // SPDX-License-Identifier: MIT pragma solidity 0.8.22; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { 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); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; // always proceeds } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() 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; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mintOnce(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Etheroll is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; mapping(uint256 => uint256) private swapInBlock; uint256 public feeOnBuy; uint256 public feeOnSell; uint256 public maxSwapPerBlock; address public feeReceiver; uint256 public swapTokensAtAmount; bool private swapping; bool public swapEnabled; event ExcludeFromFees(address indexed account, bool isExcluded); event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20("Etheroll", "Etheroll") { address router; if (block.chainid == 56) { router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router } else if (block.chainid == 97) { router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router } else if (block.chainid == 1 || block.chainid == 5) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet } else { revert(); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); feeOnBuy = 35; feeOnSell = 35; feeReceiver = 0xdb990e89B510d76DC7A74B5C5F506629d2E7A685; maxSwapPerBlock = 2; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; maxWalletLimitEnabled = true; _isExcludedFromMaxWalletLimit[owner()] = true; _isExcludedFromMaxWalletLimit[address(this)] = true; _isExcludedFromMaxWalletLimit[address(0xdead)] = true; _isExcludedFromMaxWalletLimit[feeReceiver] = true; _mintOnce(owner(), 90e9 * (10 ** decimals())); _mintOnce(address(this), 10e9 * (10 ** decimals())); swapTokensAtAmount = totalSupply() * 2 / 100; // 2% maxWalletAmount = totalSupply() * 20 / 1000; swapEnabled = false; } receive() external payable {} function claimStuckTokens(address token) external onlyOwner { if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this))); } function excludeFromFees(address account, bool excluded) external onlyOwner{ _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } event UpdateFees(uint256 feeOnBuy, uint256 feeOnSell); function updateFees(uint256 _feeOnSell, uint256 _feeOnBuy) external onlyOwner { require(_feeOnSell <= 40, "Fees too high."); require(_feeOnBuy <= 40, "Fees too high."); feeOnBuy = _feeOnBuy; feeOnSell = _feeOnSell; emit UpdateFees(feeOnSell, feeOnBuy); } event FeeReceiverChanged(address feeReceiver); function changeFeeReceiver(address _feeReceiver) external onlyOwner{ require(_feeReceiver != address(0), "CSLT: Fee receiver cannot be the zero address"); feeReceiver = _feeReceiver; emit FeeReceiverChanged(feeReceiver); } event TradingEnabled(bool tradingEnabled); bool public tradingEnabled; function enableTrading() external onlyOwner{ require(!tradingEnabled, "CSLT: Trading already enabled."); tradingEnabled = true; swapEnabled = true; emit TradingEnabled(tradingEnabled); } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "CSLT: transfer from the zero address"); require(to != address(0), "CSLT: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "CSLT: Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 blockNumber = block.number; uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair && (swapInBlock[blockNumber] <= maxSwapPerBlock) && !_isExcludedFromFees[from] && swapEnabled ) { swapping = true; swapAndSendFee(swapTokensAtAmount); ++swapInBlock[blockNumber]; swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = feeOnBuy; } else if (to == uniswapV2Pair) { _totalFees = feeOnSell; } else { _totalFees = 0; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } if (maxWalletLimitEnabled) { if (!_isExcludedFromMaxWalletLimit[from] && !_isExcludedFromMaxWalletLimit[to] && to != uniswapV2Pair ) { uint256 balance = balanceOf(to); require( balance + amount <= maxWalletAmount, "MaxWallet: Recipient exceeds the maxWalletAmount" ); } } super._transfer(from, to, amount); } function setSwapTokensAtAmount(uint256 newAmount, bool _swapEnabled, uint256 _maxSwapPerBlock) external onlyOwner{ require(newAmount > totalSupply() / 1_000_000, "CSLT: SwapTokensAtAmount must be greater than 0.0001% of total supply"); require(newAmount < totalSupply(), "CSLT: Not good."); swapTokensAtAmount = newAmount; swapEnabled = _swapEnabled; maxSwapPerBlock = _maxSwapPerBlock; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndSendFee(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; uint256 contractBalance = balanceOf(address(this)); if (contractBalance < tokenAmount) { return; } address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ) {} catch { return; } uint256 newBalance = address(this).balance - initialBalance; payable(feeReceiver).sendValue(newBalance); emit SwapAndSendFee(tokenAmount, newBalance); } mapping(address => bool) private _isExcludedFromMaxWalletLimit; bool public maxWalletLimitEnabled; uint256 public maxWalletAmount; event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded); event MaxWalletLimitStateChanged(bool maxWalletLimit); event MaxWalletLimitAmountChanged(uint256 maxWalletAmount); function setEnableMaxWalletLimit(bool enable) external onlyOwner { require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state"); maxWalletLimitEnabled = enable; emit MaxWalletLimitStateChanged(maxWalletLimitEnabled); } function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner { require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%"); maxWalletAmount = _maxWalletAmount * (10 ** decimals()); emit MaxWalletLimitAmountChanged(maxWalletAmount); } function excludeFromMaxWallet(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state"); require(account != address(this), "Can't set this address."); _isExcludedFromMaxWalletLimit[account] = exclude; emit ExcludedFromMaxWalletLimit(account, exclude); } function isExcludedFromMaxWalletLimit(address account) public view returns(bool) { return _isExcludedFromMaxWalletLimit[account]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeReceiver","type":"address"}],"name":"FeeReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingEnabled","type":"bool"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"UpdateFees","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":"_feeReceiver","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"},{"internalType":"bool","name":"_swapEnabled","type":"bool"},{"internalType":"uint256","name":"_maxSwapPerBlock","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeOnSell","type":"uint256"},{"internalType":"uint256","name":"_feeOnBuy","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801562000010575f80fd5b50604080518082018252600880825267115d1a195c9bdb1b60c21b60208084018290528451808601909552918452908301529060036200005183826200079a565b5060046200006082826200079a565b5050505f62000074620004eb60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f46603803620000e757507310ed43c718714eb63d5aa57b78b54704e256024e62000142565b466061036200010c575073d99d1c33f9fc3444f8101754abc46c52416550d162000142565b46600114806200011c5750466005145b156200013e5750737a250d5630b4cf539739df2c5dacb4c659f2488d62000142565b5f80fd5b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000184573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001aa919062000866565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021c919062000866565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000267573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028d919062000866565b600680546001600160a01b038086166001600160a01b031992831681179093556007805491851691909216179055909150620002cd9030905f19620004ef565b6023600a819055600b55600d80546001600160a01b03191673db990e89b510d76dc7a74b5c5f506629d2e7a6851790556002600c55600160085f6200031a6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff1995861617905560089092527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054841660019081179091553083529082208054841682179055601180549093168117909255601090620003a76005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260109093528183208054851660019081179091557f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b698054861682179055600d54909116835291208054909216179055620004626200043d6005546001600160a01b031690565b6200044b6012600a620009a4565b6200045c906414f46b0400620009b4565b6200061a565b6200048630620004756012600a620009a4565b6200045c906402540be400620009b4565b60646200049260025490565b6200049f906002620009b4565b620004ab9190620009ce565b600e556103e8620004bb60025490565b620004c8906014620009b4565b620004d49190620009ce565b6012555050600f805461ff00191690555062000a04565b3390565b6001600160a01b038316620005575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005ba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200054e565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006725760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200054e565b8060025f828254620006859190620009ee565b90915550506001600160a01b0382165f9081526020819052604081208054839290620006b3908490620009ee565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200072557607f821691505b6020821081036200074457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200079557805f5260205f20601f840160051c81016020851015620007715750805b601f840160051c820191505b8181101562000792575f81556001016200077d565b50505b505050565b81516001600160401b03811115620007b657620007b6620006fc565b620007ce81620007c7845462000710565b846200074a565b602080601f83116001811462000804575f8415620007ec5750858301515b5f19600386901b1c1916600185901b1785556200085e565b5f85815260208120601f198616915b82811015620008345788860151825594840194600190910190840162000813565b50858210156200085257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121562000877575f80fd5b81516001600160a01b03811681146200088e575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620008e957815f1904821115620008cd57620008cd62000895565b80851615620008db57918102915b93841c9390800290620008ae565b509250929050565b5f8262000901575060016200099e565b816200090f57505f6200099e565b8160018114620009285760028114620009335762000953565b60019150506200099e565b60ff84111562000947576200094762000895565b50506001821b6200099e565b5060208310610133831016604e8410600b841016171562000978575081810a6200099e565b620009848383620008a9565b805f19048211156200099a576200099a62000895565b0290505b92915050565b5f6200088e60ff841683620008f1565b80820281158282048414176200099e576200099e62000895565b5f82620009e957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200099e576200099e62000895565b6121848062000a125f395ff3fe60806040526004361061020a575f3560e01c80637c08b96411610113578063b3f006741161009d578063dd62ed3e1161006d578063dd62ed3e14610603578063e2f4560514610647578063f2fde38b1461065c578063f61062841461067b578063f9d0831a14610690575f80fd5b8063b3f0067414610591578063bb8c3ee0146105b0578063c0246668146105c5578063d2fcc001146105e4575f80fd5b806395d89b41116100e357806395d89b41146104f3578063a457c2d714610507578063a8a69b9d14610526578063a9059cbb1461055d578063aa4bde281461057c575f80fd5b80637c08b964146104845780638a8c523c146104a35780638da5cb5b146104b7578063910e9726146104d4575f80fd5b8063395093511161019457806365048d081161016457806365048d08146103ea5780636db79437146103ff5780636ddd17131461041e57806370a082311461043c578063715018a614610470575f80fd5b8063395093511461035657806349bd5a5e146103755780634ada218b146103945780634fbee193146103b3575f80fd5b806321a9d82a116101da57806321a9d82a146102c357806323b872dd146102dc57806327a14fc2146102fb5780632a6c7dba1461031c578063313ce5671461033b575f80fd5b806306fdde0314610215578063095ea7b31461023f5780631694505e1461026e57806318160ddd146102a5575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b506102296106af565b6040516102369190611cc9565b60405180910390f35b34801561024a575f80fd5b5061025e610259366004611d29565b61073f565b6040519015158152602001610236565b348015610279575f80fd5b5060065461028d906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156102b0575f80fd5b506002545b604051908152602001610236565b3480156102ce575f80fd5b5060115461025e9060ff1681565b3480156102e7575f80fd5b5061025e6102f6366004611d53565b610755565b348015610306575f80fd5b5061031a610315366004611d91565b610809565b005b348015610327575f80fd5b5061031a610336366004611db5565b61090f565b348015610346575f80fd5b5060405160128152602001610236565b348015610361575f80fd5b5061025e610370366004611d29565b6109ee565b348015610380575f80fd5b5060075461028d906001600160a01b031681565b34801561039f575f80fd5b50600f5461025e9062010000900460ff1681565b3480156103be575f80fd5b5061025e6103cd366004611dd7565b6001600160a01b03165f9081526008602052604090205460ff1690565b3480156103f5575f80fd5b506102b5600b5481565b34801561040a575f80fd5b5061031a610419366004611df2565b610a29565b348015610429575f80fd5b50600f5461025e90610100900460ff1681565b348015610447575f80fd5b506102b5610456366004611dd7565b6001600160a01b03165f9081526020819052604090205490565b34801561047b575f80fd5b5061031a610b1e565b34801561048f575f80fd5b5061031a61049e366004611dd7565b610b91565b3480156104ae575f80fd5b5061031a610c75565b3480156104c2575f80fd5b506005546001600160a01b031661028d565b3480156104df575f80fd5b5061031a6104ee366004611e12565b610d4d565b3480156104fe575f80fd5b50610229610ea8565b348015610512575f80fd5b5061025e610521366004611d29565b610eb7565b348015610531575f80fd5b5061025e610540366004611dd7565b6001600160a01b03165f9081526010602052604090205460ff1690565b348015610568575f80fd5b5061025e610577366004611d29565b610f4f565b348015610587575f80fd5b506102b560125481565b34801561059c575f80fd5b50600d5461028d906001600160a01b031681565b3480156105bb575f80fd5b506102b5600a5481565b3480156105d0575f80fd5b5061031a6105df366004611e36565b610f5b565b3480156105ef575f80fd5b5061031a6105fe366004611e36565b610fe4565b34801561060e575f80fd5b506102b561061d366004611e6d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610652575f80fd5b506102b5600e5481565b348015610667575f80fd5b5061031a610676366004611dd7565b611138565b348015610686575f80fd5b506102b5600c5481565b34801561069b575f80fd5b5061031a6106aa366004611dd7565b611222565b6060600380546106be90611e99565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611e99565b80156107355780601f1061070c57610100808354040283529160200191610735565b820191905f5260205f20905b81548152906001019060200180831161071857829003601f168201915b5050505050905090565b5f61074b338484611347565b5060015b92915050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1981146107f357828110156107e65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107f38533858403611347565b6107fe85858561146a565b506001949350505050565b6005546001600160a01b031633146108335760405162461bcd60e51b81526004016107dd90611ed1565b60646108416012600a611ffa565b60025461084e9190612008565b6108589190612008565b8110156108bd5760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b60648201526084016107dd565b6108c96012600a611ffa565b6108d39082612027565b60128190556040519081527f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942906020015b60405180910390a150565b6005546001600160a01b031633146109395760405162461bcd60e51b81526004016107dd90611ed1565b60115460ff161515811515036109a75760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060448201526c746f207468617420737461746560981b60648201526084016107dd565b6011805460ff191682151590811790915560405160ff909116151581527f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f190602001610904565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161074b918590610a2490869061203e565b611347565b6005546001600160a01b03163314610a535760405162461bcd60e51b81526004016107dd90611ed1565b6028821115610a955760405162461bcd60e51b815260206004820152600e60248201526d2332b2b9903a37b7903434b3b41760911b60448201526064016107dd565b6028811115610ad75760405162461bcd60e51b815260206004820152600e60248201526d2332b2b9903a37b7903434b3b41760911b60448201526064016107dd565b600a819055600b82905560408051838152602081018390527f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04910160405180910390a15050565b6005546001600160a01b03163314610b485760405162461bcd60e51b81526004016107dd90611ed1565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b038116610c275760405162461bcd60e51b815260206004820152602d60248201527f43534c543a204665652072656365697665722063616e6e6f742062652074686560448201526c207a65726f206164647265737360981b60648201526084016107dd565b600d80546001600160a01b0319166001600160a01b0383169081179091556040519081527f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990602001610904565b6005546001600160a01b03163314610c9f5760405162461bcd60e51b81526004016107dd90611ed1565b600f5462010000900460ff1615610cf85760405162461bcd60e51b815260206004820152601e60248201527f43534c543a2054726164696e6720616c726561647920656e61626c65642e000060448201526064016107dd565b600f80546201010062ffff001990911617908190556040516201000090910460ff16151581527fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a9060200160405180910390a1565b6005546001600160a01b03163314610d775760405162461bcd60e51b81526004016107dd90611ed1565b620f4240610d8460025490565b610d8e9190612008565b8311610e105760405162461bcd60e51b815260206004820152604560248201527f43534c543a2053776170546f6b656e734174416d6f756e74206d75737420626560448201527f2067726561746572207468616e20302e3030303125206f6620746f74616c20736064820152647570706c7960d81b608482015260a4016107dd565b6002548310610e535760405162461bcd60e51b815260206004820152600f60248201526e21a9a62a1d102737ba1033b7b7b21760891b60448201526064016107dd565b600e839055600f805461ff00191661010084151502179055600c8190556040518381527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1459060200160405180910390a1505050565b6060600480546106be90611e99565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107dd565b610f453385858403611347565b5060019392505050565b5f61074b33848461146a565b6005546001600160a01b03163314610f855760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b0382165f81815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b6005546001600160a01b0316331461100e5760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b0382165f9081526010602052604090205481151560ff9091161515036110895760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f207468617420736044820152637461746560e01b60648201526084016107dd565b306001600160a01b038316036110e15760405162461bcd60e51b815260206004820152601760248201527f43616e277420736574207468697320616464726573732e00000000000000000060448201526064016107dd565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c9101610fd8565b6005546001600160a01b031633146111625760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b0381166111c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107dd565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461124c5760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b038116611268576112643347611897565b5050565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156112b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d89190612051565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611320573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112649190612068565b50565b6001600160a01b0383166113a95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b03821661140a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114cc5760405162461bcd60e51b8152602060048201526024808201527f43534c543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b03821661152d5760405162461bcd60e51b815260206004820152602260248201527f43534c543a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b600f5462010000900460ff168061155b57506001600160a01b0383165f9081526008602052604090205460ff165b8061157d57506001600160a01b0382165f9081526008602052604090205460ff165b6115c95760405162461bcd60e51b815260206004820152601e60248201527f43534c543a2054726164696e67206e6f742079657420656e61626c656421000060448201526064016107dd565b805f036115e0576115db83835f611941565b505050565b305f90815260208190526040902054600e54439190811080159081906116095750600f5460ff16155b801561162257506007546001600160a01b038681169116145b801561163d5750600c545f8481526009602052604090205411155b801561166157506001600160a01b0386165f9081526008602052604090205460ff16155b80156116745750600f54610100900460ff165b156116bc57600f805460ff19166001179055600e5461169290611b0e565b5f83815260096020526040812080549091906116ad90612083565b90915550600f805460ff191690555b6001600160a01b0386165f9081526008602052604081205460ff16806116f957506001600160a01b0386165f9081526008602052604090205460ff165b806117065750600f5460ff165b1561171257505f611753565b6007546001600160a01b03908116908816036117315750600a54611753565b6007546001600160a01b03908116908716036117505750600b54611753565b505f5b801561178b575f60646117668388612027565b6117709190612008565b905061177c818761209b565b9550611789883083611941565b505b60115460ff1615611883576001600160a01b0387165f9081526010602052604090205460ff161580156117d657506001600160a01b0386165f9081526010602052604090205460ff16155b80156117f057506007546001600160a01b03878116911614155b15611883576001600160a01b0386165f9081526020819052604090205460125461181a878361203e565b11156118815760405162461bcd60e51b815260206004820152603060248201527f4d617857616c6c65743a20526563697069656e7420657863656564732074686560448201526f081b585e15d85b1b195d105b5bdd5b9d60821b60648201526084016107dd565b505b61188e878787611941565b50505050505050565b5f814710156118e85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107dd565b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114611931576040519150601f19603f3d011682016040523d82523d5f602084013e611936565b606091505b509095945050505050565b6001600160a01b0383166119a55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dd565b6001600160a01b038216611a075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dd565b6001600160a01b0383165f9081526020819052604090205481811015611a7e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107dd565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611ab490849061203e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0091815260200190565b60405180910390a350505050565b305f90815260208190526040902054479082811015611b2c57505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b5f57611b5f6120ae565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611bb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bda91906120c2565b81600181518110611bed57611bed6120ae565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611c329087905f908690309042906004016120dd565b5f604051808303815f87803b158015611c49575f80fd5b505af1925050508015611c5a575060015b611c645750505050565b5f611c6f844761209b565b600d54909150611c88906001600160a01b031682611897565b5060408051868152602081018390527f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b910160405180910390a15050505050565b5f602080835283518060208501525f5b81811015611cf557858101830151858201604001528201611cd9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611344575f80fd5b5f8060408385031215611d3a575f80fd5b8235611d4581611d15565b946020939093013593505050565b5f805f60608486031215611d65575f80fd5b8335611d7081611d15565b92506020840135611d8081611d15565b929592945050506040919091013590565b5f60208284031215611da1575f80fd5b5035919050565b8015158114611344575f80fd5b5f60208284031215611dc5575f80fd5b8135611dd081611da8565b9392505050565b5f60208284031215611de7575f80fd5b8135611dd081611d15565b5f8060408385031215611e03575f80fd5b50508035926020909101359150565b5f805f60608486031215611e24575f80fd5b833592506020840135611d8081611da8565b5f8060408385031215611e47575f80fd5b8235611e5281611d15565b91506020830135611e6281611da8565b809150509250929050565b5f8060408385031215611e7e575f80fd5b8235611e8981611d15565b91506020830135611e6281611d15565b600181811c90821680611ead57607f821691505b602082108103611ecb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f5457815f1904821115611f3a57611f3a611f06565b80851615611f4757918102915b93841c9390800290611f1f565b509250929050565b5f82611f6a5750600161074f565b81611f7657505f61074f565b8160018114611f8c5760028114611f9657611fb2565b600191505061074f565b60ff841115611fa757611fa7611f06565b50506001821b61074f565b5060208310610133831016604e8410600b8410161715611fd5575081810a61074f565b611fdf8383611f1a565b805f1904821115611ff257611ff2611f06565b029392505050565b5f611dd060ff841683611f5c565b5f8261202257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761074f5761074f611f06565b8082018082111561074f5761074f611f06565b5f60208284031215612061575f80fd5b5051919050565b5f60208284031215612078575f80fd5b8151611dd081611da8565b5f6001820161209457612094611f06565b5060010190565b8181038181111561074f5761074f611f06565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156120d2575f80fd5b8151611dd081611d15565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561212d5784516001600160a01b031683529383019391830191600101612108565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206db18ea36ad0e19a8134ac2ef72b931324b33debb05e37b18c512e6e02b4b5bf64736f6c63430008160033
Deployed Bytecode
0x60806040526004361061020a575f3560e01c80637c08b96411610113578063b3f006741161009d578063dd62ed3e1161006d578063dd62ed3e14610603578063e2f4560514610647578063f2fde38b1461065c578063f61062841461067b578063f9d0831a14610690575f80fd5b8063b3f0067414610591578063bb8c3ee0146105b0578063c0246668146105c5578063d2fcc001146105e4575f80fd5b806395d89b41116100e357806395d89b41146104f3578063a457c2d714610507578063a8a69b9d14610526578063a9059cbb1461055d578063aa4bde281461057c575f80fd5b80637c08b964146104845780638a8c523c146104a35780638da5cb5b146104b7578063910e9726146104d4575f80fd5b8063395093511161019457806365048d081161016457806365048d08146103ea5780636db79437146103ff5780636ddd17131461041e57806370a082311461043c578063715018a614610470575f80fd5b8063395093511461035657806349bd5a5e146103755780634ada218b146103945780634fbee193146103b3575f80fd5b806321a9d82a116101da57806321a9d82a146102c357806323b872dd146102dc57806327a14fc2146102fb5780632a6c7dba1461031c578063313ce5671461033b575f80fd5b806306fdde0314610215578063095ea7b31461023f5780631694505e1461026e57806318160ddd146102a5575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b506102296106af565b6040516102369190611cc9565b60405180910390f35b34801561024a575f80fd5b5061025e610259366004611d29565b61073f565b6040519015158152602001610236565b348015610279575f80fd5b5060065461028d906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156102b0575f80fd5b506002545b604051908152602001610236565b3480156102ce575f80fd5b5060115461025e9060ff1681565b3480156102e7575f80fd5b5061025e6102f6366004611d53565b610755565b348015610306575f80fd5b5061031a610315366004611d91565b610809565b005b348015610327575f80fd5b5061031a610336366004611db5565b61090f565b348015610346575f80fd5b5060405160128152602001610236565b348015610361575f80fd5b5061025e610370366004611d29565b6109ee565b348015610380575f80fd5b5060075461028d906001600160a01b031681565b34801561039f575f80fd5b50600f5461025e9062010000900460ff1681565b3480156103be575f80fd5b5061025e6103cd366004611dd7565b6001600160a01b03165f9081526008602052604090205460ff1690565b3480156103f5575f80fd5b506102b5600b5481565b34801561040a575f80fd5b5061031a610419366004611df2565b610a29565b348015610429575f80fd5b50600f5461025e90610100900460ff1681565b348015610447575f80fd5b506102b5610456366004611dd7565b6001600160a01b03165f9081526020819052604090205490565b34801561047b575f80fd5b5061031a610b1e565b34801561048f575f80fd5b5061031a61049e366004611dd7565b610b91565b3480156104ae575f80fd5b5061031a610c75565b3480156104c2575f80fd5b506005546001600160a01b031661028d565b3480156104df575f80fd5b5061031a6104ee366004611e12565b610d4d565b3480156104fe575f80fd5b50610229610ea8565b348015610512575f80fd5b5061025e610521366004611d29565b610eb7565b348015610531575f80fd5b5061025e610540366004611dd7565b6001600160a01b03165f9081526010602052604090205460ff1690565b348015610568575f80fd5b5061025e610577366004611d29565b610f4f565b348015610587575f80fd5b506102b560125481565b34801561059c575f80fd5b50600d5461028d906001600160a01b031681565b3480156105bb575f80fd5b506102b5600a5481565b3480156105d0575f80fd5b5061031a6105df366004611e36565b610f5b565b3480156105ef575f80fd5b5061031a6105fe366004611e36565b610fe4565b34801561060e575f80fd5b506102b561061d366004611e6d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610652575f80fd5b506102b5600e5481565b348015610667575f80fd5b5061031a610676366004611dd7565b611138565b348015610686575f80fd5b506102b5600c5481565b34801561069b575f80fd5b5061031a6106aa366004611dd7565b611222565b6060600380546106be90611e99565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611e99565b80156107355780601f1061070c57610100808354040283529160200191610735565b820191905f5260205f20905b81548152906001019060200180831161071857829003601f168201915b5050505050905090565b5f61074b338484611347565b5060015b92915050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1981146107f357828110156107e65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107f38533858403611347565b6107fe85858561146a565b506001949350505050565b6005546001600160a01b031633146108335760405162461bcd60e51b81526004016107dd90611ed1565b60646108416012600a611ffa565b60025461084e9190612008565b6108589190612008565b8110156108bd5760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b60648201526084016107dd565b6108c96012600a611ffa565b6108d39082612027565b60128190556040519081527f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942906020015b60405180910390a150565b6005546001600160a01b031633146109395760405162461bcd60e51b81526004016107dd90611ed1565b60115460ff161515811515036109a75760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060448201526c746f207468617420737461746560981b60648201526084016107dd565b6011805460ff191682151590811790915560405160ff909116151581527f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f190602001610904565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161074b918590610a2490869061203e565b611347565b6005546001600160a01b03163314610a535760405162461bcd60e51b81526004016107dd90611ed1565b6028821115610a955760405162461bcd60e51b815260206004820152600e60248201526d2332b2b9903a37b7903434b3b41760911b60448201526064016107dd565b6028811115610ad75760405162461bcd60e51b815260206004820152600e60248201526d2332b2b9903a37b7903434b3b41760911b60448201526064016107dd565b600a819055600b82905560408051838152602081018390527f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04910160405180910390a15050565b6005546001600160a01b03163314610b485760405162461bcd60e51b81526004016107dd90611ed1565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b038116610c275760405162461bcd60e51b815260206004820152602d60248201527f43534c543a204665652072656365697665722063616e6e6f742062652074686560448201526c207a65726f206164647265737360981b60648201526084016107dd565b600d80546001600160a01b0319166001600160a01b0383169081179091556040519081527f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990602001610904565b6005546001600160a01b03163314610c9f5760405162461bcd60e51b81526004016107dd90611ed1565b600f5462010000900460ff1615610cf85760405162461bcd60e51b815260206004820152601e60248201527f43534c543a2054726164696e6720616c726561647920656e61626c65642e000060448201526064016107dd565b600f80546201010062ffff001990911617908190556040516201000090910460ff16151581527fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a9060200160405180910390a1565b6005546001600160a01b03163314610d775760405162461bcd60e51b81526004016107dd90611ed1565b620f4240610d8460025490565b610d8e9190612008565b8311610e105760405162461bcd60e51b815260206004820152604560248201527f43534c543a2053776170546f6b656e734174416d6f756e74206d75737420626560448201527f2067726561746572207468616e20302e3030303125206f6620746f74616c20736064820152647570706c7960d81b608482015260a4016107dd565b6002548310610e535760405162461bcd60e51b815260206004820152600f60248201526e21a9a62a1d102737ba1033b7b7b21760891b60448201526064016107dd565b600e839055600f805461ff00191661010084151502179055600c8190556040518381527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1459060200160405180910390a1505050565b6060600480546106be90611e99565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107dd565b610f453385858403611347565b5060019392505050565b5f61074b33848461146a565b6005546001600160a01b03163314610f855760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b0382165f81815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b6005546001600160a01b0316331461100e5760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b0382165f9081526010602052604090205481151560ff9091161515036110895760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f207468617420736044820152637461746560e01b60648201526084016107dd565b306001600160a01b038316036110e15760405162461bcd60e51b815260206004820152601760248201527f43616e277420736574207468697320616464726573732e00000000000000000060448201526064016107dd565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c9101610fd8565b6005546001600160a01b031633146111625760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b0381166111c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107dd565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461124c5760405162461bcd60e51b81526004016107dd90611ed1565b6001600160a01b038116611268576112643347611897565b5050565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156112b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d89190612051565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611320573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112649190612068565b50565b6001600160a01b0383166113a95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b03821661140a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114cc5760405162461bcd60e51b8152602060048201526024808201527f43534c543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b03821661152d5760405162461bcd60e51b815260206004820152602260248201527f43534c543a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b600f5462010000900460ff168061155b57506001600160a01b0383165f9081526008602052604090205460ff165b8061157d57506001600160a01b0382165f9081526008602052604090205460ff165b6115c95760405162461bcd60e51b815260206004820152601e60248201527f43534c543a2054726164696e67206e6f742079657420656e61626c656421000060448201526064016107dd565b805f036115e0576115db83835f611941565b505050565b305f90815260208190526040902054600e54439190811080159081906116095750600f5460ff16155b801561162257506007546001600160a01b038681169116145b801561163d5750600c545f8481526009602052604090205411155b801561166157506001600160a01b0386165f9081526008602052604090205460ff16155b80156116745750600f54610100900460ff165b156116bc57600f805460ff19166001179055600e5461169290611b0e565b5f83815260096020526040812080549091906116ad90612083565b90915550600f805460ff191690555b6001600160a01b0386165f9081526008602052604081205460ff16806116f957506001600160a01b0386165f9081526008602052604090205460ff165b806117065750600f5460ff165b1561171257505f611753565b6007546001600160a01b03908116908816036117315750600a54611753565b6007546001600160a01b03908116908716036117505750600b54611753565b505f5b801561178b575f60646117668388612027565b6117709190612008565b905061177c818761209b565b9550611789883083611941565b505b60115460ff1615611883576001600160a01b0387165f9081526010602052604090205460ff161580156117d657506001600160a01b0386165f9081526010602052604090205460ff16155b80156117f057506007546001600160a01b03878116911614155b15611883576001600160a01b0386165f9081526020819052604090205460125461181a878361203e565b11156118815760405162461bcd60e51b815260206004820152603060248201527f4d617857616c6c65743a20526563697069656e7420657863656564732074686560448201526f081b585e15d85b1b195d105b5bdd5b9d60821b60648201526084016107dd565b505b61188e878787611941565b50505050505050565b5f814710156118e85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107dd565b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114611931576040519150601f19603f3d011682016040523d82523d5f602084013e611936565b606091505b509095945050505050565b6001600160a01b0383166119a55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dd565b6001600160a01b038216611a075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dd565b6001600160a01b0383165f9081526020819052604090205481811015611a7e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107dd565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611ab490849061203e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0091815260200190565b60405180910390a350505050565b305f90815260208190526040902054479082811015611b2c57505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b5f57611b5f6120ae565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611bb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bda91906120c2565b81600181518110611bed57611bed6120ae565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611c329087905f908690309042906004016120dd565b5f604051808303815f87803b158015611c49575f80fd5b505af1925050508015611c5a575060015b611c645750505050565b5f611c6f844761209b565b600d54909150611c88906001600160a01b031682611897565b5060408051868152602081018390527f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b910160405180910390a15050505050565b5f602080835283518060208501525f5b81811015611cf557858101830151858201604001528201611cd9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611344575f80fd5b5f8060408385031215611d3a575f80fd5b8235611d4581611d15565b946020939093013593505050565b5f805f60608486031215611d65575f80fd5b8335611d7081611d15565b92506020840135611d8081611d15565b929592945050506040919091013590565b5f60208284031215611da1575f80fd5b5035919050565b8015158114611344575f80fd5b5f60208284031215611dc5575f80fd5b8135611dd081611da8565b9392505050565b5f60208284031215611de7575f80fd5b8135611dd081611d15565b5f8060408385031215611e03575f80fd5b50508035926020909101359150565b5f805f60608486031215611e24575f80fd5b833592506020840135611d8081611da8565b5f8060408385031215611e47575f80fd5b8235611e5281611d15565b91506020830135611e6281611da8565b809150509250929050565b5f8060408385031215611e7e575f80fd5b8235611e8981611d15565b91506020830135611e6281611d15565b600181811c90821680611ead57607f821691505b602082108103611ecb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f5457815f1904821115611f3a57611f3a611f06565b80851615611f4757918102915b93841c9390800290611f1f565b509250929050565b5f82611f6a5750600161074f565b81611f7657505f61074f565b8160018114611f8c5760028114611f9657611fb2565b600191505061074f565b60ff841115611fa757611fa7611f06565b50506001821b61074f565b5060208310610133831016604e8410600b8410161715611fd5575081810a61074f565b611fdf8383611f1a565b805f1904821115611ff257611ff2611f06565b029392505050565b5f611dd060ff841683611f5c565b5f8261202257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761074f5761074f611f06565b8082018082111561074f5761074f611f06565b5f60208284031215612061575f80fd5b5051919050565b5f60208284031215612078575f80fd5b8151611dd081611da8565b5f6001820161209457612094611f06565b5060010190565b8181038181111561074f5761074f611f06565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156120d2575f80fd5b8151611dd081611d15565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561212d5784516001600160a01b031683529383019391830191600101612108565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206db18ea36ad0e19a8134ac2ef72b931324b33debb05e37b18c512e6e02b4b5bf64736f6c63430008160033
Deployed Bytecode Sourcemap
8186:9306:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4097:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5011:169;;;;;;;;;;-1:-1:-1;5011:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5011:169:0;1023:187:1;8271:41:0;;;;;;;;;;-1:-1:-1;8271:41:0;;;;-1:-1:-1;;;;;8271:41:0;;;;;;-1:-1:-1;;;;;1404:32:1;;;1386:51;;1374:2;1359:18;8271:41:0;1215:228:1;4418:108:0;;;;;;;;;;-1:-1:-1;4506:12:0;;4418:108;;;1594:25:1;;;1582:2;1567:18;4418:108:0;1448:177:1;16019:36:0;;;;;;;;;;-1:-1:-1;16019:36:0;;;;;;;;5188:573;;;;;;;;;;-1:-1:-1;5188:573:0;;;;;:::i;:::-;;:::i;16597:340::-;;;;;;;;;;-1:-1:-1;16597:340:0;;;;;:::i;:::-;;:::i;:::-;;16309:280;;;;;;;;;;-1:-1:-1;16309:280:0;;;;;:::i;:::-;;:::i;4317:93::-;;;;;;;;;;-1:-1:-1;4317:93:0;;4400:2;2787:36:1;;2775:2;2760:18;4317:93:0;2645:184:1;5769:215:0;;;;;;;;;;-1:-1:-1;5769:215:0;;;;;:::i;:::-;;:::i;8319:29::-;;;;;;;;;;-1:-1:-1;8319:29:0;;;;-1:-1:-1;;;;;8319:29:0;;;12195:26;;;;;;;;;;-1:-1:-1;12195:26:0;;;;;;;;;;;11314:125;;;;;;;;;;-1:-1:-1;11314:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;11403:28:0;11379:4;11403:28;;;:19;:28;;;;;;;;;11314:125;8504:25;;;;;;;;;;;;;;;;11509:306;;;;;;;;;;-1:-1:-1;11509:306:0;;;;;:::i;:::-;;:::i;8688:26::-;;;;;;;;;;-1:-1:-1;8688:26:0;;;;;;;;;;;4534:127;;;;;;;;;;-1:-1:-1;4534:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4635:18:0;4608:7;4635:18;;;;;;;;;;;;4534:127;3286:148;;;;;;;;;;;;;:::i;11877:256::-;;;;;;;;;;-1:-1:-1;11877:256:0;;;;;:::i;:::-;;:::i;12230:229::-;;;;;;;;;;;;;:::i;3072:79::-;;;;;;;;;;-1:-1:-1;3137:6:0;;-1:-1:-1;;;;;3137:6:0;3072:79;;14603:501;;;;;;;;;;-1:-1:-1;14603:501:0;;;;;:::i;:::-;;:::i;4205:104::-;;;;;;;;;;;;;:::i;5992:413::-;;;;;;;;;;-1:-1:-1;5992:413:0;;;;;:::i;:::-;;:::i;17344:145::-;;;;;;;;;;-1:-1:-1;17344:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;17443:38:0;17419:4;17443:38;;;:29;:38;;;;;;;;;17344:145;4669:175;;;;;;;;;;-1:-1:-1;4669:175:0;;;;;:::i;:::-;;:::i;16062:30::-;;;;;;;;;;;;;;;;8578:27;;;;;;;;;;-1:-1:-1;8578:27:0;;;;-1:-1:-1;;;;;8578:27:0;;;8473:24;;;;;;;;;;;;;;;;11121:185;;;;;;;;;;-1:-1:-1;11121:185:0;;;;;:::i;:::-;;:::i;16945:391::-;;;;;;;;;;-1:-1:-1;16945:391:0;;;;;:::i;:::-;;:::i;4852:151::-;;;;;;;;;;-1:-1:-1;4852:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4968:18:0;;;4941:7;4968:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4852:151;8614:34;;;;;;;;;;;;;;;;3442:244;;;;;;;;;;-1:-1:-1;3442:244:0;;;;;:::i;:::-;;:::i;8538:31::-;;;;;;;;;;;;;;;;10813:300;;;;;;;;;;-1:-1:-1;10813:300:0;;;;;:::i;:::-;;:::i;4097:100::-;4151:13;4184:5;4177:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4097:100;:::o;5011:169::-;5094:4;5111:39;2475:10;5134:7;5143:6;5111:8;:39::i;:::-;-1:-1:-1;5168:4:0;5011:169;;;;;:::o;5188:573::-;-1:-1:-1;;;;;5372:19:0;;5328:4;5372:19;;;:11;:19;;;;;;;;2475:10;5372:33;;;;;;;;-1:-1:-1;;5420:37:0;;5416:265;;5502:6;5482:16;:26;;5474:79;;;;-1:-1:-1;;;5474:79:0;;5296:2:1;5474:79:0;;;5278:21:1;5335:2;5315:18;;;5308:30;5374:34;5354:18;;;5347:62;-1:-1:-1;;;5425:18:1;;;5418:38;5473:19;;5474:79:0;;;;;;;;;5597:57;5606:6;2475:10;5647:6;5628:16;:25;5597:8;:57::i;:::-;5693:36;5703:6;5711:9;5722:6;5693:9;:36::i;:::-;-1:-1:-1;5749:4:0;;5188:573;-1:-1:-1;;;;5188:573:0:o;16597:340::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;16748:3:::1;16727:16;4400:2:::0;16727::::1;:16;:::i;:::-;4506:12:::0;;16710:34:::1;;;;:::i;:::-;16709:42;;;;:::i;:::-;16689:16;:62;;16681:120;;;::::0;-1:-1:-1;;;16681:120:0;;7797:2:1;16681:120:0::1;::::0;::::1;7779:21:1::0;7836:2;7816:18;;;7809:30;7875:34;7855:18;;;7848:62;-1:-1:-1;;;7926:18:1;;;7919:43;7979:19;;16681:120:0::1;7595:409:1::0;16681:120:0::1;16850:16;4400:2:::0;16850::::1;:16;:::i;:::-;16830:37;::::0;:16;:37:::1;:::i;:::-;16812:15;:55:::0;;;16885:44:::1;::::0;1594:25:1;;;16885:44:0::1;::::0;1582:2:1;1567:18;16885:44:0::1;;;;;;;;16597:340:::0;:::o;16309:280::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;16403:21:::1;::::0;::::1;;16393:31;;::::0;::::1;;::::0;16385:88:::1;;;::::0;-1:-1:-1;;;16385:88:0;;8384:2:1;16385:88:0::1;::::0;::::1;8366:21:1::0;8423:2;8403:18;;;8396:30;8462:34;8442:18;;;8435:62;-1:-1:-1;;;8513:18:1;;;8506:43;8566:19;;16385:88:0::1;8182:409:1::0;16385:88:0::1;16484:21;:30:::0;;-1:-1:-1;;16484:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16532:49:::1;::::0;16484:30:::1;16559:21:::0;;;1188:14:1;1181:22;1163:41;;16532:49:0::1;::::0;1151:2:1;1136:18;16532:49:0::1;1023:187:1::0;5769:215:0;2475:10;5857:4;5906:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5906:34:0;;;;;;;;;;5857:4;;5874:80;;5897:7;;5906:47;;5943:10;;5906:47;:::i;:::-;5874:8;:80::i;11509:306::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;11620:2:::1;11606:10;:16;;11598:43;;;::::0;-1:-1:-1;;;11598:43:0;;8928:2:1;11598:43:0::1;::::0;::::1;8910:21:1::0;8967:2;8947:18;;;8940:30;-1:-1:-1;;;8986:18:1;;;8979:44;9040:18;;11598:43:0::1;8726:338:1::0;11598:43:0::1;11673:2;11660:9;:15;;11652:42;;;::::0;-1:-1:-1;;;11652:42:0;;8928:2:1;11652:42:0::1;::::0;::::1;8910:21:1::0;8967:2;8947:18;;;8940:30;-1:-1:-1;;;8986:18:1;;;8979:44;9040:18;;11652:42:0::1;8726:338:1::0;11652:42:0::1;11705:8;:20:::0;;;11736:9:::1;:22:::0;;;11776:31:::1;::::0;;9243:25:1;;;9299:2;9284:18;;9277:34;;;11776:31:0::1;::::0;9216:18:1;11776:31:0::1;;;;;;;11509:306:::0;;:::o;3286:148::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;3377:6:::1;::::0;3356:40:::1;::::0;3393:1:::1;::::0;-1:-1:-1;;;;;3377:6:0::1;::::0;3356:40:::1;::::0;3393:1;;3356:40:::1;3407:6;:19:::0;;-1:-1:-1;;;;;;3407:19:0::1;::::0;;3286:148::o;11877:256::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11963:26:0;::::1;11955:84;;;::::0;-1:-1:-1;;;11955:84:0;;9524:2:1;11955:84:0::1;::::0;::::1;9506:21:1::0;9563:2;9543:18;;;9536:30;9602:34;9582:18;;;9575:62;-1:-1:-1;;;9653:18:1;;;9646:43;9706:19;;11955:84:0::1;9322:409:1::0;11955:84:0::1;12050:11;:26:::0;;-1:-1:-1;;;;;;12050:26:0::1;-1:-1:-1::0;;;;;12050:26:0;::::1;::::0;;::::1;::::0;;;12094:31:::1;::::0;1386:51:1;;;12094:31:0::1;::::0;1374:2:1;1359:18;12094:31:0::1;1215:228:1::0;12230:229:0;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;12293:14:::1;::::0;;;::::1;;;12292:15;12284:58;;;::::0;-1:-1:-1;;;12284:58:0;;9938:2:1;12284:58:0::1;::::0;::::1;9920:21:1::0;9977:2;9957:18;;;9950:30;10016:32;9996:18;;;9989:60;10066:18;;12284:58:0::1;9736:354:1::0;12284:58:0::1;12353:14;:21:::0;;12385:18;-1:-1:-1;;12385:18:0;;;;;;;;12421:30:::1;::::0;12353:21;12436:14;;::::1;12353:21;12436:14;1188::1::0;1181:22;1163:41;;12421:30:0::1;::::0;1151:2:1;1136:18;12421:30:0::1;;;;;;;12230:229::o:0;14603:501::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;14763:9:::1;14747:13;4506:12:::0;;;4418:108;14747:13:::1;:25;;;;:::i;:::-;14735:9;:37;14727:119;;;::::0;-1:-1:-1;;;14727:119:0;;10297:2:1;14727:119:0::1;::::0;::::1;10279:21:1::0;10336:2;10316:18;;;10309:30;10375:34;10355:18;;;10348:62;10446:34;10426:18;;;10419:62;-1:-1:-1;;;10497:19:1;;;10490:36;10543:19;;14727:119:0::1;10095:473:1::0;14727:119:0::1;4506:12:::0;;14865:9:::1;:25;14857:53;;;::::0;-1:-1:-1;;;14857:53:0;;10775:2:1;14857:53:0::1;::::0;::::1;10757:21:1::0;10814:2;10794:18;;;10787:30;-1:-1:-1;;;10833:18:1;;;10826:45;10888:18;;14857:53:0::1;10573:339:1::0;14857:53:0::1;14921:18;:30:::0;;;14962:11:::1;:26:::0;;-1:-1:-1;;14962:26:0::1;;::::0;::::1;;;;::::0;;14999:15:::1;:34:::0;;;15051:45:::1;::::0;1594:25:1;;;15051:45:0::1;::::0;1582:2:1;1567:18;15051:45:0::1;;;;;;;14603:501:::0;;;:::o;4205:104::-;4261:13;4294:7;4287:14;;;;;:::i;5992:413::-;2475:10;6085:4;6129:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6129:34:0;;;;;;;;;;6182:35;;;;6174:85;;;;-1:-1:-1;;;6174:85:0;;11119:2:1;6174:85:0;;;11101:21:1;11158:2;11138:18;;;11131:30;11197:34;11177:18;;;11170:62;-1:-1:-1;;;11248:18:1;;;11241:35;11293:19;;6174:85:0;10917:401:1;6174:85:0;6295:67;2475:10;6318:7;6346:15;6327:16;:34;6295:8;:67::i;:::-;-1:-1:-1;6393:4:0;;5992:413;-1:-1:-1;;;5992:413:0:o;4669:175::-;4755:4;4772:42;2475:10;4796:9;4807:6;4772:9;:42::i;11121:185::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11207:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;11207:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11264:34;;1163:41:1;;;11264:34:0::1;::::0;1136:18:1;11264:34:0::1;;;;;;;;11121:185:::0;;:::o;16945:391::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17045:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;:49;::::1;;:38;::::0;;::::1;:49;;::::0;17036:98:::1;;;::::0;-1:-1:-1;;;17036:98:0;;11525:2:1;17036:98:0::1;::::0;::::1;11507:21:1::0;11564:2;11544:18;;;11537:30;11603:34;11583:18;;;11576:62;-1:-1:-1;;;11654:18:1;;;11647:34;11698:19;;17036:98:0::1;11323:400:1::0;17036:98:0::1;17172:4;-1:-1:-1::0;;;;;17153:24:0;::::1;::::0;17145:60:::1;;;::::0;-1:-1:-1;;;17145:60:0;;11930:2:1;17145:60:0::1;::::0;::::1;11912:21:1::0;11969:2;11949:18;;;11942:30;12008:25;11988:18;;;11981:53;12051:18;;17145:60:0::1;11728:347:1::0;17145:60:0::1;-1:-1:-1::0;;;;;17218:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:48;;-1:-1:-1;;17218:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17284:44;;1163:41:1;;;17284:44:0::1;::::0;1136:18:1;17284:44:0::1;1023:187:1::0;3442:244:0;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3531:22:0;::::1;3523:73;;;::::0;-1:-1:-1;;;3523:73:0;;12282:2:1;3523:73:0::1;::::0;::::1;12264:21:1::0;12321:2;12301:18;;;12294:30;12360:34;12340:18;;;12333:62;-1:-1:-1;;;12411:18:1;;;12404:36;12457:19;;3523:73:0::1;12080:402:1::0;3523:73:0::1;3633:6;::::0;3612:38:::1;::::0;-1:-1:-1;;;;;3612:38:0;;::::1;::::0;3633:6:::1;::::0;3612:38:::1;::::0;3633:6:::1;::::0;3612:38:::1;3661:6;:17:::0;;-1:-1:-1;;;;;;3661:17:0::1;-1:-1:-1::0;;;;;3661:17:0;;;::::1;::::0;;;::::1;::::0;;3442:244::o;10813:300::-;3199:6;;-1:-1:-1;;;;;3199:6:0;2475:10;3199:22;3191:67;;;;-1:-1:-1;;;3191:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10888:21:0;::::1;10884:127;;10926:52;10934:10;10956:21;10926:29;:52::i;:::-;;10813:300:::0;:::o;10884:127::-:1;11066:38;::::0;-1:-1:-1;;;11066:38:0;;11098:4:::1;11066:38;::::0;::::1;1386:51:1::0;-1:-1:-1;;;;;11031:22:0;::::1;::::0;::::1;::::0;11054:10:::1;::::0;11031:22;;11066:23:::1;::::0;1359:18:1;;11066:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11031:74;::::0;-1:-1:-1;;;;;;11031:74:0::1;::::0;;;;;;-1:-1:-1;;;;;12868:32:1;;;11031:74:0::1;::::0;::::1;12850:51:1::0;12917:18;;;12910:34;12823:18;;11031:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3269:1::-;10813:300:::0;:::o;7799:380::-;-1:-1:-1;;;;;7935:19:0;;7927:68;;;;-1:-1:-1;;;7927:68:0;;13407:2:1;7927:68:0;;;13389:21:1;13446:2;13426:18;;;13419:30;13485:34;13465:18;;;13458:62;-1:-1:-1;;;13536:18:1;;;13529:34;13580:19;;7927:68:0;13205:400:1;7927:68:0;-1:-1:-1;;;;;8014:21:0;;8006:68;;;;-1:-1:-1;;;8006:68:0;;13812:2:1;8006:68:0;;;13794:21:1;13851:2;13831:18;;;13824:30;13890:34;13870:18;;;13863:62;-1:-1:-1;;;13941:18:1;;;13934:32;13983:19;;8006:68:0;13610:398:1;8006:68:0;-1:-1:-1;;;;;8087:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8139:32;;1594:25:1;;;8139:32:0;;1567:18:1;8139:32:0;;;;;;;7799:380;;;:::o;12467:2128::-;-1:-1:-1;;;;;12564:18:0;;12556:67;;;;-1:-1:-1;;;12556:67:0;;14215:2:1;12556:67:0;;;14197:21:1;14254:2;14234:18;;;14227:30;14293:34;14273:18;;;14266:62;-1:-1:-1;;;14344:18:1;;;14337:34;14388:19;;12556:67:0;14013:400:1;12556:67:0;-1:-1:-1;;;;;12642:16:0;;12634:63;;;;-1:-1:-1;;;12634:63:0;;14620:2:1;12634:63:0;;;14602:21:1;14659:2;14639:18;;;14632:30;14698:34;14678:18;;;14671:62;-1:-1:-1;;;14749:18:1;;;14742:32;14791:19;;12634:63:0;14418:398:1;12634:63:0;12716:14;;;;;;;;:43;;-1:-1:-1;;;;;;12734:25:0;;;;;;:19;:25;;;;;;;;12716:43;:70;;;-1:-1:-1;;;;;;12763:23:0;;;;;;:19;:23;;;;;;;;12716:70;12708:113;;;;-1:-1:-1;;;12708:113:0;;15023:2:1;12708:113:0;;;15005:21:1;15062:2;15042:18;;;15035:30;15101:32;15081:18;;;15074:60;15151:18;;12708:113:0;14821:354:1;12708:113:0;12845:6;12855:1;12845:11;12841:93;;12873:28;12889:4;12895:2;12899:1;12873:15;:28::i;:::-;12467:2128;;;:::o;12841:93::-;13036:4;12946:19;4635:18;;;;;;;;;;;13094;;12968:12;;4635:18;13070:42;;;;;;;13129:33;;-1:-1:-1;13154:8:0;;;;13153:9;13129:33;:69;;;;-1:-1:-1;13185:13:0;;-1:-1:-1;;;;;13179:19:0;;;13185:13;;13179:19;13129:69;:131;;;;-1:-1:-1;13244:15:0;;13216:24;;;;:11;:24;;;;;;:43;;13129:131;:174;;;;-1:-1:-1;;;;;;13278:25:0;;;;;;:19;:25;;;;;;;;13277:26;13129:174;:202;;;;-1:-1:-1;13320:11:0;;;;;;;13129:202;13125:390;;;13358:8;:15;;-1:-1:-1;;13358:15:0;13369:4;13358:15;;;13405:18;;13390:34;;:14;:34::i;:::-;13443:24;;;;:11;:24;;;;;13441:26;;13443:24;;;13441:26;;;:::i;:::-;;;;-1:-1:-1;13487:8:0;:16;;-1:-1:-1;;13487:16:0;;;13125:390;-1:-1:-1;;;;;13560:25:0;;13527:18;13560:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;13589:23:0;;;;;;:19;:23;;;;;;;;13560:52;:64;;;-1:-1:-1;13616:8:0;;;;13560:64;13556:320;;;-1:-1:-1;13654:1:0;13556:320;;;13685:13;;-1:-1:-1;;;;;13685:13:0;;;13677:21;;;;13673:203;;-1:-1:-1;13728:8:0;;13673:203;;;13764:13;;-1:-1:-1;;;;;13764:13:0;;;13758:19;;;;13754:122;;-1:-1:-1;13808:9:0;;13754:122;;;-1:-1:-1;13863:1:0;13754:122;13892:14;;13888:183;;13923:12;13962:3;13939:19;13948:10;13939:6;:19;:::i;:::-;13938:27;;;;:::i;:::-;13923:42;-1:-1:-1;13989:13:0;13923:42;13989:6;:13;:::i;:::-;13980:22;;14017:42;14033:4;14047;14054;14017:15;:42::i;:::-;13908:163;13888:183;14087:21;;;;14083:459;;;-1:-1:-1;;;;;14140:35:0;;;;;;:29;:35;;;;;;;;14139:36;:92;;;;-1:-1:-1;;;;;;14198:33:0;;;;;;:29;:33;;;;;;;;14197:34;14139:92;:132;;;;-1:-1:-1;14258:13:0;;-1:-1:-1;;;;;14252:19:0;;;14258:13;;14252:19;;14139:132;14135:396;;;-1:-1:-1;;;;;4635:18:0;;14306:15;4635:18;;;;;;;;;;;14407:15;;14387:16;14397:6;4635:18;14387:16;:::i;:::-;:35;;14357:158;;;;-1:-1:-1;;;14357:158:0;;15655:2:1;14357:158:0;;;15637:21:1;15694:2;15674:18;;;15667:30;15733:34;15713:18;;;15706:62;-1:-1:-1;;;15784:18:1;;;15777:46;15840:19;;14357:158:0;15453:412:1;14357:158:0;14287:244;14135:396;14554:33;14570:4;14576:2;14580:6;14554:15;:33::i;:::-;12545:2050;;;;12467:2128;;;:::o;2070:285::-;2149:4;2198:6;2173:21;:31;;2165:73;;;;-1:-1:-1;;;2165:73:0;;16072:2:1;2165:73:0;;;16054:21:1;16111:2;16091:18;;;16084:30;16150:31;16130:18;;;16123:59;16199:18;;2165:73:0;15870:353:1;2165:73:0;2252:12;2270:9;-1:-1:-1;;;;;2270:14:0;2292:6;2270:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2251:52:0;;2070:285;-1:-1:-1;;;;;2070:285:0:o;6413:614::-;-1:-1:-1;;;;;6553:20:0;;6545:70;;;;-1:-1:-1;;;6545:70:0;;16640:2:1;6545:70:0;;;16622:21:1;16679:2;16659:18;;;16652:30;16718:34;16698:18;;;16691:62;-1:-1:-1;;;16769:18:1;;;16762:35;16814:19;;6545:70:0;16438:401:1;6545:70:0;-1:-1:-1;;;;;6634:23:0;;6626:71;;;;-1:-1:-1;;;6626:71:0;;17046:2:1;6626:71:0;;;17028:21:1;17085:2;17065:18;;;17058:30;17124:34;17104:18;;;17097:62;-1:-1:-1;;;17175:18:1;;;17168:33;17218:19;;6626:71:0;16844:399:1;6626:71:0;-1:-1:-1;;;;;6734:17:0;;6710:21;6734:17;;;;;;;;;;;6770:23;;;;6762:74;;;;-1:-1:-1;;;6762:74:0;;17450:2:1;6762:74:0;;;17432:21:1;17489:2;17469:18;;;17462:30;17528:34;17508:18;;;17501:62;-1:-1:-1;;;17579:18:1;;;17572:36;17625:19;;6762:74:0;17248:402:1;6762:74:0;-1:-1:-1;;;;;6872:17:0;;;:9;:17;;;;;;;;;;;6892:22;;;6872:42;;6936:20;;;;;;;;:30;;6908:6;;6872:9;6936:30;;6908:6;;6936:30;:::i;:::-;;;;;;;;7001:9;-1:-1:-1;;;;;6984:35:0;6993:6;-1:-1:-1;;;;;6984:35:0;;7012:6;6984:35;;;;1594:25:1;;1582:2;1567:18;;1448:177;6984:35:0;;;;;;;;6534:493;6413:614;;;:::o;15112:830::-;15279:4;15176:22;4635:18;;;;;;;;;;;15201:21;;15302:29;;;15298:68;;;15348:7;;15112:830;:::o;15298:68::-;15402:16;;;15416:1;15402:16;;;;;;;;15378:21;;15402:16;;;;;;;;;;-1:-1:-1;15402:16:0;15378:40;;15447:4;15429;15434:1;15429:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15429:23:0;;;:7;;;;;;;;;;:23;;;;15473:15;;:22;;;-1:-1:-1;;;15473:22:0;;;;:15;;;;;:20;;:22;;;;;15429:7;;15473:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15463:4;15468:1;15463:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15463:32:0;;;:7;;;;;;;;;:32;15512:15;;:196;;-1:-1:-1;;;15512:196:0;;:15;;;:66;;:196;;15593:11;;15512:15;;15635:4;;15662;;15682:15;;15512:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15508:243;;15733:7;;;15112:830;:::o;15508:243::-;15763:18;15784:38;15808:14;15784:21;:38;:::i;:::-;15843:11;;15763:59;;-1:-1:-1;15835:42:0;;-1:-1:-1;;;;;15843:11:0;15763:59;15835:30;:42::i;:::-;-1:-1:-1;15895:39:0;;;9243:25:1;;;9299:2;9284:18;;9277:34;;;15895:39:0;;9216:18:1;15895:39:0;;;;;;;15165:777;;;;15112:830;:::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;1630:456::-;1707:6;1715;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1831:9;1818:23;1850:31;1875:5;1850:31;:::i;:::-;1900:5;-1:-1:-1;1957:2:1;1942:18;;1929:32;1970:33;1929:32;1970:33;:::i;:::-;1630:456;;2022:7;;-1:-1:-1;;;2076:2:1;2061:18;;;;2048:32;;1630:456::o;2091:180::-;2150:6;2203:2;2191:9;2182:7;2178:23;2174:32;2171:52;;;2219:1;2216;2209:12;2171:52;-1:-1:-1;2242:23:1;;2091:180;-1:-1:-1;2091:180:1:o;2276:118::-;2362:5;2355:13;2348:21;2341:5;2338:32;2328:60;;2384:1;2381;2374:12;2399:241;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;2563:9;2550:23;2582:28;2604:5;2582:28;:::i;:::-;2629:5;2399:241;-1:-1:-1;;;2399:241:1:o;3042:247::-;3101:6;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;3294:248::-;3362:6;3370;3423:2;3411:9;3402:7;3398:23;3394:32;3391:52;;;3439:1;3436;3429:12;3391:52;-1:-1:-1;;3462:23:1;;;3532:2;3517:18;;;3504:32;;-1:-1:-1;3294:248:1:o;3547:377::-;3621:6;3629;3637;3690:2;3678:9;3669:7;3665:23;3661:32;3658:52;;;3706:1;3703;3696:12;3658:52;3742:9;3729:23;3719:33;;3802:2;3791:9;3787:18;3774:32;3815:28;3837:5;3815:28;:::i;3929:382::-;3994:6;4002;4055:2;4043:9;4034:7;4030:23;4026:32;4023:52;;;4071:1;4068;4061:12;4023:52;4110:9;4097:23;4129:31;4154:5;4129:31;:::i;:::-;4179:5;-1:-1:-1;4236:2:1;4221:18;;4208:32;4249:30;4208:32;4249:30;:::i;:::-;4298:7;4288:17;;;3929:382;;;;;:::o;4316:388::-;4384:6;4392;4445:2;4433:9;4424:7;4420:23;4416:32;4413:52;;;4461:1;4458;4451:12;4413:52;4500:9;4487:23;4519:31;4544:5;4519:31;:::i;:::-;4569:5;-1:-1:-1;4626:2:1;4611:18;;4598:32;4639:33;4598:32;4639:33;:::i;4709:380::-;4788:1;4784:12;;;;4831;;;4852:61;;4906:4;4898:6;4894:17;4884:27;;4852:61;4959:2;4951:6;4948:14;4928:18;4925:38;4922:161;;5005:10;5000:3;4996:20;4993:1;4986:31;5040:4;5037:1;5030:15;5068:4;5065:1;5058:15;4922:161;;4709:380;;;:::o;5503:356::-;5705:2;5687:21;;;5724:18;;;5717:30;5783:34;5778:2;5763:18;;5756:62;5850:2;5835:18;;5503:356::o;5864:127::-;5925:10;5920:3;5916:20;5913:1;5906:31;5956:4;5953:1;5946:15;5980:4;5977:1;5970:15;5996:416;6085:1;6122:5;6085:1;6136:270;6157:7;6147:8;6144:21;6136:270;;;6216:4;6212:1;6208:6;6204:17;6198:4;6195:27;6192:53;;;6225:18;;:::i;:::-;6275:7;6265:8;6261:22;6258:55;;;6295:16;;;;6258:55;6374:22;;;;6334:15;;;;6136:270;;;6140:3;5996:416;;;;;:::o;6417:806::-;6466:5;6496:8;6486:80;;-1:-1:-1;6537:1:1;6551:5;;6486:80;6585:4;6575:76;;-1:-1:-1;6622:1:1;6636:5;;6575:76;6667:4;6685:1;6680:59;;;;6753:1;6748:130;;;;6660:218;;6680:59;6710:1;6701:10;;6724:5;;;6748:130;6785:3;6775:8;6772:17;6769:43;;;6792:18;;:::i;:::-;-1:-1:-1;;6848:1:1;6834:16;;6863:5;;6660:218;;6962:2;6952:8;6949:16;6943:3;6937:4;6934:13;6930:36;6924:2;6914:8;6911:16;6906:2;6900:4;6897:12;6893:35;6890:77;6887:159;;;-1:-1:-1;6999:19:1;;;7031:5;;6887:159;7078:34;7103:8;7097:4;7078:34;:::i;:::-;7148:6;7144:1;7140:6;7136:19;7127:7;7124:32;7121:58;;;7159:18;;:::i;:::-;7197:20;;6417:806;-1:-1:-1;;;6417:806:1:o;7228:140::-;7286:5;7315:47;7356:4;7346:8;7342:19;7336:4;7315:47;:::i;7373:217::-;7413:1;7439;7429:132;;7483:10;7478:3;7474:20;7471:1;7464:31;7518:4;7515:1;7508:15;7546:4;7543:1;7536:15;7429:132;-1:-1:-1;7575:9:1;;7373:217::o;8009:168::-;8082:9;;;8113;;8130:15;;;8124:22;;8110:37;8100:71;;8151:18;;:::i;8596:125::-;8661:9;;;8682:10;;;8679:36;;;8695:18;;:::i;12487:184::-;12557:6;12610:2;12598:9;12589:7;12585:23;12581:32;12578:52;;;12626:1;12623;12616:12;12578:52;-1:-1:-1;12649:16:1;;12487:184;-1:-1:-1;12487:184:1:o;12955:245::-;13022:6;13075:2;13063:9;13054:7;13050:23;13046:32;13043:52;;;13091:1;13088;13081:12;13043:52;13123:9;13117:16;13142:28;13164:5;13142:28;:::i;15180:135::-;15219:3;15240:17;;;15237:43;;15260:18;;:::i;:::-;-1:-1:-1;15307:1:1;15296:13;;15180:135::o;15320:128::-;15387:9;;;15408:11;;;15405:37;;;15422:18;;:::i;17787:127::-;17848:10;17843:3;17839:20;17836:1;17829:31;17879:4;17876:1;17869:15;17903:4;17900:1;17893:15;17919:251;17989:6;18042:2;18030:9;18021:7;18017:23;18013:32;18010:52;;;18058:1;18055;18048:12;18010:52;18090:9;18084:16;18109:31;18134:5;18109:31;:::i;18175:980::-;18437:4;18485:3;18474:9;18470:19;18516:6;18505:9;18498:25;18542:2;18580:6;18575:2;18564:9;18560:18;18553:34;18623:3;18618:2;18607:9;18603:18;18596:31;18647:6;18682;18676:13;18713:6;18705;18698:22;18751:3;18740:9;18736:19;18729:26;;18790:2;18782:6;18778:15;18764:29;;18811:1;18821:195;18835:6;18832:1;18829:13;18821:195;;;18900:13;;-1:-1:-1;;;;;18896:39:1;18884:52;;18991:15;;;;18956:12;;;;18932:1;18850:9;18821:195;;;-1:-1:-1;;;;;;;19072:32:1;;;;19067:2;19052:18;;19045:60;-1:-1:-1;;;19136:3:1;19121:19;19114:35;19033:3;18175:980;-1:-1:-1;;;18175:980:1:o
Swarm Source
ipfs://6db18ea36ad0e19a8134ac2ef72b931324b33debb05e37b18c512e6e02b4b5bf
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.