Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 GRETH
Holders
107
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,030,612.531161477861937159 GRETHValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GreenEth
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-03 */ /* 🐤Twitter: https://twitter.com/GreenEthERC 🌐Web: https://greenethereum.net 💬TG: https://t.me/GreenEthPortal */ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.5; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } 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); } 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; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; 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; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return block.timestamp; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract GreenEth is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable private devAddress; address payable public marketingAddress; // Marketing Address address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; string private _name; string private _symbol; uint8 private _decimals; uint256 public _taxFee; uint256 private _previousTaxFee; uint256 private _liquidityFee; uint256 private _previousLiquidityFee; uint256 public buybackFee; uint256 private previousBuybackFee; uint256 public marketingFee; uint256 private previousMarketingFee; uint private devFee; uint256 public _maxTxAmount; uint256 private _previousMaxTxAmount; uint256 private minimumTokensBeforeSwap; uint256 private buyBackUpperLimit; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public buyBackEnabled = true; event RewardLiquidityProviders(uint256 tokenAmount); event BuyBackEnabledUpdated(bool enabled); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (string memory _n, string memory _s, uint8 _d, uint256 _ts, uint256 _tax, uint256 _bb, uint256 _mkt, address _ma) { require(_mkt >= 5, 'Marketing fee can not be less than 0.5%'); _name = _n; _symbol = _s; _decimals = _d; _tTotal = _ts * 10**_decimals; _rTotal = (MAX - (MAX % _tTotal)); marketingAddress = payable(_ma); devAddress = payable(0xe564016abE0dB2003aF8A0fc84b694FaC0C8E6cB); _taxFee = _tax; _previousTaxFee = _taxFee; buybackFee = _bb; previousBuybackFee = buybackFee; marketingFee = _mkt; previousMarketingFee = marketingFee; _liquidityFee = _bb + _mkt; _previousLiquidityFee = _liquidityFee; devFee = 5; _maxTxAmount = _tTotal.div(1000).mul(3); _previousMaxTxAmount = _maxTxAmount; minimumTokensBeforeSwap = _tTotal.div(10000).mul(2); buyBackUpperLimit = 1 * 10**18; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; 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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } function buyBackUpperLimitAmount() public view returns (uint256) { return buyBackUpperLimit; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } 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()) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (!inSwapAndLiquify && swapAndLiquifyEnabled && to == uniswapV2Pair) { if (overMinimumTokenBalance) { contractTokenBalance = minimumTokensBeforeSwap; swapTokens(contractTokenBalance); } uint256 balance = address(this).balance; if (buyBackEnabled && balance > uint256(1 * 10**18)) { if (balance > buyBackUpperLimit) balance = buyBackUpperLimit; buyBackTokens(balance.div(100)); } } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function swapTokens(uint256 contractTokenBalance) private lockTheSwap { uint256 initialBalance = address(this).balance; swapTokensForEth(contractTokenBalance); uint256 transferredBalance = address(this).balance.sub(initialBalance); //Send to Marketing address transferToAddressETH(devAddress, transferredBalance.div(_liquidityFee).mul(devFee)); transferToAddressETH(marketingAddress, transferredBalance.div(_liquidityFee).mul(marketingFee.sub(devFee))); } function buyBackTokens(uint256 amount) private lockTheSwap { if (amount > 0) { swapETHForTokens(amount); } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); // make the swap uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); emit SwapETHForTokens(amount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _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 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); 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; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**3 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**3 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; previousBuybackFee = buybackFee; previousMarketingFee = marketingFee; _taxFee = 70; _liquidityFee = 10; buybackFee = 50; marketingFee = 10; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; buybackFee = previousBuybackFee; marketingFee = previousMarketingFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setFee(uint256 taxFee, uint256 _buybackFee, uint256 _marketingFee) external onlyOwner() { require(taxFee <= 50 && _buybackFee <= 100 && _marketingFee <= 100, "Max 25%"); _taxFee = taxFee; buybackFee = _buybackFee; marketingFee = _marketingFee; _liquidityFee = buybackFee.add(marketingFee); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount >= _tTotal.div(1000),"can't set lower than 1%"); _maxTxAmount = maxTxAmount; } function setMarketingFee(uint256 _marketingFee) external onlyOwner() { require(_marketingFee >= devFee, 'Marketing fee can not be less than 5 percent'); marketingFee = _marketingFee; _liquidityFee = buybackFee.add(marketingFee); } function setNumTokensSellToAddToLiquidity(uint256 _minimumTokensBeforeSwap) external onlyOwner() { require(_minimumTokensBeforeSwap > _tTotal.div(100000), "Can't set lower than 0.001%"); minimumTokensBeforeSwap = _minimumTokensBeforeSwap; } function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() { require(buyBackLimit >= 1 * 10**18, "Can't set too low"); buyBackUpperLimit = buyBackLimit; } function setReceiverAddresses(address _marketingAddress, address _devAddress) external onlyOwner() { require(_marketingAddress != address(0xe564016abE0dB2003aF8A0fc84b694FaC0C8E6cB), "Can't set 0 address"); require(_devAddress != address(0xe564016abE0dB2003aF8A0fc84b694FaC0C8E6cB), "Can't set 0 address"); marketingAddress = payable(_marketingAddress); devAddress = payable(_devAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setBuyBackEnabled(bool _enabled) public onlyOwner { buyBackEnabled = _enabled; emit BuyBackEnabledUpdated(_enabled); } function presale(bool _presale) external onlyOwner { if (_presale) { setSwapAndLiquifyEnabled(false); removeAllFee(); _previousMaxTxAmount = _maxTxAmount; _maxTxAmount = totalSupply(); } else { setSwapAndLiquifyEnabled(true); restoreAllFee(); _maxTxAmount = _previousMaxTxAmount; } } function withdrawWETH (address _account) external onlyOwner { require (_account != address(0), "GreenEth: Can't withdraw to the zero address"); uint256 contractBalance = address(this).balance; if (contractBalance > 0) payable(_account).transfer(contractBalance); } function withdrawToken (address _token, address _account) external onlyOwner { require (_token != address(0), "GreenEth: Can't withdraw a token of zero address"); require (_token != address(this), "GreenEth: Can't withdraw GreenEth"); require (_account != address(0), "GreenEth: Can't withdraw to the zero address"); uint256 tokenBalance = IERC20(_token).balanceOf (address(this)); if (tokenBalance > 0) IERC20(_token).transfer (_account, tokenBalance); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_n","type":"string"},{"internalType":"string","name":"_s","type":"string"},{"internalType":"uint8","name":"_d","type":"uint8"},{"internalType":"uint256","name":"_ts","type":"uint256"},{"internalType":"uint256","name":"_tax","type":"uint256"},{"internalType":"uint256","name":"_bb","type":"uint256"},{"internalType":"uint256","name":"_mkt","type":"uint256"},{"internalType":"address","name":"_ma","type":"address"}],"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":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","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":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","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":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_presale","type":"bool"}],"name":"presale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"},{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setReceiverAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"withdrawWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526ddead000000000000000000000000608052601e805462ffff001916620101001790553480156200003457600080fd5b5060405162003e9338038062003e9383398101604081905262000057916200076b565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506005821015620000ff5760405162461bcd60e51b815260206004820152602760248201527f4d61726b6574696e67206665652063616e206e6f74206265206c657373207468604482015266616e20302e352560c81b60648201526084015b60405180910390fd5b87516200011490600e9060208b0190620005f9565b5086516200012a90600f9060208a0190620005f9565b506010805460ff191660ff88169081179091556200014a90600a620008da565b62000156908662000999565b600b819055620001699060001962000a45565b6200017790600019620009bb565b600c55600480546001600160a01b0383166001600160a01b0319918216179091556003805490911673e564016abe0db2003af8a0fc84b694fac0c8e6cb179055601184905560128490556015839055601683905560178290556018829055620001e182846200085f565b60138190556014556005601955600b54620002279060039062000213906103e8620004e3602090811b62001c4217901c565b6200053660201b62001c841790919060201c565b601a819055601b55600b5462000254906002906200021390612710620004e3602090811b62001c4217901c565b601c55670de0b6b3a7640000601d55600c543360009081526005602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b158015620002c557600080fd5b505afa158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030091906200074d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034957600080fd5b505afa1580156200035e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038491906200074d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003cd57600080fd5b505af1158015620003e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040891906200074d565b6001600160601b0319606091821b811660c0529082901b1660a0526001600860006200043c6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526008909252902080549091166001179055620004843390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620004cc91815260200190565b60405180910390a350505050505050505062000a9e565b60006200052d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005bd60201b60201c565b90505b92915050565b600082620005475750600062000530565b600062000555838562000999565b9050826200056485836200087a565b146200052d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401620000f6565b60008183620005e15760405162461bcd60e51b8152600401620000f691906200082a565b506000620005f084866200087a565b95945050505050565b828054620006079062000a08565b90600052602060002090601f0160209004810192826200062b576000855562000676565b82601f106200064657805160ff191683800117855562000676565b8280016001018555821562000676579182015b828111156200067657825182559160200191906001019062000659565b506200068492915062000688565b5090565b5b8082111562000684576000815560010162000689565b80516001600160a01b0381168114620006b757600080fd5b919050565b600082601f830112620006ce57600080fd5b81516001600160401b0380821115620006eb57620006eb62000a88565b604051601f8301601f19908116603f0116810190828211818310171562000716576200071662000a88565b816040528381528660208588010111156200073057600080fd5b62000743846020830160208901620009d5565b9695505050505050565b6000602082840312156200076057600080fd5b6200052d826200069f565b600080600080600080600080610100898b0312156200078957600080fd5b88516001600160401b0380821115620007a157600080fd5b620007af8c838d01620006bc565b995060208b0151915080821115620007c657600080fd5b50620007d58b828c01620006bc565b975050604089015160ff81168114620007ed57600080fd5b80965050606089015194506080890151935060a0890151925060c089015191506200081b60e08a016200069f565b90509295985092959890939650565b60208152600082518060208401526200084b816040850160208701620009d5565b601f01601f19169190910160400192915050565b6000821982111562000875576200087562000a5c565b500190565b6000826200088c576200088c62000a72565b500490565b600181815b80851115620008d2578160001904821115620008b657620008b662000a5c565b80851615620008c457918102915b93841c939080029062000896565b509250929050565b60006200052d60ff841683600082620008f65750600162000530565b81620009055750600062000530565b81600181146200091e5760028114620009295762000949565b600191505062000530565b60ff8411156200093d576200093d62000a5c565b50506001821b62000530565b5060208310610133831016604e8410600b84101617156200096e575081810a62000530565b6200097a838362000891565b806000190482111562000991576200099162000a5c565b029392505050565b6000816000190483118215151615620009b657620009b662000a5c565b500290565b600082821015620009d057620009d062000a5c565b500390565b60005b83811015620009f2578181015183820152602001620009d8565b8381111562000a02576000848401525b50505050565b600181811c9082168062000a1d57607f821691505b6020821081141562000a3f57634e487b7160e01b600052602260045260246000fd5b50919050565b60008262000a575762000a5762000a72565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160601c60a05160601c60c05160601c61338b62000b0860003960008181610585015261201b01526000818161038001528181612732015281816127fa015281816128360152818161293c0152612a2a0152600081816104010152612a55015261338b6000f3fe6080604052600436106102e85760003560e01c80636053a0e311610190578063a69df4b5116100dc578063dd46706411610095578063ec28438a1161006f578063ec28438a14610919578063edc2fcfb14610939578063f0f165af14610959578063f2fde38b1461097957600080fd5b8063dd46706414610893578063dd62ed3e146108b3578063ea2f0b37146108f957600080fd5b8063a69df4b5146107e9578063a9059cbb146107fe578063bdc653ef1461081e578063c49b9a8014610833578063c5bcfbf314610853578063cec7f25a1461087357600080fd5b806382d2a4bb1161014957806395d89b411161012357806395d89b411461077f578063a073d37f14610794578063a457c2d7146107a9578063a5ece941146107c957600080fd5b806382d2a4bb1461070857806388f82020146107285780638da5cb5b1461076157600080fd5b80636053a0e314610667578063625e764c146106875780636b67c4df146106a757806370a08231146106bd578063715018a6146106dd5780637d1db4a5146106f257600080fd5b80633aeac4e11161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146105e6578063557ed1ba1461061f5780635b65b9ab14610632578063602bc62b1461065257600080fd5b806349bd5a5e146105735780634a74bb02146105a757806352390c02146105c657600080fd5b80633aeac4e1146104c75780633b124fe7146104e75780633b2d081c146104fd5780633bd5d17314610513578063437823ec146105335780634549b0391461055357600080fd5b806327c8f835116102a157806327c8f835146103ef57806329370cc6146104235780632d83811914610445578063313ce567146104655780633685d4191461048757806339509351146104a757600080fd5b806306fdde03146102f4578063095ea7b31461031f57806313114a9d1461034f5780631694505e1461036e57806318160ddd146103ba57806323b872dd146103cf57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b50610309610999565b604051610316919061308a565b60405180910390f35b34801561032b57600080fd5b5061033f61033a366004612f28565b610a2b565b6040519015158152602001610316565b34801561035b57600080fd5b50600d545b604051908152602001610316565b34801561037a57600080fd5b506103a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610316565b3480156103c657600080fd5b50600b54610360565b3480156103db57600080fd5b5061033f6103ea366004612ee7565b610a42565b3480156103fb57600080fd5b506103a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561042f57600080fd5b5061044361043e366004612f54565b610aab565b005b34801561045157600080fd5b50610360610460366004612f8e565b610b34565b34801561047157600080fd5b5060105460405160ff9091168152602001610316565b34801561049357600080fd5b506104436104a2366004612e74565b610bb8565b3480156104b357600080fd5b5061033f6104c2366004612f28565b610d6f565b3480156104d357600080fd5b506104436104e2366004612eae565b610da5565b3480156104f357600080fd5b5061036060115481565b34801561050957600080fd5b5061036060155481565b34801561051f57600080fd5b5061044361052e366004612f8e565b610fd2565b34801561053f57600080fd5b5061044361054e366004612e74565b6110bc565b34801561055f57600080fd5b5061036061056e366004612fc0565b61110a565b34801561057f57600080fd5b506103a27f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b357600080fd5b50601e5461033f90610100900460ff1681565b3480156105d257600080fd5b506104436105e1366004612e74565b611197565b3480156105f257600080fd5b5061033f610601366004612e74565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561062b57600080fd5b5042610360565b34801561063e57600080fd5b5061044361064d366004612fe5565b6112ea565b34801561065e57600080fd5b50600254610360565b34801561067357600080fd5b50601e5461033f9062010000900460ff1681565b34801561069357600080fd5b506104436106a2366004612f8e565b61138a565b3480156106b357600080fd5b5061036060175481565b3480156106c957600080fd5b506103606106d8366004612e74565b611433565b3480156106e957600080fd5b50610443611492565b3480156106fe57600080fd5b50610360601a5481565b34801561071457600080fd5b50610443610723366004612f8e565b6114f4565b34801561073457600080fd5b5061033f610743366004612e74565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561076d57600080fd5b506000546001600160a01b03166103a2565b34801561078b57600080fd5b5061030961156f565b3480156107a057600080fd5b50601c54610360565b3480156107b557600080fd5b5061033f6107c4366004612f28565b61157e565b3480156107d557600080fd5b506004546103a2906001600160a01b031681565b3480156107f557600080fd5b506104436115cd565b34801561080a57600080fd5b5061033f610819366004612f28565b6116d3565b34801561082a57600080fd5b50601d54610360565b34801561083f57600080fd5b5061044361084e366004612f54565b6116e0565b34801561085f57600080fd5b5061044361086e366004612e74565b611753565b34801561087f57600080fd5b5061044361088e366004612eae565b6117e0565b34801561089f57600080fd5b506104436108ae366004612f8e565b6118fe565b3480156108bf57600080fd5b506103606108ce366004612eae565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561090557600080fd5b50610443610914366004612e74565b611983565b34801561092557600080fd5b50610443610934366004612f8e565b6119ce565b34801561094557600080fd5b50610443610954366004612f54565b611a5b565b34801561096557600080fd5b50610443610974366004612f8e565b611add565b34801561098557600080fd5b50610443610994366004612e74565b611b6a565b6060600e80546109a89061322d565b80601f01602080910402602001604051908101604052809291908181526020018280546109d49061322d565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b6000610a38338484611d03565b5060015b92915050565b6000610a4f848484611e27565b610aa18433610a9c856040518060600160405280602881526020016132e9602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190612111565b611d03565b5060019392505050565b6000546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad59061312b565b60405180910390fd5b601e8054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b2990831515815260200190565b60405180910390a150565b6000600c54821115610b9b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ad5565b6000610ba561214b565b9050610bb18382611c42565b9392505050565b6000546001600160a01b03163314610be25760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03811660009081526009602052604090205460ff16610c4a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ad5565b60005b600a54811015610d6b57816001600160a01b0316600a8281548110610c7457610c746132af565b6000918252602090912001546001600160a01b03161415610d5957600a8054610c9f90600190613216565b81548110610caf57610caf6132af565b600091825260209091200154600a80546001600160a01b039092169183908110610cdb57610cdb6132af565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600a805480610d3357610d33613299565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d6381613268565b915050610c4d565b5050565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610a38918590610a9c908661216e565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b038216610e3e5760405162461bcd60e51b815260206004820152603060248201527f477265656e4574683a2043616e2774207769746864726177206120746f6b656e60448201526f206f66207a65726f206164647265737360801b6064820152608401610ad5565b6001600160a01b038216301415610ea15760405162461bcd60e51b815260206004820152602160248201527f477265656e4574683a2043616e277420776974686472617720477265656e45746044820152600d60fb1b6064820152608401610ad5565b6001600160a01b038116610ec75760405162461bcd60e51b8152600401610ad5906130df565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610f0957600080fd5b505afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190612fa7565b90508015610fcd5760405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb9190612f71565b505b505050565b3360008181526009602052604090205460ff16156110475760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ad5565b6000611052836121cd565b505050506001600160a01b03841660009081526005602052604090205491925061107e9190508261221c565b6001600160a01b038316600090815260056020526040902055600c546110a4908261221c565b600c55600d546110b4908461216e565b600d55505050565b6000546001600160a01b031633146110e65760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b5483111561115e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ad5565b8161117d57600061116e846121cd565b50939550610a3c945050505050565b6000611188846121cd565b50929550610a3c945050505050565b6000546001600160a01b031633146111c15760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03811660009081526009602052604090205460ff161561122a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ad5565b6001600160a01b03811660009081526005602052604090205415611284576001600160a01b03811660009081526005602052604090205461126a90610b34565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b031633146113145760405162461bcd60e51b8152600401610ad59061312b565b60328311158015611326575060648211155b8015611333575060648111155b6113695760405162461bcd60e51b81526020600482015260076024820152664d61782032352560c81b6044820152606401610ad5565b601183905560158290556017819055611382828261216e565b601355505050565b6000546001600160a01b031633146113b45760405162461bcd60e51b8152600401610ad59061312b565b60195481101561141b5760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e67206665652063616e206e6f74206265206c65737320746860448201526b185b880d481c195c98d95b9d60a21b6064820152608401610ad5565b601781905560155461142d908261216e565b60135550565b6001600160a01b03811660009081526009602052604081205460ff161561147057506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610a3c90610b34565b6000546001600160a01b031633146114bc5760405162461bcd60e51b8152600401610ad59061312b565b600080546040516001600160a01b0390911690600080516020613311833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461151e5760405162461bcd60e51b8152600401610ad59061312b565b670de0b6b3a764000081101561156a5760405162461bcd60e51b815260206004820152601160248201527043616e27742073657420746f6f206c6f7760781b6044820152606401610ad5565b601d55565b6060600f80546109a89061322d565b6000610a383384610a9c85604051806060016040528060258152602001613331602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190612111565b6001546001600160a01b031633146116335760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610ad5565b60025442116116845760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610ad5565b600154600080546040516001600160a01b03938416939091169160008051602061331183398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a38338484611e27565b6000546001600160a01b0316331461170a5760405162461bcd60e51b8152600401610ad59061312b565b601e80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b2990831515815260200190565b6000546001600160a01b0316331461177d5760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b0381166117a35760405162461bcd60e51b8152600401610ad5906130df565b478015610d6b576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610fcd573d6000803e3d6000fd5b6000546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03821673e564016abe0db2003af8a0fc84b694fac0c8e6cb141561186d5760405162461bcd60e51b815260206004820152601360248201527243616e2774207365742030206164647265737360681b6044820152606401610ad5565b6001600160a01b03811673e564016abe0db2003af8a0fc84b694fac0c8e6cb14156118d05760405162461bcd60e51b815260206004820152601360248201527243616e2774207365742030206164647265737360681b6044820152606401610ad5565b600480546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6000546001600160a01b031633146119285760405162461bcd60e51b8152600401610ad59061312b565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561195781426131bd565b600255600080546040516001600160a01b0390911690600080516020613311833981519152908390a350565b6000546001600160a01b031633146119ad5760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146119f85760405162461bcd60e51b8152600401610ad59061312b565b600b54611a07906103e8611c42565b811015611a565760405162461bcd60e51b815260206004820152601760248201527f63616e277420736574206c6f776572207468616e2031250000000000000000006044820152606401610ad5565b601a55565b6000546001600160a01b03163314611a855760405162461bcd60e51b8152600401610ad59061312b565b8015611aac57611a9560006116e0565b611a9d61225e565b601a54601b55600b54601a5550565b611ab660016116e0565b611ad3601254601155601454601355601654601555601854601755565b601b54601a555b50565b6000546001600160a01b03163314611b075760405162461bcd60e51b8152600401610ad59061312b565b600b54611b1790620186a0611c42565b8111611b655760405162461bcd60e51b815260206004820152601b60248201527f43616e277420736574206c6f776572207468616e20302e3030312500000000006044820152606401610ad5565b601c55565b6000546001600160a01b03163314611b945760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b038116611bf95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad5565b600080546040516001600160a01b038085169392169160008051602061331183398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bb183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122a4565b600082611c9357506000610a3c565b6000611c9f83856131f7565b905082611cac85836131d5565b14610bb15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad5565b6001600160a01b038316611d655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b038216611dc65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e8b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad5565b6001600160a01b038216611eed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad5565b60008111611f4f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ad5565b6000546001600160a01b03848116911614801590611f7b57506000546001600160a01b03838116911614155b15611fe357601a54811115611fe35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ad5565b6000611fee30611433565b601c54601e549192508210159060ff161580156120125750601e54610100900460ff165b801561204f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b156120b257801561206857601c549150612068826122d2565b601e54479062010000900460ff1680156120895750670de0b6b3a764000081115b156120b057601d5481111561209d5750601d545b6120b06120ab826064611c42565b61236d565b505b6001600160a01b03851660009081526008602052604090205460019060ff16806120f457506001600160a01b03851660009081526008602052604090205460ff165b156120fd575060005b61210986868684612396565b505050505050565b600081848411156121355760405162461bcd60e51b8152600401610ad5919061308a565b5060006121428486613216565b95945050505050565b60008060006121586124c7565b90925090506121678282611c42565b9250505090565b60008061217b83856131bd565b905083811015610bb15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad5565b60008060008060008060008060006121e48a612649565b92509250925060008060006122028d86866121fd61214b565b61268b565b919f909e50909c50959a5093985091965092945050505050565b6000610bb183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612111565b60115415801561226e5750601354155b1561227557565b601180546012556013805460145560158054601655601780546018556046909355600a91829055603290559055565b600081836122c55760405162461bcd60e51b8152600401610ad5919061308a565b50600061214284866131d5565b601e805460ff19166001179055476122e9826126db565b60006122f5478361221c565b60035460195460135492935061232c926001600160a01b03909216916123279190612321908690611c42565b90611c84565b6128e3565b60045460195460175461235e926001600160a01b031691612327916123509161221c565b601354612321908690611c42565b5050601e805460ff1916905550565b601e805460ff1916600117905580156123895761238981612919565b50601e805460ff19169055565b806123a3576123a361225e565b6001600160a01b03841660009081526009602052604090205460ff1680156123e457506001600160a01b03831660009081526009602052604090205460ff16155b156123f9576123f4848484612b02565b6124a5565b6001600160a01b03841660009081526009602052604090205460ff1615801561243a57506001600160a01b03831660009081526009602052604090205460ff165b1561244a576123f4848484612c28565b6001600160a01b03841660009081526009602052604090205460ff16801561248a57506001600160a01b03831660009081526009602052604090205460ff165b1561249a576123f4848484612cd1565b6124a5848484612d44565b80610fcb57610fcb601254601155601454601355601654601555601854601755565b600c54600b546000918291825b600a54811015612619578260056000600a84815481106124f6576124f66132af565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061256157508160066000600a848154811061253a5761253a6132af565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561257757600c54600b54945094505050509091565b6125bd60056000600a8481548110612591576125916132af565b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061221c565b925061260560066000600a84815481106125d9576125d96132af565b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061221c565b91508061261181613268565b9150506124d4565b50600b54600c5461262991611c42565b82101561264057600c54600b549350935050509091565b90939092509050565b60008060008061265885612d88565b9050600061266586612dab565b9050600061267d82612677898661221c565b9061221c565b979296509094509092505050565b600080808061269a8886611c84565b905060006126a88887611c84565b905060006126b68888611c84565b905060006126c882612677868661221c565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612710576127106132af565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561278957600080fd5b505afa15801561279d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c19190612e91565b816001815181106127d4576127d46132af565b60200260200101906001600160a01b031690816001600160a01b03168152505061281f307f000000000000000000000000000000000000000000000000000000000000000084611d03565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612874908590600090869030904290600401613181565b600060405180830381600087803b15801561288e57600080fd5b505af11580156128a2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128d7929190613160565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610fcd573d6000803e3d6000fd5b6040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561299357600080fd5b505afa1580156129a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cb9190612e91565b816000815181106129de576129de6132af565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612a1257612a126132af565b6001600160a01b0392831660209182029290920101527f00000000000000000000000000000000000000000000000000000000000000001663b6f9de95836000847f0000000000000000000000000000000000000000000000000000000000000000612a804261012c61216e565b6040518663ffffffff1660e01b8152600401612a9f9493929190613055565b6000604051808303818588803b158015612ab857600080fd5b505af1158015612acc573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040516128d7929190613160565b600080600080600080612b14876121cd565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612b46908861221c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612b75908761221c565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054612ba4908661216e565b6001600160a01b038916600090815260056020526040902055612bc681612dc8565b612bd08483612e50565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612c1591815260200190565b60405180910390a3505050505050505050565b600080600080600080612c3a876121cd565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612c6c908761221c565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054612ca2908461216e565b6001600160a01b038916600090815260066020908152604080832093909355600590522054612ba4908661216e565b600080600080600080612ce3876121cd565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612d15908861221c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612c6c908761221c565b600080600080600080612d56876121cd565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612b75908761221c565b6000610a3c6103e8612da560115485611c8490919063ffffffff16565b90611c42565b6000610a3c6103e8612da560135485611c8490919063ffffffff16565b6000612dd261214b565b90506000612de08383611c84565b30600090815260056020526040902054909150612dfd908261216e565b3060009081526005602090815260408083209390935560099052205460ff1615610fcd5730600090815260066020526040902054612e3b908461216e565b30600090815260066020526040902055505050565b600c54612e5d908361221c565b600c55600d54612e6d908261216e565b600d555050565b600060208284031215612e8657600080fd5b8135610bb1816132c5565b600060208284031215612ea357600080fd5b8151610bb1816132c5565b60008060408385031215612ec157600080fd5b8235612ecc816132c5565b91506020830135612edc816132c5565b809150509250929050565b600080600060608486031215612efc57600080fd5b8335612f07816132c5565b92506020840135612f17816132c5565b929592945050506040919091013590565b60008060408385031215612f3b57600080fd5b8235612f46816132c5565b946020939093013593505050565b600060208284031215612f6657600080fd5b8135610bb1816132da565b600060208284031215612f8357600080fd5b8151610bb1816132da565b600060208284031215612fa057600080fd5b5035919050565b600060208284031215612fb957600080fd5b5051919050565b60008060408385031215612fd357600080fd5b823591506020830135612edc816132da565b600080600060608486031215612ffa57600080fd5b505081359360208301359350604090920135919050565b600081518084526020808501945080840160005b8381101561304a5781516001600160a01b031687529582019590820190600101613025565b509495945050505050565b84815260806020820152600061306e6080830186613011565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156130b75785810183015185820160400152820161309b565b818111156130c9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252602c908201527f477265656e4574683a2043616e277420776974686472617720746f207468652060408201526b7a65726f206164647265737360a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006131796040830184613011565b949350505050565b85815284602082015260a0604082015260006131a060a0830186613011565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156131d0576131d0613283565b500190565b6000826131f257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561321157613211613283565b500290565b60008282101561322857613228613283565b500390565b600181811c9082168061324157607f821691505b6020821081141561326257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561327c5761327c613283565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611ada57600080fd5b8015158114611ada57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201588a974407fe6fdaebf0871438550ab74d183d89507868ba5b69fc64196ed5d64736f6c63430008050033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000e8d4a51000000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000014000000000000000000000000e564016abe0db2003af8a0fc84b694fac0c8e6cb0000000000000000000000000000000000000000000000000000000000000009477265656e20457468000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054752455448000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80636053a0e311610190578063a69df4b5116100dc578063dd46706411610095578063ec28438a1161006f578063ec28438a14610919578063edc2fcfb14610939578063f0f165af14610959578063f2fde38b1461097957600080fd5b8063dd46706414610893578063dd62ed3e146108b3578063ea2f0b37146108f957600080fd5b8063a69df4b5146107e9578063a9059cbb146107fe578063bdc653ef1461081e578063c49b9a8014610833578063c5bcfbf314610853578063cec7f25a1461087357600080fd5b806382d2a4bb1161014957806395d89b411161012357806395d89b411461077f578063a073d37f14610794578063a457c2d7146107a9578063a5ece941146107c957600080fd5b806382d2a4bb1461070857806388f82020146107285780638da5cb5b1461076157600080fd5b80636053a0e314610667578063625e764c146106875780636b67c4df146106a757806370a08231146106bd578063715018a6146106dd5780637d1db4a5146106f257600080fd5b80633aeac4e11161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146105e6578063557ed1ba1461061f5780635b65b9ab14610632578063602bc62b1461065257600080fd5b806349bd5a5e146105735780634a74bb02146105a757806352390c02146105c657600080fd5b80633aeac4e1146104c75780633b124fe7146104e75780633b2d081c146104fd5780633bd5d17314610513578063437823ec146105335780634549b0391461055357600080fd5b806327c8f835116102a157806327c8f835146103ef57806329370cc6146104235780632d83811914610445578063313ce567146104655780633685d4191461048757806339509351146104a757600080fd5b806306fdde03146102f4578063095ea7b31461031f57806313114a9d1461034f5780631694505e1461036e57806318160ddd146103ba57806323b872dd146103cf57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b50610309610999565b604051610316919061308a565b60405180910390f35b34801561032b57600080fd5b5061033f61033a366004612f28565b610a2b565b6040519015158152602001610316565b34801561035b57600080fd5b50600d545b604051908152602001610316565b34801561037a57600080fd5b506103a27f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610316565b3480156103c657600080fd5b50600b54610360565b3480156103db57600080fd5b5061033f6103ea366004612ee7565b610a42565b3480156103fb57600080fd5b506103a27f000000000000000000000000000000000000000000000000000000000000dead81565b34801561042f57600080fd5b5061044361043e366004612f54565b610aab565b005b34801561045157600080fd5b50610360610460366004612f8e565b610b34565b34801561047157600080fd5b5060105460405160ff9091168152602001610316565b34801561049357600080fd5b506104436104a2366004612e74565b610bb8565b3480156104b357600080fd5b5061033f6104c2366004612f28565b610d6f565b3480156104d357600080fd5b506104436104e2366004612eae565b610da5565b3480156104f357600080fd5b5061036060115481565b34801561050957600080fd5b5061036060155481565b34801561051f57600080fd5b5061044361052e366004612f8e565b610fd2565b34801561053f57600080fd5b5061044361054e366004612e74565b6110bc565b34801561055f57600080fd5b5061036061056e366004612fc0565b61110a565b34801561057f57600080fd5b506103a27f0000000000000000000000004ecd307b0bdf7c0ea8e3e4aad5a534605793051081565b3480156105b357600080fd5b50601e5461033f90610100900460ff1681565b3480156105d257600080fd5b506104436105e1366004612e74565b611197565b3480156105f257600080fd5b5061033f610601366004612e74565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561062b57600080fd5b5042610360565b34801561063e57600080fd5b5061044361064d366004612fe5565b6112ea565b34801561065e57600080fd5b50600254610360565b34801561067357600080fd5b50601e5461033f9062010000900460ff1681565b34801561069357600080fd5b506104436106a2366004612f8e565b61138a565b3480156106b357600080fd5b5061036060175481565b3480156106c957600080fd5b506103606106d8366004612e74565b611433565b3480156106e957600080fd5b50610443611492565b3480156106fe57600080fd5b50610360601a5481565b34801561071457600080fd5b50610443610723366004612f8e565b6114f4565b34801561073457600080fd5b5061033f610743366004612e74565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561076d57600080fd5b506000546001600160a01b03166103a2565b34801561078b57600080fd5b5061030961156f565b3480156107a057600080fd5b50601c54610360565b3480156107b557600080fd5b5061033f6107c4366004612f28565b61157e565b3480156107d557600080fd5b506004546103a2906001600160a01b031681565b3480156107f557600080fd5b506104436115cd565b34801561080a57600080fd5b5061033f610819366004612f28565b6116d3565b34801561082a57600080fd5b50601d54610360565b34801561083f57600080fd5b5061044361084e366004612f54565b6116e0565b34801561085f57600080fd5b5061044361086e366004612e74565b611753565b34801561087f57600080fd5b5061044361088e366004612eae565b6117e0565b34801561089f57600080fd5b506104436108ae366004612f8e565b6118fe565b3480156108bf57600080fd5b506103606108ce366004612eae565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561090557600080fd5b50610443610914366004612e74565b611983565b34801561092557600080fd5b50610443610934366004612f8e565b6119ce565b34801561094557600080fd5b50610443610954366004612f54565b611a5b565b34801561096557600080fd5b50610443610974366004612f8e565b611add565b34801561098557600080fd5b50610443610994366004612e74565b611b6a565b6060600e80546109a89061322d565b80601f01602080910402602001604051908101604052809291908181526020018280546109d49061322d565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b6000610a38338484611d03565b5060015b92915050565b6000610a4f848484611e27565b610aa18433610a9c856040518060600160405280602881526020016132e9602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190612111565b611d03565b5060019392505050565b6000546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad59061312b565b60405180910390fd5b601e8054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b2990831515815260200190565b60405180910390a150565b6000600c54821115610b9b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ad5565b6000610ba561214b565b9050610bb18382611c42565b9392505050565b6000546001600160a01b03163314610be25760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03811660009081526009602052604090205460ff16610c4a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ad5565b60005b600a54811015610d6b57816001600160a01b0316600a8281548110610c7457610c746132af565b6000918252602090912001546001600160a01b03161415610d5957600a8054610c9f90600190613216565b81548110610caf57610caf6132af565b600091825260209091200154600a80546001600160a01b039092169183908110610cdb57610cdb6132af565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600a805480610d3357610d33613299565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d6381613268565b915050610c4d565b5050565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610a38918590610a9c908661216e565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b038216610e3e5760405162461bcd60e51b815260206004820152603060248201527f477265656e4574683a2043616e2774207769746864726177206120746f6b656e60448201526f206f66207a65726f206164647265737360801b6064820152608401610ad5565b6001600160a01b038216301415610ea15760405162461bcd60e51b815260206004820152602160248201527f477265656e4574683a2043616e277420776974686472617720477265656e45746044820152600d60fb1b6064820152608401610ad5565b6001600160a01b038116610ec75760405162461bcd60e51b8152600401610ad5906130df565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610f0957600080fd5b505afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190612fa7565b90508015610fcd5760405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb9190612f71565b505b505050565b3360008181526009602052604090205460ff16156110475760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ad5565b6000611052836121cd565b505050506001600160a01b03841660009081526005602052604090205491925061107e9190508261221c565b6001600160a01b038316600090815260056020526040902055600c546110a4908261221c565b600c55600d546110b4908461216e565b600d55505050565b6000546001600160a01b031633146110e65760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b5483111561115e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ad5565b8161117d57600061116e846121cd565b50939550610a3c945050505050565b6000611188846121cd565b50929550610a3c945050505050565b6000546001600160a01b031633146111c15760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03811660009081526009602052604090205460ff161561122a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ad5565b6001600160a01b03811660009081526005602052604090205415611284576001600160a01b03811660009081526005602052604090205461126a90610b34565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b031633146113145760405162461bcd60e51b8152600401610ad59061312b565b60328311158015611326575060648211155b8015611333575060648111155b6113695760405162461bcd60e51b81526020600482015260076024820152664d61782032352560c81b6044820152606401610ad5565b601183905560158290556017819055611382828261216e565b601355505050565b6000546001600160a01b031633146113b45760405162461bcd60e51b8152600401610ad59061312b565b60195481101561141b5760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e67206665652063616e206e6f74206265206c65737320746860448201526b185b880d481c195c98d95b9d60a21b6064820152608401610ad5565b601781905560155461142d908261216e565b60135550565b6001600160a01b03811660009081526009602052604081205460ff161561147057506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610a3c90610b34565b6000546001600160a01b031633146114bc5760405162461bcd60e51b8152600401610ad59061312b565b600080546040516001600160a01b0390911690600080516020613311833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461151e5760405162461bcd60e51b8152600401610ad59061312b565b670de0b6b3a764000081101561156a5760405162461bcd60e51b815260206004820152601160248201527043616e27742073657420746f6f206c6f7760781b6044820152606401610ad5565b601d55565b6060600f80546109a89061322d565b6000610a383384610a9c85604051806060016040528060258152602001613331602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190612111565b6001546001600160a01b031633146116335760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610ad5565b60025442116116845760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610ad5565b600154600080546040516001600160a01b03938416939091169160008051602061331183398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a38338484611e27565b6000546001600160a01b0316331461170a5760405162461bcd60e51b8152600401610ad59061312b565b601e80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b2990831515815260200190565b6000546001600160a01b0316331461177d5760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b0381166117a35760405162461bcd60e51b8152600401610ad5906130df565b478015610d6b576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610fcd573d6000803e3d6000fd5b6000546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03821673e564016abe0db2003af8a0fc84b694fac0c8e6cb141561186d5760405162461bcd60e51b815260206004820152601360248201527243616e2774207365742030206164647265737360681b6044820152606401610ad5565b6001600160a01b03811673e564016abe0db2003af8a0fc84b694fac0c8e6cb14156118d05760405162461bcd60e51b815260206004820152601360248201527243616e2774207365742030206164647265737360681b6044820152606401610ad5565b600480546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6000546001600160a01b031633146119285760405162461bcd60e51b8152600401610ad59061312b565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561195781426131bd565b600255600080546040516001600160a01b0390911690600080516020613311833981519152908390a350565b6000546001600160a01b031633146119ad5760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146119f85760405162461bcd60e51b8152600401610ad59061312b565b600b54611a07906103e8611c42565b811015611a565760405162461bcd60e51b815260206004820152601760248201527f63616e277420736574206c6f776572207468616e2031250000000000000000006044820152606401610ad5565b601a55565b6000546001600160a01b03163314611a855760405162461bcd60e51b8152600401610ad59061312b565b8015611aac57611a9560006116e0565b611a9d61225e565b601a54601b55600b54601a5550565b611ab660016116e0565b611ad3601254601155601454601355601654601555601854601755565b601b54601a555b50565b6000546001600160a01b03163314611b075760405162461bcd60e51b8152600401610ad59061312b565b600b54611b1790620186a0611c42565b8111611b655760405162461bcd60e51b815260206004820152601b60248201527f43616e277420736574206c6f776572207468616e20302e3030312500000000006044820152606401610ad5565b601c55565b6000546001600160a01b03163314611b945760405162461bcd60e51b8152600401610ad59061312b565b6001600160a01b038116611bf95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad5565b600080546040516001600160a01b038085169392169160008051602061331183398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bb183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122a4565b600082611c9357506000610a3c565b6000611c9f83856131f7565b905082611cac85836131d5565b14610bb15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad5565b6001600160a01b038316611d655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b038216611dc65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e8b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad5565b6001600160a01b038216611eed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad5565b60008111611f4f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ad5565b6000546001600160a01b03848116911614801590611f7b57506000546001600160a01b03838116911614155b15611fe357601a54811115611fe35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ad5565b6000611fee30611433565b601c54601e549192508210159060ff161580156120125750601e54610100900460ff165b801561204f57507f0000000000000000000000004ecd307b0bdf7c0ea8e3e4aad5a53460579305106001600160a01b0316846001600160a01b0316145b156120b257801561206857601c549150612068826122d2565b601e54479062010000900460ff1680156120895750670de0b6b3a764000081115b156120b057601d5481111561209d5750601d545b6120b06120ab826064611c42565b61236d565b505b6001600160a01b03851660009081526008602052604090205460019060ff16806120f457506001600160a01b03851660009081526008602052604090205460ff165b156120fd575060005b61210986868684612396565b505050505050565b600081848411156121355760405162461bcd60e51b8152600401610ad5919061308a565b5060006121428486613216565b95945050505050565b60008060006121586124c7565b90925090506121678282611c42565b9250505090565b60008061217b83856131bd565b905083811015610bb15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad5565b60008060008060008060008060006121e48a612649565b92509250925060008060006122028d86866121fd61214b565b61268b565b919f909e50909c50959a5093985091965092945050505050565b6000610bb183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612111565b60115415801561226e5750601354155b1561227557565b601180546012556013805460145560158054601655601780546018556046909355600a91829055603290559055565b600081836122c55760405162461bcd60e51b8152600401610ad5919061308a565b50600061214284866131d5565b601e805460ff19166001179055476122e9826126db565b60006122f5478361221c565b60035460195460135492935061232c926001600160a01b03909216916123279190612321908690611c42565b90611c84565b6128e3565b60045460195460175461235e926001600160a01b031691612327916123509161221c565b601354612321908690611c42565b5050601e805460ff1916905550565b601e805460ff1916600117905580156123895761238981612919565b50601e805460ff19169055565b806123a3576123a361225e565b6001600160a01b03841660009081526009602052604090205460ff1680156123e457506001600160a01b03831660009081526009602052604090205460ff16155b156123f9576123f4848484612b02565b6124a5565b6001600160a01b03841660009081526009602052604090205460ff1615801561243a57506001600160a01b03831660009081526009602052604090205460ff165b1561244a576123f4848484612c28565b6001600160a01b03841660009081526009602052604090205460ff16801561248a57506001600160a01b03831660009081526009602052604090205460ff165b1561249a576123f4848484612cd1565b6124a5848484612d44565b80610fcb57610fcb601254601155601454601355601654601555601854601755565b600c54600b546000918291825b600a54811015612619578260056000600a84815481106124f6576124f66132af565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061256157508160066000600a848154811061253a5761253a6132af565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561257757600c54600b54945094505050509091565b6125bd60056000600a8481548110612591576125916132af565b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061221c565b925061260560066000600a84815481106125d9576125d96132af565b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061221c565b91508061261181613268565b9150506124d4565b50600b54600c5461262991611c42565b82101561264057600c54600b549350935050509091565b90939092509050565b60008060008061265885612d88565b9050600061266586612dab565b9050600061267d82612677898661221c565b9061221c565b979296509094509092505050565b600080808061269a8886611c84565b905060006126a88887611c84565b905060006126b68888611c84565b905060006126c882612677868661221c565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612710576127106132af565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561278957600080fd5b505afa15801561279d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c19190612e91565b816001815181106127d4576127d46132af565b60200260200101906001600160a01b031690816001600160a01b03168152505061281f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d03565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612874908590600090869030904290600401613181565b600060405180830381600087803b15801561288e57600080fd5b505af11580156128a2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128d7929190613160565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610fcd573d6000803e3d6000fd5b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561299357600080fd5b505afa1580156129a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cb9190612e91565b816000815181106129de576129de6132af565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612a1257612a126132af565b6001600160a01b0392831660209182029290920101527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000dead612a804261012c61216e565b6040518663ffffffff1660e01b8152600401612a9f9493929190613055565b6000604051808303818588803b158015612ab857600080fd5b505af1158015612acc573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040516128d7929190613160565b600080600080600080612b14876121cd565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612b46908861221c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612b75908761221c565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054612ba4908661216e565b6001600160a01b038916600090815260056020526040902055612bc681612dc8565b612bd08483612e50565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612c1591815260200190565b60405180910390a3505050505050505050565b600080600080600080612c3a876121cd565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612c6c908761221c565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054612ca2908461216e565b6001600160a01b038916600090815260066020908152604080832093909355600590522054612ba4908661216e565b600080600080600080612ce3876121cd565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612d15908861221c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612c6c908761221c565b600080600080600080612d56876121cd565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612b75908761221c565b6000610a3c6103e8612da560115485611c8490919063ffffffff16565b90611c42565b6000610a3c6103e8612da560135485611c8490919063ffffffff16565b6000612dd261214b565b90506000612de08383611c84565b30600090815260056020526040902054909150612dfd908261216e565b3060009081526005602090815260408083209390935560099052205460ff1615610fcd5730600090815260066020526040902054612e3b908461216e565b30600090815260066020526040902055505050565b600c54612e5d908361221c565b600c55600d54612e6d908261216e565b600d555050565b600060208284031215612e8657600080fd5b8135610bb1816132c5565b600060208284031215612ea357600080fd5b8151610bb1816132c5565b60008060408385031215612ec157600080fd5b8235612ecc816132c5565b91506020830135612edc816132c5565b809150509250929050565b600080600060608486031215612efc57600080fd5b8335612f07816132c5565b92506020840135612f17816132c5565b929592945050506040919091013590565b60008060408385031215612f3b57600080fd5b8235612f46816132c5565b946020939093013593505050565b600060208284031215612f6657600080fd5b8135610bb1816132da565b600060208284031215612f8357600080fd5b8151610bb1816132da565b600060208284031215612fa057600080fd5b5035919050565b600060208284031215612fb957600080fd5b5051919050565b60008060408385031215612fd357600080fd5b823591506020830135612edc816132da565b600080600060608486031215612ffa57600080fd5b505081359360208301359350604090920135919050565b600081518084526020808501945080840160005b8381101561304a5781516001600160a01b031687529582019590820190600101613025565b509495945050505050565b84815260806020820152600061306e6080830186613011565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156130b75785810183015185820160400152820161309b565b818111156130c9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252602c908201527f477265656e4574683a2043616e277420776974686472617720746f207468652060408201526b7a65726f206164647265737360a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006131796040830184613011565b949350505050565b85815284602082015260a0604082015260006131a060a0830186613011565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156131d0576131d0613283565b500190565b6000826131f257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561321157613211613283565b500290565b60008282101561322857613228613283565b500390565b600181811c9082168061324157607f821691505b6020821081141561326257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561327c5761327c613283565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611ada57600080fd5b8015158114611ada57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201588a974407fe6fdaebf0871438550ab74d183d89507868ba5b69fc64196ed5d64736f6c63430008050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000e8d4a51000000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000014000000000000000000000000e564016abe0db2003af8a0fc84b694fac0c8e6cb0000000000000000000000000000000000000000000000000000000000000009477265656e20457468000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054752455448000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _n (string): Green Eth
Arg [1] : _s (string): GRETH
Arg [2] : _d (uint8): 18
Arg [3] : _ts (uint256): 1000000000000
Arg [4] : _tax (uint256): 70
Arg [5] : _bb (uint256): 50
Arg [6] : _mkt (uint256): 20
Arg [7] : _ma (address): 0xe564016abE0dB2003aF8A0fc84b694FaC0C8E6cB
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000e8d4a51000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000046
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [7] : 000000000000000000000000e564016abe0db2003af8a0fc84b694fac0c8e6cb
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [9] : 477265656e204574680000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [11] : 4752455448000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
15166:23025:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18992:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19904:161;;;;;;;;;;-1:-1:-1;19904:161:0;;;;;:::i;:::-;;:::i;:::-;;;4543:14:1;;4536:22;4518:41;;4506:2;4491:18;19904:161:0;4473:92:1;21025:87:0;;;;;;;;;;-1:-1:-1;21094:10:0;;21025:87;;;15717:25:1;;;15705:2;15690:18;21025:87:0;15672:76:1;16571:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3831:32:1;;;3813:51;;3801:2;3786:18;16571:51:0;3768:102:1;19269:95:0;;;;;;;;;;-1:-1:-1;19349:7:0;;19269:95;;20073:313;;;;;;;;;;-1:-1:-1;20073:313:0;;;;;:::i;:::-;;:::i;15398:81::-;;;;;;;;;;;;;;;36494:150;;;;;;;;;;-1:-1:-1;36494:150:0;;;;;:::i;:::-;;:::i;:::-;;22209:253;;;;;;;;;;-1:-1:-1;22209:253:0;;;;;:::i;:::-;;:::i;19178:83::-;;;;;;;;;;-1:-1:-1;19244:9:0;;19178:83;;19244:9;;;;16819:36:1;;16807:2;16792:18;19178:83:0;16774:87:1;22813:479:0;;;;;;;;;;-1:-1:-1;22813:479:0;;;;;:::i;:::-;;:::i;20394:218::-;;;;;;;;;;-1:-1:-1;20394:218:0;;;;;:::i;:::-;;:::i;37412:538::-;;;;;;;;;;-1:-1:-1;37412:538:0;;;;;:::i;:::-;;:::i;16052:22::-;;;;;;;;;;;;;;;;16211:25;;;;;;;;;;;;;;;;21376:377;;;;;;;;;;-1:-1:-1;21376:377:0;;;;;:::i;:::-;;:::i;34308:111::-;;;;;;;;;;-1:-1:-1;34308:111:0;;;;;:::i;:::-;;:::i;21765:436::-;;;;;;;;;;-1:-1:-1;21765:436:0;;;;;:::i;:::-;;:::i;16629:38::-;;;;;;;;;;;;;;;16708:40;;;;;;;;;;-1:-1:-1;16708:40:0;;;;;;;;;;;22470:335;;;;;;;;;;-1:-1:-1;22470:335:0;;;;;:::i;:::-;;:::i;34173:123::-;;;;;;;;;;-1:-1:-1;34173:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;34261:27:0;34237:4;34261:27;;;:18;:27;;;;;;;;;34173:123;6556:90;;;;;;;;;;-1:-1:-1;6623:15:0;6556:90;;34553:350;;;;;;;;;;-1:-1:-1;34553:350:0;;;;;:::i;:::-;;:::i;6454:90::-;;;;;;;;;;-1:-1:-1;6527:9:0;;6454:90;;16755:33;;;;;;;;;;-1:-1:-1;16755:33:0;;;;;;;;;;;35116:262;;;;;;;;;;-1:-1:-1;35116:262:0;;;;;:::i;:::-;;:::i;16290:27::-;;;;;;;;;;;;;;;;19372:198;;;;;;;;;;-1:-1:-1;19372:198:0;;;;;:::i;:::-;;:::i;6046:148::-;;;;;;;;;;;;;:::i;16405:27::-;;;;;;;;;;;;;;;;35662:192;;;;;;;;;;-1:-1:-1;35662:192:0;;;;;:::i;:::-;;:::i;20897:120::-;;;;;;;;;;-1:-1:-1;20897:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;20989:20:0;20965:4;20989:20;;;:11;:20;;;;;;;;;20897:120;5821:79;;;;;;;;;;-1:-1:-1;5859:7:0;5886:6;-1:-1:-1;;;;;5886:6:0;5821:79;;19083:87;;;;;;;;;;;;;:::i;21124:120::-;;;;;;;;;;-1:-1:-1;21213:23:0;;21124:120;;20620:269;;;;;;;;;;-1:-1:-1;20620:269:0;;;;;:::i;:::-;;:::i;15331:39::-;;;;;;;;;;-1:-1:-1;15331:39:0;;;;-1:-1:-1;;;;;15331:39:0;;;6892:305;;;;;;;;;;;;;:::i;19578:167::-;;;;;;;;;;-1:-1:-1;19578:167:0;;;;;:::i;:::-;;:::i;21256:108::-;;;;;;;;;;-1:-1:-1;21339:17:0;;21256:108;;36311:171;;;;;;;;;;-1:-1:-1;36311:171:0;;;;;:::i;:::-;;:::i;37070:330::-;;;;;;;;;;-1:-1:-1;37070:330:0;;;;;:::i;:::-;;:::i;35862:441::-;;;;;;;;;;-1:-1:-1;35862:441:0;;;;;:::i;:::-;;:::i;6654:226::-;;;;;;;;;;-1:-1:-1;6654:226:0;;;;;:::i;:::-;;:::i;19753:143::-;;;;;;;;;;-1:-1:-1;19753:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19861:18:0;;;19834:7;19861:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19753:143;34431:110;;;;;;;;;;-1:-1:-1;34431:110:0;;;;;:::i;:::-;;:::i;34915:189::-;;;;;;;;;;-1:-1:-1;34915:189:0;;;;;:::i;:::-;;:::i;36656:406::-;;;;;;;;;;-1:-1:-1;36656:406:0;;;;;:::i;:::-;;:::i;35386:263::-;;;;;;;;;;-1:-1:-1;35386:263:0;;;;;:::i;:::-;;:::i;6202:244::-;;;;;;;;;;-1:-1:-1;6202:244:0;;;;;:::i;:::-;;:::i;18992:83::-;19029:13;19062:5;19055:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18992:83;:::o;19904:161::-;19979:4;19996:39;324:10;20019:7;20028:6;19996:8;:39::i;:::-;-1:-1:-1;20053:4:0;19904:161;;;;;:::o;20073:313::-;20171:4;20188:36;20198:6;20206:9;20217:6;20188:9;:36::i;:::-;20235:121;20244:6;324:10;20266:89;20304:6;20266:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20266:19:0;;;;;;:11;:19;;;;;;;;324:10;20266:33;;;;;;;;;;:37;:89::i;:::-;20235:8;:121::i;:::-;-1:-1:-1;20374:4:0;20073:313;;;;;:::o;36494:150::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;;;;;;;;;36564:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;36564:25:0;;::::1;;::::0;;36605:31:::1;::::0;::::1;::::0;::::1;::::0;36581:8;4543:14:1;4536:22;4518:41;;4506:2;4491:18;;4473:92;36605:31:0::1;;;;;;;;36494:150:::0;:::o;22209:253::-;22275:7;22314;;22303;:18;;22295:73;;;;-1:-1:-1;;;22295:73:0;;7282:2:1;22295:73:0;;;7264:21:1;7321:2;7301:18;;;7294:30;7360:34;7340:18;;;7333:62;-1:-1:-1;;;7411:18:1;;;7404:40;7461:19;;22295:73:0;7254:232:1;22295:73:0;22379:19;22402:10;:8;:10::i;:::-;22379:33;-1:-1:-1;22430:24:0;:7;22379:33;22430:11;:24::i;:::-;22423:31;22209:253;-1:-1:-1;;;22209:253:0:o;22813:479::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22895:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22887:60;;;::::0;-1:-1:-1;;;22887:60:0;;9272:2:1;22887:60:0::1;::::0;::::1;9254:21:1::0;9311:2;9291:18;;;9284:30;9350:29;9330:18;;;9323:57;9397:18;;22887:60:0::1;9244:177:1::0;22887:60:0::1;22963:9;22958:327;22982:9;:16:::0;22978:20;::::1;22958:327;;;23040:7;-1:-1:-1::0;;;;;23024:23:0::1;:9;23034:1;23024:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23024:12:0::1;:23;23020:254;;;23083:9;23093:16:::0;;:20:::1;::::0;23112:1:::1;::::0;23093:20:::1;:::i;:::-;23083:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;23068:9:::1;:12:::0;;-1:-1:-1;;;;;23083:31:0;;::::1;::::0;23078:1;;23068:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;23068:46:0::1;-1:-1:-1::0;;;;;23068:46:0;;::::1;;::::0;;23133:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23172:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23172:28:0::1;::::0;;23219:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23219:15:0;;;;;-1:-1:-1;;;;;;23219:15:0::1;::::0;;;;;22958:327:::1;22813:479:::0;:::o;23020:254::-:1;23000:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22958:327;;;;22813:479:::0;:::o;20394:218::-;324:10;20482:4;20531:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20531:34:0;;;;;;;;;;20482:4;;20499:83;;20522:7;;20531:50;;20570:10;20531:38;:50::i;37412:538::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37509:20:0;::::1;37500:82;;;::::0;-1:-1:-1;;;37500:82:0;;9984:2:1;37500:82:0::1;::::0;::::1;9966:21:1::0;10023:2;10003:18;;;9996:30;10062:34;10042:18;;;10035:62;-1:-1:-1;;;10113:18:1;;;10106:46;10169:19;;37500:82:0::1;9956:238:1::0;37500:82:0::1;-1:-1:-1::0;;;;;37602:23:0;::::1;37620:4;37602:23;;37593:70;;;::::0;-1:-1:-1;;;37593:70:0;;6528:2:1;37593:70:0::1;::::0;::::1;6510:21:1::0;6567:2;6547:18;;;6540:30;6606:34;6586:18;;;6579:62;-1:-1:-1;;;6657:18:1;;;6650:31;6698:19;;37593:70:0::1;6500:223:1::0;37593:70:0::1;-1:-1:-1::0;;;;;37683:22:0;::::1;37674:80;;;;-1:-1:-1::0;;;37674:80:0::1;;;;;;;:::i;:::-;37798:40;::::0;-1:-1:-1;;;37798:40:0;;37832:4:::1;37798:40;::::0;::::1;3813:51:1::0;37775:20:0::1;::::0;-1:-1:-1;;;;;37798:24:0;::::1;::::0;::::1;::::0;3786:18:1;;37798:40:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37775:63:::0;-1:-1:-1;37863:16:0;;37859:83:::1;;37894:48;::::0;-1:-1:-1;;;37894:48:0;;-1:-1:-1;;;;;4291:32:1;;;37894:48:0::1;::::0;::::1;4273:51:1::0;4340:18;;;4333:34;;;37894:23:0;::::1;::::0;::::1;::::0;4246:18:1;;37894:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37859:83;37489:461;37412:538:::0;;:::o;21376:377::-;324:10;21428:14;21477:19;;;:11;:19;;;;;;;;21476:20;21468:77;;;;-1:-1:-1;;;21468:77:0;;14956:2:1;21468:77:0;;;14938:21:1;14995:2;14975:18;;;14968:30;15034:34;15014:18;;;15007:62;-1:-1:-1;;;15085:18:1;;;15078:42;15137:19;;21468:77:0;14928:234:1;21468:77:0;21557:15;21581:19;21592:7;21581:10;:19::i;:::-;-1:-1:-1;;;;;;;;;21629:15:0;;;;;;:7;:15;;;;;;21556:44;;-1:-1:-1;21629:28:0;;:15;-1:-1:-1;21556:44:0;21629:19;:28::i;:::-;-1:-1:-1;;;;;21611:15:0;;;;;;:7;:15;;;;;:46;21678:7;;:20;;21690:7;21678:11;:20::i;:::-;21668:7;:30;21722:10;;:23;;21737:7;21722:14;:23::i;:::-;21709:10;:36;-1:-1:-1;;;21376:377:0:o;34308:111::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34377:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;34377:34:0::1;34407:4;34377:34;::::0;;34308:111::o;21765:436::-;21855:7;21894;;21883;:18;;21875:62;;;;-1:-1:-1;;;21875:62:0;;10401:2:1;21875:62:0;;;10383:21:1;10440:2;10420:18;;;10413:30;10479:33;10459:18;;;10452:61;10530:18;;21875:62:0;10373:181:1;21875:62:0;21953:17;21948:246;;21988:15;22012:19;22023:7;22012:10;:19::i;:::-;-1:-1:-1;21987:44:0;;-1:-1:-1;22046:14:0;;-1:-1:-1;;;;;22046:14:0;21948:246;22095:23;22126:19;22137:7;22126:10;:19::i;:::-;-1:-1:-1;22093:52:0;;-1:-1:-1;22160:22:0;;-1:-1:-1;;;;;22160:22:0;22470:335;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22555:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22554:21;22546:61;;;::::0;-1:-1:-1;;;22546:61:0;;9272:2:1;22546:61:0::1;::::0;::::1;9254:21:1::0;9311:2;9291:18;;;9284:30;9350:29;9330:18;;;9323:57;9397:18;;22546:61:0::1;9244:177:1::0;22546:61:0::1;-1:-1:-1::0;;;;;22621:16:0;::::1;22640:1;22621:16:::0;;;:7:::1;:16;::::0;;;;;:20;22618:108:::1;;-1:-1:-1::0;;;;;22697:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22677:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22658:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22618:108:::1;-1:-1:-1::0;;;;;22736:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22736:27:0::1;22759:4;22736:27:::0;;::::1;::::0;;;22774:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22774:23:0::1;::::0;;::::1;::::0;;22470:335::o;34553:350::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;34679:2:::1;34669:6;:12;;:34;;;;;34700:3;34685:11;:18;;34669:34;:58;;;;;34724:3;34707:13;:20;;34669:58;34661:78;;;::::0;-1:-1:-1;;;34661:78:0;;12694:2:1;34661:78:0::1;::::0;::::1;12676:21:1::0;12733:1;12713:18;;;12706:29;-1:-1:-1;;;12751:18:1;;;12744:37;12798:18;;34661:78:0::1;12666:156:1::0;34661:78:0::1;34750:7;:16:::0;;;34777:10:::1;:24:::0;;;34812:12:::1;:28:::0;;;34867::::1;34790:11:::0;34827:13;34867:14:::1;:28::i;:::-;34851:13;:44:::0;-1:-1:-1;;;34553:350:0:o;35116:262::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;35221:6:::1;;35204:13;:23;;35196:80;;;::::0;-1:-1:-1;;;35196:80:0;;11170:2:1;35196:80:0::1;::::0;::::1;11152:21:1::0;11209:2;11189:18;;;11182:30;11248:34;11228:18;;;11221:62;-1:-1:-1;;;11299:18:1;;;11292:42;11351:19;;35196:80:0::1;11142:234:1::0;35196:80:0::1;35287:12;:28:::0;;;35342:10:::1;::::0;:28:::1;::::0;35302:13;35342:14:::1;:28::i;:::-;35326:13;:44:::0;-1:-1:-1;35116:262:0:o;19372:198::-;-1:-1:-1;;;;;19462:20:0;;19438:7;19462:20;;;:11;:20;;;;;;;;19458:49;;;-1:-1:-1;;;;;;19491:16:0;;;;;:7;:16;;;;;;;19372:198::o;19458:49::-;-1:-1:-1;;;;;19545:16:0;;;;;;:7;:16;;;;;;19525:37;;:19;:37::i;6046:148::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;6153:1:::1;6137:6:::0;;6116:40:::1;::::0;-1:-1:-1;;;;;6137:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6116:40:0;6153:1;;6116:40:::1;6184:1;6167:19:::0;;-1:-1:-1;;;;;;6167:19:0::1;::::0;;6046:148::o;35662:192::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;35771:10:::1;35755:12;:26;;35747:56;;;::::0;-1:-1:-1;;;35747:56:0;;13439:2:1;35747:56:0::1;::::0;::::1;13421:21:1::0;13478:2;13458:18;;;13451:30;-1:-1:-1;;;13497:18:1;;;13490:47;13554:18;;35747:56:0::1;13411:167:1::0;35747:56:0::1;35814:17;:32:::0;35662:192::o;19083:87::-;19122:13;19155:7;19148:14;;;;;:::i;20620:269::-;20713:4;20730:129;324:10;20753:7;20762:96;20801:15;20762:96;;;;;;;;;;;;;;;;;324:10;20762:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20762:34:0;;;;;;;;;;;;:38;:96::i;6892:305::-;6944:14;;-1:-1:-1;;;;;6944:14:0;6962:10;6944:28;6936:76;;;;-1:-1:-1;;;6936:76:0;;15369:2:1;6936:76:0;;;15351:21:1;15408:2;15388:18;;;15381:30;15447:34;15427:18;;;15420:62;-1:-1:-1;;;15498:18:1;;;15491:33;15541:19;;6936:76:0;15341:225:1;6936:76:0;7049:9;;7031:15;:27;7023:72;;;;-1:-1:-1;;;7023:72:0;;14596:2:1;7023:72:0;;;14578:21:1;14635:2;14615:18;;;14608:30;14674:33;14654:18;;;14647:61;14725:18;;7023:72:0;14568:181:1;7023:72:0;7140:14;;;7132:6;;7111:44;;-1:-1:-1;;;;;7140:14:0;;;;7132:6;;;;-1:-1:-1;;;;;;;;;;;7111:44:0;;7175:14;;;7166:23;;-1:-1:-1;;;;;;7166:23:0;-1:-1:-1;;;;;7175:14:0;;;7166:23;;;;;;6892:305::o;19578:167::-;19656:4;19673:42;324:10;19697:9;19708:6;19673:9;:42::i;36311:171::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;36388:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;36388:32:0;;::::1;;::::0;;36436:38:::1;::::0;::::1;::::0;::::1;::::0;36412:8;4543:14:1;4536:22;4518:41;;4506:2;4491:18;;4473:92;37070:330:0;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37151:22:0;::::1;37142:80;;;;-1:-1:-1::0;;;37142:80:0::1;;;;;;;:::i;:::-;37269:21;37315:19:::0;;37311:81:::1;;37349:43;::::0;-1:-1:-1;;;;;37349:26:0;::::1;::::0;:43;::::1;;;::::0;37376:15;;37349:43:::1;::::0;;;37376:15;37349:26;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;35862:441:::0;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35980:72:0;::::1;36009:42;35980:72;;35972:104;;;::::0;-1:-1:-1;;;35972:104:0;;11583:2:1;35972:104:0::1;::::0;::::1;11565:21:1::0;11622:2;11602:18;;;11595:30;-1:-1:-1;;;11641:18:1;;;11634:49;11700:18;;35972:104:0::1;11555:169:1::0;35972:104:0::1;-1:-1:-1::0;;;;;36095:66:0;::::1;36118:42;36095:66;;36087:98;;;::::0;-1:-1:-1;;;36087:98:0;;11583:2:1;36087:98:0::1;::::0;::::1;11565:21:1::0;11622:2;11602:18;;;11595:30;-1:-1:-1;;;11641:18:1;;;11634:49;11700:18;;36087:98:0::1;11555:169:1::0;36087:98:0::1;36206:16;:45:::0;;-1:-1:-1;;;;;36206:45:0;;::::1;-1:-1:-1::0;;;;;;36206:45:0;;::::1;;::::0;;;36262:10:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;35862:441::o;6654:226::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;6735:6:::1;::::0;;;6718:23;;-1:-1:-1;;;;;;6718:23:0;;::::1;-1:-1:-1::0;;;;;6735:6:0;::::1;6718:23;::::0;;;6752:19:::1;::::0;;6794:22:::1;6812:4:::0;6794:15:::1;:22;:::i;:::-;6782:9;:34:::0;6869:1:::1;6853:6:::0;;6832:40:::1;::::0;-1:-1:-1;;;;;6853:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6832:40:0;6869:1;;6832:40:::1;6654:226:::0;:::o;34431:110::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34498:27:0::1;34528:5;34498:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;34498:35:0::1;::::0;;34431:110::o;34915:189::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;35015:7:::1;::::0;:17:::1;::::0;35027:4:::1;35015:11;:17::i;:::-;35000:11;:32;;34992:67;;;::::0;-1:-1:-1;;;34992:67:0;;6930:2:1;34992:67:0::1;::::0;::::1;6912:21:1::0;6969:2;6949:18;;;6942:30;7008:25;6988:18;;;6981:53;7051:18;;34992:67:0::1;6902:173:1::0;34992:67:0::1;35070:12;:26:::0;34915:189::o;36656:406::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;36722:8:::1;36718:337;;;36747:31;36772:5;36747:24;:31::i;:::-;36793:14;:12;:14::i;:::-;36845:12;::::0;36822:20:::1;:35:::0;19349:7;;36872:12:::1;:28:::0;36656:406;:::o;36718:337::-:1;36933:30;36958:4;36933:24;:30::i;:::-;36978:15;34006::::0;;33996:7;:25;34048:21;;34032:13;:37;34093:18;;34080:10;:31;34137:20;;34122:12;:35;33952:213;36978:15:::1;37023:20;::::0;37008:12:::1;:35:::0;36718:337:::1;36656:406:::0;:::o;35386:263::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;35529:7:::1;::::0;:19:::1;::::0;35541:6:::1;35529:11;:19::i;:::-;35502:24;:46;35494:86;;;::::0;-1:-1:-1;;;35494:86:0;;9628:2:1;35494:86:0::1;::::0;::::1;9610:21:1::0;9667:2;9647:18;;;9640:30;9706:29;9686:18;;;9679:57;9753:18;;35494:86:0::1;9600:177:1::0;35494:86:0::1;35591:23;:50:::0;35386:263::o;6202:244::-;5955:6;;-1:-1:-1;;;;;5955:6:0;324:10;5955:22;5947:67;;;;-1:-1:-1;;;5947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6291:22:0;::::1;6283:73;;;::::0;-1:-1:-1;;;6283:73:0;;7693:2:1;6283:73:0::1;::::0;::::1;7675:21:1::0;7732:2;7712:18;;;7705:30;7771:34;7751:18;;;7744:62;-1:-1:-1;;;7822:18:1;;;7815:36;7868:19;;6283:73:0::1;7665:228:1::0;6283:73:0::1;6393:6;::::0;;6372:38:::1;::::0;-1:-1:-1;;;;;6372:38:0;;::::1;::::0;6393:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6372:38:0;::::1;6421:6;:17:::0;;-1:-1:-1;;;;;;6421:17:0::1;-1:-1:-1::0;;;;;6421:17:0;;;::::1;::::0;;;::::1;::::0;;6202:244::o;1980:132::-;2038:7;2065:39;2069:1;2072;2065:39;;;;;;;;;;;;;;;;;:3;:39::i;1720:250::-;1778:7;1802:6;1798:47;;-1:-1:-1;1832:1:0;1825:8;;1798:47;1857:9;1869:5;1873:1;1869;:5;:::i;:::-;1857:17;-1:-1:-1;1902:1:0;1893:5;1897:1;1857:17;1893:5;:::i;:::-;:10;1885:56;;;;-1:-1:-1;;;1885:56:0;;11931:2:1;1885:56:0;;;11913:21:1;11970:2;11950:18;;;11943:30;12009:34;11989:18;;;11982:62;-1:-1:-1;;;12060:18:1;;;12053:31;12101:19;;1885:56:0;11903:223:1;23300:337:0;-1:-1:-1;;;;;23393:19:0;;23385:68;;;;-1:-1:-1;;;23385:68:0;;14191:2:1;23385:68:0;;;14173:21:1;14230:2;14210:18;;;14203:30;14269:34;14249:18;;;14242:62;-1:-1:-1;;;14320:18:1;;;14313:34;14364:19;;23385:68:0;14163:226:1;23385:68:0;-1:-1:-1;;;;;23472:21:0;;23464:68;;;;-1:-1:-1;;;23464:68:0;;8100:2:1;23464:68:0;;;8082:21:1;8139:2;8119:18;;;8112:30;8178:34;8158:18;;;8151:62;-1:-1:-1;;;8229:18:1;;;8222:32;8271:19;;23464:68:0;8072:224:1;23464:68:0;-1:-1:-1;;;;;23545:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23597:32;;15717:25:1;;;23597:32:0;;15690:18:1;23597:32:0;;;;;;;23300:337;;;:::o;23645:1547::-;-1:-1:-1;;;;;23767:18:0;;23759:68;;;;-1:-1:-1;;;23759:68:0;;13785:2:1;23759:68:0;;;13767:21:1;13824:2;13804:18;;;13797:30;13863:34;13843:18;;;13836:62;-1:-1:-1;;;13914:18:1;;;13907:35;13959:19;;23759:68:0;13757:227:1;23759:68:0;-1:-1:-1;;;;;23846:16:0;;23838:64;;;;-1:-1:-1;;;23838:64:0;;6124:2:1;23838:64:0;;;6106:21:1;6163:2;6143:18;;;6136:30;6202:34;6182:18;;;6175:62;-1:-1:-1;;;6253:18:1;;;6246:33;6296:19;;23838:64:0;6096:225:1;23838:64:0;23930:1;23921:6;:10;23913:64;;;;-1:-1:-1;;;23913:64:0;;13029:2:1;23913:64:0;;;13011:21:1;13068:2;13048:18;;;13041:30;13107:34;13087:18;;;13080:62;-1:-1:-1;;;13158:18:1;;;13151:39;13207:19;;23913:64:0;13001:231:1;23913:64:0;5859:7;5886:6;-1:-1:-1;;;;;23991:15:0;;;5886:6;;23991:15;;;;:32;;-1:-1:-1;5859:7:0;5886:6;-1:-1:-1;;;;;24010:13:0;;;5886:6;;24010:13;;23991:32;23988:139;;;24058:12;;24048:6;:22;;24040:75;;;;-1:-1:-1;;;24040:75:0;;10761:2:1;24040:75:0;;;10743:21:1;10800:2;10780:18;;;10773:30;10839:34;10819:18;;;10812:62;-1:-1:-1;;;10890:18:1;;;10883:38;10938:19;;24040:75:0;10733:230:1;24040:75:0;24139:28;24170:24;24188:4;24170:9;:24::i;:::-;24260:23;;24309:16;;24139:55;;-1:-1:-1;24236:47:0;;;;24309:16;;24308:17;:42;;;;-1:-1:-1;24329:21:0;;;;;;;24308:42;:65;;;;;24360:13;-1:-1:-1;;;;;24354:19:0;:2;-1:-1:-1;;;;;24354:19:0;;24308:65;24304:582;;;24394:23;24390:165;;;24461:23;;24438:46;;24503:32;24514:20;24503:10;:32::i;:::-;24624:14;;24584:21;;24624:14;;;;;:47;;;;;24660:10;24642:7;:29;24624:47;24620:255;;;24724:17;;24714:7;:27;24710:81;;;-1:-1:-1;24774:17:0;;24710:81;24828:31;24842:16;:7;24854:3;24842:11;:16::i;:::-;24828:13;:31::i;:::-;24375:511;24304:582;-1:-1:-1;;;;;25033:24:0;;24906:12;25033:24;;;:18;:24;;;;;;24921:4;;25033:24;;;:50;;-1:-1:-1;;;;;;25061:22:0;;;;;;:18;:22;;;;;;;;25033:50;25030:96;;;-1:-1:-1;25109:5:0;25030:96;25146:38;25161:4;25166:2;25169:6;25176:7;25146:14;:38::i;:::-;23748:1444;;;23645:1547;;;:::o;1520:192::-;1606:7;1642:12;1634:6;;;;1626:29;;;;-1:-1:-1;;;1626:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1666:9:0;1678:5;1682:1;1678;:5;:::i;:::-;1666:17;1520:192;-1:-1:-1;;;;;1520:192:0:o;32091:163::-;32132:7;32153:15;32170;32189:19;:17;:19::i;:::-;32152:56;;-1:-1:-1;32152:56:0;-1:-1:-1;32226:20:0;32152:56;;32226:11;:20::i;:::-;32219:27;;;;32091:163;:::o;1187:181::-;1245:7;;1277:5;1281:1;1277;:5;:::i;:::-;1265:17;;1306:1;1301;:6;;1293:46;;;;-1:-1:-1;;;1293:46:0;;8503:2:1;1293:46:0;;;8485:21:1;8542:2;8522:18;;;8515:30;8581:29;8561:18;;;8554:57;8628:18;;1293:46:0;8475:177:1;30889:419:0;30948:7;30957;30966;30975;30984;30993;31014:23;31039:12;31053:18;31075:20;31087:7;31075:11;:20::i;:::-;31013:82;;;;;;31107:15;31124:23;31149:12;31165:50;31177:7;31186:4;31192:10;31204;:8;:10::i;:::-;31165:11;:50::i;:::-;31106:109;;;;-1:-1:-1;31106:109:0;;-1:-1:-1;31266:15:0;;-1:-1:-1;31283:4:0;;-1:-1:-1;31289:10:0;;-1:-1:-1;30889:419:0;;-1:-1:-1;;;;;30889:419:0:o;1376:136::-;1434:7;1461:43;1465:1;1468;1461:43;;;;;;;;;;;;;;;;;:3;:43::i;33546:394::-;33592:7;;:12;:34;;;;-1:-1:-1;33608:13:0;;:18;33592:34;33589:46;;;33546:394::o;33589:46::-;33673:7;;;33655:15;:25;33715:13;;;33691:21;:37;33760:10;;;33739:18;:31;33804:12;;;33781:20;:35;33847:2;33837:12;;;33876:2;33860:18;;;;33902:2;33889:15;;33915:17;;33546:394::o;2120:278::-;2206:7;2241:12;2234:5;2226:28;;;;-1:-1:-1;;;2226:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2265:9:0;2277:5;2281:1;2277;:5;:::i;25200:545::-;17323:16;:23;;-1:-1:-1;;17323:23:0;17342:4;17323:23;;;25315:21:::1;25347:38;25364:20:::0;25347:16:::1;:38::i;:::-;25396:26;25425:41;:21;25451:14:::0;25425:25:::1;:41::i;:::-;25547:10;::::0;25601:6:::1;::::0;25582:13:::1;::::0;25396:70;;-1:-1:-1;25526:83:0::1;::::0;-1:-1:-1;;;;;25547:10:0;;::::1;::::0;25559:49:::1;::::0;25601:6;25559:37:::1;::::0;25396:70;;25559:22:::1;:37::i;:::-;:41:::0;::::1;:49::i;:::-;25526:20;:83::i;:::-;25641:16;::::0;25718:6:::1;::::0;25701:12:::1;::::0;25620:107:::1;::::0;-1:-1:-1;;;;;25641:16:0::1;::::0;25659:67:::1;::::0;25701:24:::1;::::0;:16:::1;:24::i;:::-;25682:13;::::0;25659:37:::1;::::0;:18;;:22:::1;:37::i;25620:107::-;-1:-1:-1::0;;17369:16:0;:24;;-1:-1:-1;;17369:24:0;;;-1:-1:-1;25200:545:0:o;25759:135::-;17323:16;:23;;-1:-1:-1;;17323:23:0;17342:4;17323:23;;;25830:10;;25826:61:::1;;25854:24;25871:6;25854:16;:24::i;:::-;-1:-1:-1::0;17369:16:0;:24;;-1:-1:-1;;17369:24:0;;;25759:135::o;27703:704::-;27814:7;27810:40;;27836:14;:12;:14::i;:::-;-1:-1:-1;;;;;27875:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;27899:22:0;;;;;;:11;:22;;;;;;;;27898:23;27875:46;27871:467;;;27938:48;27960:6;27968:9;27979:6;27938:21;:48::i;:::-;27871:467;;;-1:-1:-1;;;;;28009:19:0;;;;;;:11;:19;;;;;;;;28008:20;:46;;;;-1:-1:-1;;;;;;28032:22:0;;;;;;:11;:22;;;;;;;;28008:46;28004:334;;;28071:46;28091:6;28099:9;28110:6;28071:19;:46::i;28004:334::-;-1:-1:-1;;;;;28139:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;28162:22:0;;;;;;:11;:22;;;;;;;;28139:45;28135:203;;;28201:48;28223:6;28231:9;28242:6;28201:21;:48::i;28135:203::-;28282:44;28300:6;28308:9;28319:6;28282:17;:44::i;:::-;28362:7;28358:41;;28384:15;34006;;33996:7;:25;34048:21;;34032:13;:37;34093:18;;34080:10;:31;34137:20;;34122:12;:35;33952:213;32262:561;32359:7;;32395;;32312;;;;;32419:289;32443:9;:16;32439:20;;32419:289;;;32509:7;32485;:21;32493:9;32503:1;32493:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32493:12:0;32485:21;;;;;;;;;;;;;:31;;:66;;;32544:7;32520;:21;32528:9;32538:1;32528:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32528:12:0;32520:21;;;;;;;;;;;;;:31;32485:66;32481:97;;;32561:7;;32570;;32553:25;;;;;;;32262:561;;:::o;32481:97::-;32603:34;32615:7;:21;32623:9;32633:1;32623:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32623:12:0;32615:21;;;;;;;;;;;;;32603:7;;:11;:34::i;:::-;32593:44;;32662:34;32674:7;:21;32682:9;32692:1;32682:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32682:12:0;32674:21;;;;;;;;;;;;;32662:7;;:11;:34::i;:::-;32652:44;-1:-1:-1;32461:3:0;;;;:::i;:::-;;;;32419:289;;;-1:-1:-1;32744:7:0;;32732;;:20;;:11;:20::i;:::-;32722:7;:30;32718:61;;;32762:7;;32771;;32754:25;;;;;;32262:561;;:::o;32718:61::-;32798:7;;32807;;-1:-1:-1;32262:561:0;-1:-1:-1;32262:561:0:o;31316:330::-;31376:7;31385;31394;31414:12;31429:24;31445:7;31429:15;:24::i;:::-;31414:39;;31464:18;31485:30;31507:7;31485:21;:30::i;:::-;31464:51;-1:-1:-1;31526:23:0;31552:33;31464:51;31552:17;:7;31564:4;31552:11;:17::i;:::-;:21;;:33::i;:::-;31526:59;31621:4;;-1:-1:-1;31627:10:0;;-1:-1:-1;31316:330:0;;-1:-1:-1;;;31316:330:0:o;31654:429::-;31769:7;;;;31825:24;:7;31837:11;31825;:24::i;:::-;31807:42;-1:-1:-1;31860:12:0;31875:21;:4;31884:11;31875:8;:21::i;:::-;31860:36;-1:-1:-1;31907:18:0;31928:27;:10;31943:11;31928:14;:27::i;:::-;31907:48;-1:-1:-1;31966:23:0;31992:33;31907:48;31992:17;:7;32004:4;31992:11;:17::i;:33::-;32044:7;;;;-1:-1:-1;32070:4:0;;-1:-1:-1;31654:429:0;;-1:-1:-1;;;;;;;31654:429:0:o;25906:666::-;26056:16;;;26070:1;26056:16;;;;;;;;26032:21;;26056:16;;;;;;;;;;-1:-1:-1;26056:16:0;26032:40;;26101:4;26083;26088:1;26083:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26083:23:0;;;-1:-1:-1;;;;;26083:23:0;;;;;26127:15;-1:-1:-1;;;;;26127:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26117:4;26122:1;26117:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;26117:32:0;;;-1:-1:-1;;;;;26117:32:0;;;;;26162:62;26179:4;26194:15;26212:11;26162:8;:62::i;:::-;26263:240;;-1:-1:-1;;;26263:240:0;;-1:-1:-1;;;;;26263:15:0;:66;;;;:240;;26344:11;;26370:1;;26414:4;;26441;;26477:15;;26263:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26529:35;26546:11;26559:4;26529:35;;;;;;;:::i;:::-;;;;;;;;25961:611;25906:666;:::o;37964:126::-;38056:26;;-1:-1:-1;;;;;38056:18:0;;;:26;;;;;38075:6;;38056:26;;;;38075:6;38056:18;:26;;;;;;;;;;;;;;;;;;;26584:578;26729:16;;;26743:1;26729:16;;;;;;;;26705:21;;26729:16;;;;;;;;;;-1:-1:-1;26729:16:0;26705:40;;26766:15;-1:-1:-1;;;;;26766:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26756:4;26761:1;26756:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;26756:32:0;;;-1:-1:-1;;;;;26756:32:0;;;;;26817:4;26799;26804:1;26799:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26799:23:0;;;:7;;;;;;;;;:23;26859:15;:66;;26933:6;26955:1;27002:4;27021:11;27063:24;:15;27083:3;27063:19;:24::i;:::-;26859:239;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27124:30;27141:6;27149:4;27124:30;;;;;;;:::i;29516:563::-;29619:15;29636:23;29661:12;29675:23;29700:12;29714:18;29736:19;29747:7;29736:10;:19::i;:::-;-1:-1:-1;;;;;29781:15:0;;;;;;:7;:15;;;;;;29618:137;;-1:-1:-1;29618:137:0;;-1:-1:-1;29618:137:0;;-1:-1:-1;29618:137:0;-1:-1:-1;29618:137:0;-1:-1:-1;29618:137:0;-1:-1:-1;29781:28:0;;29801:7;29781:19;:28::i;:::-;-1:-1:-1;;;;;29763:15:0;;;;;;:7;:15;;;;;;;;:46;;;;29838:7;:15;;;;:28;;29858:7;29838:19;:28::i;:::-;-1:-1:-1;;;;;29820:15:0;;;;;;;:7;:15;;;;;;:46;;;;29898:18;;;;;;;:39;;29921:15;29898:22;:39::i;:::-;-1:-1:-1;;;;;29877:18:0;;;;;;:7;:18;;;;;:60;29951:26;29966:10;29951:14;:26::i;:::-;29988:23;30000:4;30006;29988:11;:23::i;:::-;30044:9;-1:-1:-1;;;;;30027:44:0;30036:6;-1:-1:-1;;;;;30027:44:0;;30055:15;30027:44;;;;15717:25:1;;15705:2;15690:18;;15672:76;30027:44:0;;;;;;;;29607:472;;;;;;29516:563;;;:::o;28925:583::-;29026:15;29043:23;29068:12;29082:23;29107:12;29121:18;29143:19;29154:7;29143:10;:19::i;:::-;-1:-1:-1;;;;;29188:15:0;;;;;;:7;:15;;;;;;29025:137;;-1:-1:-1;29025:137:0;;-1:-1:-1;29025:137:0;;-1:-1:-1;29025:137:0;-1:-1:-1;29025:137:0;-1:-1:-1;29025:137:0;-1:-1:-1;29188:28:0;;29025:137;29188:19;:28::i;:::-;-1:-1:-1;;;;;29170:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;29248:18;;;;;:7;:18;;;;;:39;;29271:15;29248:22;:39::i;:::-;-1:-1:-1;;;;;29227:18:0;;;;;;:7;:18;;;;;;;;:60;;;;29319:7;:18;;;;:39;;29342:15;29319:22;:39::i;30087:639::-;30190:15;30207:23;30232:12;30246:23;30271:12;30285:18;30307:19;30318:7;30307:10;:19::i;:::-;-1:-1:-1;;;;;30352:15:0;;;;;;:7;:15;;;;;;30189:137;;-1:-1:-1;30189:137:0;;-1:-1:-1;30189:137:0;;-1:-1:-1;30189:137:0;-1:-1:-1;30189:137:0;-1:-1:-1;30189:137:0;-1:-1:-1;30352:28:0;;30372:7;30352:19;:28::i;:::-;-1:-1:-1;;;;;30334:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30409:7;:15;;;;:28;;30429:7;30409:19;:28::i;28415:502::-;28514:15;28531:23;28556:12;28570:23;28595:12;28609:18;28631:19;28642:7;28631:10;:19::i;:::-;-1:-1:-1;;;;;28679:15:0;;;;;;:7;:15;;;;;;28513:137;;-1:-1:-1;28513:137:0;;-1:-1:-1;28513:137:0;;-1:-1:-1;28513:137:0;-1:-1:-1;28513:137:0;-1:-1:-1;28513:137:0;-1:-1:-1;28679:28:0;;28513:137;28679:19;:28::i;33202:154::-;33266:7;33293:55;33332:5;33293:20;33305:7;;33293;:11;;:20;;;;:::i;:::-;:24;;:55::i;33368:166::-;33438:7;33465:61;33510:5;33465:26;33477:13;;33465:7;:11;;:26;;;;:::i;32835:355::-;32898:19;32921:10;:8;:10::i;:::-;32898:33;-1:-1:-1;32942:18:0;32963:27;:10;32898:33;32963:14;:27::i;:::-;33042:4;33026:22;;;;:7;:22;;;;;;32942:48;;-1:-1:-1;33026:38:0;;32942:48;33026:26;:38::i;:::-;33017:4;33001:22;;;;:7;:22;;;;;;;;:63;;;;33078:11;:26;;;;;;33075:107;;;33160:4;33144:22;;;;:7;:22;;;;;;:38;;33171:10;33144:26;:38::i;:::-;33135:4;33119:22;;;;:7;:22;;;;;:63;32887:303;;32835:355;:::o;30734:147::-;30812:7;;:17;;30824:4;30812:11;:17::i;:::-;30802:7;:27;30853:10;;:20;;30868:4;30853:14;:20::i;:::-;30840:10;:33;-1:-1:-1;;30734:147:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:2;;;667:1;664;657:12;619:2;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;609:301;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:2;;;1077:1;1074;1067:12;1029:2;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;1019:352;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;1019:352::o;1376:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:2;;;1521:1;1518;1511:12;1473:2;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1463:228:1:o;1696:241::-;1752:6;1805:2;1793:9;1784:7;1780:23;1776:32;1773:2;;;1821:1;1818;1811:12;1773:2;1860:9;1847:23;1879:28;1901:5;1879:28;:::i;1942:245::-;2009:6;2062:2;2050:9;2041:7;2037:23;2033:32;2030:2;;;2078:1;2075;2068:12;2030:2;2110:9;2104:16;2129:28;2151:5;2129:28;:::i;2192:180::-;2251:6;2304:2;2292:9;2283:7;2279:23;2275:32;2272:2;;;2320:1;2317;2310:12;2272:2;-1:-1:-1;2343:23:1;;2262:110;-1:-1:-1;2262:110:1:o;2377:184::-;2447:6;2500:2;2488:9;2479:7;2475:23;2471:32;2468:2;;;2516:1;2513;2506:12;2468:2;-1:-1:-1;2539:16:1;;2458:103;-1:-1:-1;2458:103:1:o;2566:309::-;2631:6;2639;2692:2;2680:9;2671:7;2667:23;2663:32;2660:2;;;2708:1;2705;2698:12;2660:2;2744:9;2731:23;2721:33;;2804:2;2793:9;2789:18;2776:32;2817:28;2839:5;2817:28;:::i;2880:316::-;2957:6;2965;2973;3026:2;3014:9;3005:7;3001:23;2997:32;2994:2;;;3042:1;3039;3032:12;2994:2;-1:-1:-1;;3065:23:1;;;3135:2;3120:18;;3107:32;;-1:-1:-1;3186:2:1;3171:18;;;3158:32;;2984:212;-1:-1:-1;2984:212:1:o;3201:461::-;3254:3;3292:5;3286:12;3319:6;3314:3;3307:19;3345:4;3374:2;3369:3;3365:12;3358:19;;3411:2;3404:5;3400:14;3432:1;3442:195;3456:6;3453:1;3450:13;3442:195;;;3521:13;;-1:-1:-1;;;;;3517:39:1;3505:52;;3577:12;;;;3612:15;;;;3553:1;3471:9;3442:195;;;-1:-1:-1;3653:3:1;;3262:400;-1:-1:-1;;;;;3262:400:1:o;4805:510::-;5076:6;5065:9;5058:25;5119:3;5114:2;5103:9;5099:18;5092:31;5039:4;5140:57;5192:3;5181:9;5177:19;5169:6;5140:57;:::i;:::-;-1:-1:-1;;;;;5233:32:1;;;;5228:2;5213:18;;5206:60;-1:-1:-1;5297:2:1;5282:18;5275:34;5132:65;5048:267;-1:-1:-1;;5048:267:1:o;5320:597::-;5432:4;5461:2;5490;5479:9;5472:21;5522:6;5516:13;5565:6;5560:2;5549:9;5545:18;5538:34;5590:1;5600:140;5614:6;5611:1;5608:13;5600:140;;;5709:14;;;5705:23;;5699:30;5675:17;;;5694:2;5671:26;5664:66;5629:10;;5600:140;;;5758:6;5755:1;5752:13;5749:2;;;5828:1;5823:2;5814:6;5803:9;5799:22;5795:31;5788:42;5749:2;-1:-1:-1;5901:2:1;5880:15;-1:-1:-1;;5876:29:1;5861:45;;;;5908:2;5857:54;;5441:476;-1:-1:-1;;;5441:476:1:o;8657:408::-;8859:2;8841:21;;;8898:2;8878:18;;;8871:30;8937:34;8932:2;8917:18;;8910:62;-1:-1:-1;;;9003:2:1;8988:18;;8981:42;9055:3;9040:19;;8831:234::o;12131:356::-;12333:2;12315:21;;;12352:18;;;12345:30;12411:34;12406:2;12391:18;;12384:62;12478:2;12463:18;;12305:182::o;15753:332::-;15960:6;15949:9;15942:25;16003:2;15998;15987:9;15983:18;15976:30;15923:4;16023:56;16075:2;16064:9;16060:18;16052:6;16023:56;:::i;:::-;16015:64;15932:153;-1:-1:-1;;;;15932:153:1:o;16090:582::-;16389:6;16378:9;16371:25;16432:6;16427:2;16416:9;16412:18;16405:34;16475:3;16470:2;16459:9;16455:18;16448:31;16352:4;16496:57;16548:3;16537:9;16533:19;16525:6;16496:57;:::i;:::-;-1:-1:-1;;;;;16589:32:1;;;;16584:2;16569:18;;16562:60;-1:-1:-1;16653:3:1;16638:19;16631:35;16488:65;16361:311;-1:-1:-1;;;16361:311:1:o;16866:128::-;16906:3;16937:1;16933:6;16930:1;16927:13;16924:2;;;16943:18;;:::i;:::-;-1:-1:-1;16979:9:1;;16914:80::o;16999:217::-;17039:1;17065;17055:2;;17109:10;17104:3;17100:20;17097:1;17090:31;17144:4;17141:1;17134:15;17172:4;17169:1;17162:15;17055:2;-1:-1:-1;17201:9:1;;17045:171::o;17221:168::-;17261:7;17327:1;17323;17319:6;17315:14;17312:1;17309:21;17304:1;17297:9;17290:17;17286:45;17283:2;;;17334:18;;:::i;:::-;-1:-1:-1;17374:9:1;;17273:116::o;17394:125::-;17434:4;17462:1;17459;17456:8;17453:2;;;17467:18;;:::i;:::-;-1:-1:-1;17504:9:1;;17443:76::o;17524:380::-;17603:1;17599:12;;;;17646;;;17667:2;;17721:4;17713:6;17709:17;17699:27;;17667:2;17774;17766:6;17763:14;17743:18;17740:38;17737:2;;;17820:10;17815:3;17811:20;17808:1;17801:31;17855:4;17852:1;17845:15;17883:4;17880:1;17873:15;17737:2;;17579:325;;;:::o;17909:135::-;17948:3;-1:-1:-1;;17969:17:1;;17966:2;;;17989:18;;:::i;:::-;-1:-1:-1;18036:1:1;18025:13;;17956:88::o;18049:127::-;18110:10;18105:3;18101:20;18098:1;18091:31;18141:4;18138:1;18131:15;18165:4;18162:1;18155:15;18181:127;18242:10;18237:3;18233:20;18230:1;18223:31;18273:4;18270:1;18263:15;18297:4;18294:1;18287:15;18313:127;18374:10;18369:3;18365:20;18362:1;18355:31;18405:4;18402:1;18395:15;18429:4;18426:1;18419:15;18577:131;-1:-1:-1;;;;;18652:31:1;;18642:42;;18632:2;;18698:1;18695;18688:12;18713:118;18799:5;18792:13;18785:21;18778:5;18775:32;18765:2;;18821:1;18818;18811:12
Swarm Source
ipfs://1588a974407fe6fdaebf0871438550ab74d183d89507868ba5b69fc64196ed5d
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.