ERC-20
Overview
Max Total Supply
900,000,000,000 Omoikane
Holders
14
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
6,904,531,365.661613831 OmoikaneValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Omoikane
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-17 */ pragma solidity ^0.8.1; // SPDX-License-Identifier: Unlicensed 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; 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; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; 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 geUnlockTime() public view returns (uint256) { return _lockTime; } 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 Mint(address indexed sender, uint amount0, uint amount1); 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 mint(address to) external returns (uint liquidity); 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 Omoikane is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address deadAddress = 0x000000000000000000000000000000000000dEaD; string private _name = "Omoikane"; string private _symbol = "Omoikane"; uint8 private _decimals = 9; uint256 private initialsupply = 900_000_000_000; uint256 private _tTotal = initialsupply * 10 ** _decimals; address payable private _marketingWallet; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping(address => uint256) private buycooldown; mapping(address => uint256) private sellcooldown; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; mapping (address => bool) private _isBlacklisted; address[] private _excluded; bool private cooldownEnabled = true; uint256 public cooldown = 30 seconds; uint256 public cooldownLimit = 60 seconds; uint256 private constant MAX = ~uint256(0); uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 4; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _marketingFee = 0; uint256 private _previousMarketingFee = _marketingFee; uint256 public _buyTaxFee = 0; uint256 private _previousBuyTaxFee = _buyTaxFee; uint256 public _buyLiquidityFee = 4; uint256 private _previousBuyLiquidityFee = _buyLiquidityFee; uint256 public _buyMarketingFee = 0; uint256 private _previousBuyMarketingFee = _buyMarketingFee; uint256 private maxBuyPercent = 1; uint256 private maxBuyDivisor = 100; uint256 public _maxBuyAmount = (_tTotal * maxBuyPercent) / maxBuyDivisor; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool private swapAndLiquifyEnabled = true; uint256 private numTokensSellToAddToLiquidity = _tTotal.mul(5).div(1000); event ToMarketing(uint256 ETHSent); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (address marketingWallet) { _rOwned[_msgSender()] = _rTotal; _marketingWallet = payable(marketingWallet); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingWallet] = 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 allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];} function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function setNumTokensSellToAddToLiquidity(uint256 percent, uint256 divisor) external onlyOwner() { uint256 swapAmount = _tTotal.mul(percent).div(divisor); numTokensSellToAddToLiquidity = swapAmount; } function setSellFee(uint256 liquidityFee, uint256 marketingFee) external onlyOwner() { _liquidityFee = liquidityFee; _marketingFee = marketingFee; } function setBuyFee(uint256 marketingFee, uint256 liquidityFee) external onlyOwner() { _buyMarketingFee = marketingFee; _buyLiquidityFee = liquidityFee; } function setCooldown(uint256 amount) external onlyOwner() { require(amount <= cooldownLimit); cooldown = amount; } function setMaxBuyPercent(uint256 percent, uint divisor) external onlyOwner { require(percent >= 1 && divisor <= 1000); // cannot set lower than .1% uint256 new_tx = _tTotal.mul(percent).div(divisor); _maxBuyAmount = new_tx; } 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 setBlacklistStatus(address account, bool Blacklisted) external onlyOwner { if (Blacklisted = true) { _isBlacklisted[account] = true; } else if(Blacklisted = false) { _isBlacklisted[account] = false; } } 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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function excludeFromReward(address account) public onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); 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 excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function isBlacklisted(address account) public view returns(bool) { return _isBlacklisted[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to receive ETH from uniswapV2Router when swapping receive() external payable {} 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) { (uint256 tTransferAmount, uint256 tFee, uint256 tMarketing, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tMarketing, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketing, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = tAmount.mul(_taxFee).div(100); uint256 tMarketing = tAmount.mul(_marketingFee).div(100); uint256 tLiquidity = tAmount.mul(_liquidityFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tMarketing).sub(tLiquidity); return (tTransferAmount, tFee, tMarketing, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rMarketing = tMarketing.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rMarketing); return (rAmount, rTransferAmount, rFee); } function _getValuesBuy(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValuesBuy(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValuesBuy(tAmount, tFee, tLiquidity, tMarketing, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tMarketing); } function _getTValuesBuy(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = tAmount.mul(_buyTaxFee).div(100); uint256 tLiquidity = tAmount.mul(_buyLiquidityFee).div(100); uint256 tMarketing = tAmount.mul(_buyMarketingFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tMarketing); return (tTransferAmount, tFee, tMarketing, tLiquidity); } function _getRValuesBuy(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rMarketing = tMarketing.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rMarketing); 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 _takeMarketing(uint256 tMarketing) private { uint256 currentRate = _getRate(); uint256 rMarketing = tMarketing.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rMarketing); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tMarketing); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0 && _buyMarketingFee == 0 && _buyTaxFee == 0 && _buyLiquidityFee == 0) return; _previousTaxFee = _taxFee; _previousMarketingFee = _marketingFee; _previousLiquidityFee = _liquidityFee; _previousBuyTaxFee = _buyTaxFee; _previousBuyMarketingFee = _buyMarketingFee; _previousBuyLiquidityFee = _buyLiquidityFee; _buyTaxFee = 0; _buyMarketingFee = 0; _buyLiquidityFee = 0; _taxFee = 0; _marketingFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _marketingFee = _previousMarketingFee; _liquidityFee = _previousLiquidityFee; _buyLiquidityFee = _previousBuyLiquidityFee; _buyMarketingFee = _previousBuyMarketingFee; _buyTaxFee = _previousBuyTaxFee; } 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 swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 marketingTokenBalance = contractTokenBalance.mul(85).div(100); uint256 liquidityTokenBalance = contractTokenBalance.sub(marketingTokenBalance); uint256 tokenBalanceToLiquifyAsETH = liquidityTokenBalance.div(2); uint256 tokenBalanceToLiquify = liquidityTokenBalance.sub(tokenBalanceToLiquifyAsETH); uint256 initialBalance = address(this).balance; uint256 tokensToSwapToETH = tokenBalanceToLiquifyAsETH.add(marketingTokenBalance); swapTokensForEth(tokensToSwapToETH); uint256 ETHSwapped = address(this).balance.sub(initialBalance); uint256 ETHToLiquify = ETHSwapped.mul(10).div(100); addLiquidity(tokenBalanceToLiquify, ETHToLiquify); emit SwapAndLiquify(tokenBalanceToLiquifyAsETH, ETHToLiquify, tokenBalanceToLiquify); uint256 marketingETH = ETHSwapped.sub(ETHToLiquify); _marketingWallet.transfer(marketingETH); emit ToMarketing(marketingETH); } function clearStuckBalance(uint256 amountPercentage) external onlyOwner { require(amountPercentage <= 100); uint256 amountETH = address(this).balance; payable(_marketingWallet).transfer(amountETH.mul(amountPercentage).div(100)); } function clearStuckToken(address to) external onlyOwner { uint256 _balance = balanceOf(address(this)); _transfer(address(this), to, _balance); } function clearStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent){ require(_token != address(0)); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); } 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), block.timestamp ); } 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 owner(), block.timestamp ); } 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 _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"); require(_isBlacklisted[from] == false, "Hehe"); require(_isBlacklisted[to] == false, "Hehe"); if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) { require(amount <= _maxBuyAmount); require(buycooldown[to] < block.timestamp); buycooldown[to] = block.timestamp.add(cooldown); } else if(from != uniswapV2Pair && cooldownEnabled && !_isExcludedFromFee[to]) { require(sellcooldown[from] <= block.timestamp); sellcooldown[from] = block.timestamp.add(cooldown); } uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= numTokensSellToAddToLiquidity) { contractTokenBalance = numTokensSellToAddToLiquidity; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, marketing, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (sender == uniswapV2Pair && recipient != address(uniswapV2Router)) { _transferStandardBuy(sender, recipient, amount); } else 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]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandardBuy(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing, uint256 tLiquidity) = _getValuesBuy(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeMarketing(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeMarketing(tMarketing); _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, uint256 tMarketing) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeMarketing(tMarketing); _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, uint256 tMarketing) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeMarketing(tMarketing); _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, uint256 tMarketing) = _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); _takeMarketing(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function cooldownStatus() public view returns (bool) { return cooldownEnabled; } function setCooldownEnabled(bool onoff) external onlyOwner() { cooldownEnabled = onoff; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"marketingWallet","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"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":"ETHSent","type":"uint256"}],"name":"ToMarketing","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":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBuyAmount","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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"clearStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"geUnlockTime","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"Blacklisted","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxBuyPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600380546001600160a01b03191661dead179055610100604052600860c0819052674f6d6f696b616e6560c01b60e0908152620000409160049190620005d6565b50604080518082019091526008808252674f6d6f696b616e6560c01b60209092019182526200007291600591620005d6565b506006805460ff1916600990811790915564d18c2e28006007556200009990600a6200075f565b600754620000a891906200081e565b60088190556013805460ff19166001179055601e601455603c601555620000d29060001962000897565b620000e09060001962000840565b60165560006018556018546019556004601a55601a54601b556000601c55601c54601d556000601e55601e54601f5560046020556020546021556000602255602254602355600160245560646025556025546024546008546200014491906200081e565b620001509190620006ff565b6026556027805461010061ff00199091161790556008546200019d906103e89062000189906005620004bc602090811b620018ff17901c565b6200055060201b6200197e1790919060201c565b602855348015620001ad57600080fd5b5060405162003d9d38038062003d9d833981016040819052620001d0916200067c565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654336000908152600a602090815260409182902092909255600980546001600160a01b0319166001600160a01b038516179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200028e57600080fd5b505afa158015620002a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c991906200067c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031257600080fd5b505afa15801562000327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034d91906200067c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200039657600080fd5b505af1158015620003ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d191906200067c565b6001600160601b0319606091821b811660a0529082901b166080526001600f6000620004056000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600f909352818320805485166001908117909155600954909116835291208054909216179055620004643390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620004ac91815260200190565b60405180910390a35050620008da565b600082620004cd575060006200054a565b6000620004db83856200081e565b905082620004ea8583620006ff565b14620005475760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200054783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200059a60201b60201c565b60008183620005be5760405162461bcd60e51b81526004016200053e9190620006a7565b506000620005cd8486620006ff565b95945050505050565b828054620005e4906200085a565b90600052602060002090601f01602090048101928262000608576000855562000653565b82601f106200062357805160ff191683800117855562000653565b8280016001018555821562000653579182015b828111156200065357825182559160200191906001019062000636565b506200066192915062000665565b5090565b5b8082111562000661576000815560010162000666565b6000602082840312156200068f57600080fd5b81516001600160a01b03811681146200054757600080fd5b600060208083528351808285015260005b81811015620006d657858101830151858201604001528201620006b8565b81811115620006e9576000604083870101525b50601f01601f1916929092016040019392505050565b600082620007115762000711620008c4565b500490565b600181815b80851115620007575781600019048211156200073b576200073b620008ae565b808516156200074957918102915b93841c93908002906200071b565b509250929050565b60006200054760ff8416836000826200077b575060016200054a565b816200078a575060006200054a565b8160018114620007a35760028114620007ae57620007ce565b60019150506200054a565b60ff841115620007c257620007c2620008ae565b50506001821b6200054a565b5060208310610133831016604e8410600b8410161715620007f3575081810a6200054a565b620007ff838362000716565b8060001904821115620008165762000816620008ae565b029392505050565b60008160001904831182151516156200083b576200083b620008ae565b500290565b600082821015620008555762000855620008ae565b500390565b600181811c908216806200086f57607f821691505b602082108114156200089157634e487b7160e01b600052602260045260246000fd5b50919050565b600082620008a957620008a9620008c4565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60805160601c60a05160601c61344a620009536000396000818161057d01528181611cb201528181611dbc01528181611eb001526122620152600081816103b801528181611cee0152818161229e0152818161272e015281816127f601528181612832015281816128a401526128cb015261344a6000f3fe6080604052600436106102e85760003560e01c80636ac9a87011610190578063a9059cbb116100dc578063dd46706411610095578063efcc52de1161006f578063efcc52de146108f9578063f2fde38b1461090f578063fb0ecfa41461092f578063fe575a871461094f57600080fd5b8063dd46706414610873578063dd62ed3e14610893578063ea2f0b37146108d957600080fd5b8063a9059cbb146107d2578063b6c52324146107f2578063c40fedc614610807578063c49b9a8014610827578063c5d2418914610847578063dc44b6a01461085d57600080fd5b806388f820201161014957806395d89b411161012357806395d89b41146107685780639be953b31461077d578063a457c2d71461079d578063a69df4b5146107bd57600080fd5b806388f82020146106f15780638da5cb5b1461072a5780638fcc250d1461074857600080fd5b80636ac9a870146106585780636bc87c3a1461067857806370a082311461068e578063715018a6146106ae578063787a08a6146106c3578063809157c5146106d957600080fd5b80633685d4191161024f57806347f2914c116102085780634fc3f41a116101e25780634fc3f41a146105bf57806352390c02146105df5780635342acb4146105ff5780635932ead11461063857600080fd5b806347f2914c1461055557806349bd5a5e1461056b5780634f6625661461059f57600080fd5b80633685d4191461049f57806339509351146104bf5780633b124fe7146104df5780633bd5d173146104f5578063437823ec146105155780634549b0391461053557600080fd5b806318160ddd116102a157806318160ddd146103f25780631da1db5e1461040757806322976e0d1461042757806323b872dd1461043d5780632d8381191461045d578063313ce5671461047d57600080fd5b806303d29d28146102f45780630492f0551461031657806306fdde031461033f578063095ea7b31461036157806313114a9d146103915780631694505e146103a657600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004613043565b610988565b005b34801561032257600080fd5b5061032c60265481565b6040519081526020015b60405180910390f35b34801561034b57600080fd5b506103546109e6565b604051610336919061317e565b34801561036d57600080fd5b5061038161037c366004613071565b610a78565b6040519015158152602001610336565b34801561039d57600080fd5b5060175461032c565b3480156103b257600080fd5b506103da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610336565b3480156103fe57600080fd5b5060085461032c565b34801561041357600080fd5b506103146104223660046130d7565b610a8f565b34801561043357600080fd5b5061032c601c5481565b34801561044957600080fd5b50610381610458366004613002565b610b1a565b34801561046957600080fd5b5061032c6104783660046130d7565b610b83565b34801561048957600080fd5b5060065460405160ff9091168152602001610336565b3480156104ab57600080fd5b506103146104ba366004612f8f565b610c07565b3480156104cb57600080fd5b506103816104da366004613071565b610dba565b3480156104eb57600080fd5b5061032c60185481565b34801561050157600080fd5b506103146105103660046130d7565b610df0565b34801561052157600080fd5b50610314610530366004612f8f565b610edc565b34801561054157600080fd5b5061032c610550366004613109565b610f2a565b34801561056157600080fd5b5061032c60155481565b34801561057757600080fd5b506103da7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ab57600080fd5b506103146105ba36600461312e565b610fb9565b3480156105cb57600080fd5b506103146105da3660046130d7565b611022565b3480156105eb57600080fd5b506103146105fa366004612f8f565b611060565b34801561060b57600080fd5b5061038161061a366004612f8f565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561064457600080fd5b5061031461065336600461309d565b61122b565b34801561066457600080fd5b5061031461067336600461312e565b611268565b34801561068457600080fd5b5061032c601a5481565b34801561069a57600080fd5b5061032c6106a9366004612f8f565b61129d565b3480156106ba57600080fd5b506103146112fc565b3480156106cf57600080fd5b5061032c60145481565b3480156106e557600080fd5b5060135460ff16610381565b3480156106fd57600080fd5b5061038161070c366004612f8f565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561073657600080fd5b506000546001600160a01b03166103da565b34801561075457600080fd5b5061031461076336600461312e565b61135e565b34801561077457600080fd5b506103546113ab565b34801561078957600080fd5b50610314610798366004612f8f565b6113ba565b3480156107a957600080fd5b506103816107b8366004613071565b6113fc565b3480156107c957600080fd5b5061031461144b565b3480156107de57600080fd5b506103816107ed366004613071565b611551565b3480156107fe57600080fd5b5060025461032c565b34801561081357600080fd5b50610381610822366004612fc9565b61155e565b34801561083357600080fd5b5061031461084236600461309d565b6116a4565b34801561085357600080fd5b5061032c60225481565b34801561086957600080fd5b5061032c60205481565b34801561087f57600080fd5b5061031461088e3660046130d7565b611722565b34801561089f57600080fd5b5061032c6108ae366004612fc9565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156108e557600080fd5b506103146108f4366004612f8f565b6117a7565b34801561090557600080fd5b5061032c601e5481565b34801561091b57600080fd5b5061031461092a366004612f8f565b6117f2565b34801561093b57600080fd5b5061031461094a36600461312e565b6118ca565b34801561095b57600080fd5b5061038161096a366004612f8f565b6001600160a01b031660009081526011602052604090205460ff1690565b6000546001600160a01b031633146109bb5760405162461bcd60e51b81526004016109b2906131d3565b60405180910390fd5b5060016001600160a01b0382166000908152601160205260409020805460ff191660011790555b5050565b6060600480546109f5906132e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a21906132e9565b8015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b5050505050905090565b6000610a853384846119c0565b5060015b92915050565b6000546001600160a01b03163314610ab95760405162461bcd60e51b81526004016109b2906131d3565b6064811115610ac757600080fd5b60095447906001600160a01b03166108fc610aed6064610ae785876118ff565b9061197e565b6040518115909202916000818181858888f19350505050158015610b15573d6000803e3d6000fd5b505050565b6000610b27848484611ae4565b610b798433610b74856040518060600160405280602881526020016133a8602891396001600160a01b038a166000908152600e602090815260408083203384529091529020549190611f6a565b6119c0565b5060019392505050565b6000601654821115610bea5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109b2565b6000610bf4611fa4565b9050610c00838261197e565b9392505050565b6000546001600160a01b03163314610c315760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03811660009081526010602052604090205460ff16610c995760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b2565b60005b6012548110156109e257816001600160a01b031660128281548110610cc357610cc361336b565b6000918252602090912001546001600160a01b03161415610da85760128054610cee906001906132d2565b81548110610cfe57610cfe61336b565b600091825260209091200154601280546001600160a01b039092169183908110610d2a57610d2a61336b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600b82526040808220829055601090925220805460ff191690556012805480610d8257610d82613355565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610db281613324565b915050610c9c565b336000818152600e602090815260408083206001600160a01b03871684529091528120549091610a85918590610b749086611fc7565b3360008181526010602052604090205460ff1615610e655760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109b2565b6000610e7083612026565b5050506001600160a01b0386166000908152600a6020526040902054939450610e9e93925084915050612081565b6001600160a01b0383166000908152600a6020526040902055601654610ec49082612081565b601655601754610ed49084611fc7565b601755505050565b6000546001600160a01b03163314610f065760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000600854831115610f7e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109b2565b81610f9e576000610f8e84612026565b50949650610a8995505050505050565b6000610fa984612026565b50939650610a8995505050505050565b6000546001600160a01b03163314610fe35760405162461bcd60e51b81526004016109b2906131d3565b60018210158015610ff657506103e88111155b610fff57600080fd5b600061101a82610ae7856008546118ff90919063ffffffff16565b602655505050565b6000546001600160a01b0316331461104c5760405162461bcd60e51b81526004016109b2906131d3565b60155481111561105b57600080fd5b601455565b6000546001600160a01b0316331461108a5760405162461bcd60e51b81526004016109b2906131d3565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156111025760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c75646520556e697377617020726f757465604482015261391760f11b60648201526084016109b2565b6001600160a01b03811660009081526010602052604090205460ff161561116b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b2565b6001600160a01b0381166000908152600a6020526040902054156111c5576001600160a01b0381166000908152600a60205260409020546111ab90610b83565b6001600160a01b0382166000908152600b60205260409020555b6001600160a01b03166000818152601060205260408120805460ff191660019081179091556012805491820181559091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319169091179055565b6000546001600160a01b031633146112555760405162461bcd60e51b81526004016109b2906131d3565b6013805460ff1916911515919091179055565b6000546001600160a01b031633146112925760405162461bcd60e51b81526004016109b2906131d3565b601a91909155601c55565b6001600160a01b03811660009081526010602052604081205460ff16156112da57506001600160a01b03166000908152600b602052604090205490565b6001600160a01b0382166000908152600a6020526040902054610a8990610b83565b6000546001600160a01b031633146113265760405162461bcd60e51b81526004016109b2906131d3565b600080546040516001600160a01b03909116906000805160206133d0833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113885760405162461bcd60e51b81526004016109b2906131d3565b60006113a382610ae7856008546118ff90919063ffffffff16565b602855505050565b6060600580546109f5906132e9565b6000546001600160a01b031633146113e45760405162461bcd60e51b81526004016109b2906131d3565b60006113ef3061129d565b90506109e2308383611ae4565b6000610a853384610b74856040518060600160405280602581526020016133f060259139336000908152600e602090815260408083206001600160a01b038d1684529091529020549190611f6a565b6001546001600160a01b031633146114b15760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109b2565b60025442116115025760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109b2565b600154600080546040516001600160a01b0393841693909116916000805160206133d083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a85338484611ae4565b600080546001600160a01b031633146115895760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03831661159c57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156115de57600080fd5b505afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161691906130f0565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561166457600080fd5b505af1158015611678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169c91906130ba565b949350505050565b6000546001600160a01b031633146116ce5760405162461bcd60e51b81526004016109b2906131d3565b602780548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061171790831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461174c5760405162461bcd60e51b81526004016109b2906131d3565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561177b8142613279565b600255600080546040516001600160a01b03909116906000805160206133d0833981519152908390a350565b6000546001600160a01b031633146117d15760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b0316331461181c5760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b0381166118815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b2565b600080546040516001600160a01b03808516939216916000805160206133d083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f45760405162461bcd60e51b81526004016109b2906131d3565b602291909155602055565b60008261190e57506000610a89565b600061191a83856132b3565b9050826119278583613291565b14610c005760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b2565b6000610c0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120c3565b6001600160a01b038316611a225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b2565b6001600160a01b038216611a835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b2565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b2565b6001600160a01b038216611baa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b2565b60008111611c0c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109b2565b6001600160a01b03831660009081526011602052604090205460ff1615611c5e5760405162461bcd60e51b81526004016109b2906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b03821660009081526011602052604090205460ff1615611cb05760405162461bcd60e51b81526004016109b2906020808252600490820152634865686560e01b604082015260600190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015611d2357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611d4857506001600160a01b0382166000908152600f602052604090205460ff16155b8015611d56575060135460ff165b15611dba57602654811115611d6a57600080fd5b6001600160a01b0382166000908152600c60205260409020544211611d8e57600080fd5b601454611d9c904290611fc7565b6001600160a01b0383166000908152600c6020526040902055611e75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614158015611dfe575060135460ff165b8015611e2357506001600160a01b0382166000908152600f602052604090205460ff16155b15611e75576001600160a01b0383166000908152600d6020526040902054421015611e4d57600080fd5b601454611e5b904290611fc7565b6001600160a01b0384166000908152600d60205260409020555b6000611e803061129d565b90506028548110611e9057506028545b60285481108015908190611ea7575060275460ff16155b8015611ee557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611ef85750602754610100900460ff165b15611f0b576028549150611f0b826120f1565b6001600160a01b0385166000908152600f602052604090205460019060ff1680611f4d57506001600160a01b0385166000908152600f602052604090205460ff165b15611f56575060005b611f6286868684612253565b505050505050565b60008184841115611f8e5760405162461bcd60e51b81526004016109b2919061317e565b506000611f9b84866132d2565b95945050505050565b6000806000611fb161246b565b9092509050611fc0828261197e565b9250505090565b600080611fd48385613279565b905083811015610c005760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b2565b60008060008060008060008060008060006120408c6125ed565b935093509350935060008060006120618f87878761205c611fa4565b612675565b919f509d509b509599509397509195509350505050919395979092949650565b6000610c0083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f6a565b600081836120e45760405162461bcd60e51b81526004016109b2919061317e565b506000611f9b8486613291565b6027805460ff1916600117905560006121106064610ae78460556118ff565b9050600061211e8383612081565b9050600061212d82600261197e565b9050600061213b8383612081565b905047600061214a8487611fc7565b9050612155816126d7565b60006121614784612081565b905060006121756064610ae784600a6118ff565b9050612181858261289e565b60408051878152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a160006121ce8383612081565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612209573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a150506027805460ff191690555050505050505050565b80612260576122606129b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156122d357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156122e8576122e3848484612a3c565b612437565b6001600160a01b03841660009081526010602052604090205460ff16801561232957506001600160a01b03831660009081526010602052604090205460ff16155b15612339576122e3848484612b53565b6001600160a01b03841660009081526010602052604090205460ff1615801561237a57506001600160a01b03831660009081526010602052604090205460ff165b1561238a576122e3848484612c36565b6001600160a01b03841660009081526010602052604090205460ff161580156123cc57506001600160a01b03831660009081526010602052604090205460ff16155b156123dc576122e3848484612cf5565b6001600160a01b03841660009081526010602052604090205460ff16801561241c57506001600160a01b03831660009081526010602052604090205460ff165b1561242c576122e3848484612d4f565b612437848484612cf5565b8061246557612465601954601855601d54601c55601b54601a55602154602055602354602255601f54601e55565b50505050565b6016546008546000918291825b6012548110156125bd5782600a60006012848154811061249a5761249a61336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612505575081600b6000601284815481106124de576124de61336b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561251b57601654600854945094505050509091565b612561600a6000601284815481106125355761253561336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612081565b92506125a9600b60006012848154811061257d5761257d61336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612081565b9150806125b581613324565b915050612478565b506008546016546125cd9161197e565b8210156125e4576016546008549350935050509091565b90939092509050565b600080600080600061260f6064610ae7601854896118ff90919063ffffffff16565b9050600061262d6064610ae7601c548a6118ff90919063ffffffff16565b9050600061264b6064610ae7601a548b6118ff90919063ffffffff16565b905060006126658261265f85818d89612081565b90612081565b9993985091965094509092505050565b600080808061268489866118ff565b9050600061269289876118ff565b905060006126a088886118ff565b905060006126ae8a896118ff565b905060006126c28361265f84818989612081565b949d949c50929a509298505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061270c5761270c61336b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561278557600080fd5b505afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd9190612fac565b816001815181106127d0576127d061336b565b60200260200101906001600160a01b031690816001600160a01b03168152505061281b307f0000000000000000000000000000000000000000000000000000000000000000846119c0565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612870908590600090869030904290600401613208565b600060405180830381600087803b15801561288a57600080fd5b505af1158015611f62573d6000803e3d6000fd5b6128c9307f0000000000000000000000000000000000000000000000000000000000000000846119c0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806129106000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561297357600080fd5b505af1158015612987573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129ac9190613150565b5050505050565b6018541580156129c35750601a54155b80156129cf5750601c54155b80156129db5750602254155b80156129e75750601e54155b80156129f35750602054155b156129fa57565b60188054601955601c8054601d55601a8054601b55601e8054601f55602280546023556020805460215560009283905590829055819055928390559082905555565b6000806000806000806000612a5088612dd8565b9650965096509650965096509650612a9687600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b03808c166000908152600a602052604080822093909355908b1681522054612ac59087611fc7565b6001600160a01b038a166000908152600a6020526040902055612ae781612e13565b612af082612e13565b612afa8584612e9b565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b3f91815260200190565b60405180910390a350505050505050505050565b6000806000806000806000612b6788612026565b9650965096509650965096509650612bad88600b60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b038b166000908152600b6020908152604080832093909355600a90522054612bdc9088612081565b6001600160a01b03808c166000908152600a602052604080822093909355908b1681522054612c0b9087611fc7565b6001600160a01b038a166000908152600a6020526040902055612c2d82612e13565b612af081612e13565b6000806000806000806000612c4a88612026565b9650965096509650965096509650612c9087600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b03808c166000908152600a6020908152604080832094909455918c168152600b9091522054612cc69085611fc7565b6001600160a01b038a166000908152600b6020908152604080832093909355600a90522054612c0b9087611fc7565b6000806000806000806000612d0988612026565b9650965096509650965096509650612bdc87600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6000806000806000806000612d6388612026565b9650965096509650965096509650612da988600b60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b038b166000908152600b6020908152604080832093909355600a90522054612c909088612081565b6000806000806000806000806000806000612df28c612ebf565b935093509350935060008060006120618f878787612e0e611fa4565b612f42565b6000612e1d611fa4565b90506000612e2b83836118ff565b306000908152600a6020526040902054909150612e489082611fc7565b306000908152600a602090815260408083209390935560109052205460ff1615610b1557306000908152600b6020526040902054612e869084611fc7565b306000908152600b6020526040902055505050565b601654612ea89083612081565b601655601754612eb89082611fc7565b6017555050565b6000806000806000612ee16064610ae7601e54896118ff90919063ffffffff16565b90506000612eff6064610ae76020548a6118ff90919063ffffffff16565b90506000612f1d6064610ae76022548b6118ff90919063ffffffff16565b90506000612f318261265f85818d89612081565b975092955093509150509193509193565b6000808080612f5189866118ff565b90506000612f5f89876118ff565b90506000612f6d89886118ff565b90506000612f7b89896118ff565b905060006126c28261265f85818989612081565b600060208284031215612fa157600080fd5b8135610c0081613381565b600060208284031215612fbe57600080fd5b8151610c0081613381565b60008060408385031215612fdc57600080fd5b8235612fe781613381565b91506020830135612ff781613381565b809150509250929050565b60008060006060848603121561301757600080fd5b833561302281613381565b9250602084013561303281613381565b929592945050506040919091013590565b6000806040838503121561305657600080fd5b823561306181613381565b91506020830135612ff781613399565b6000806040838503121561308457600080fd5b823561308f81613381565b946020939093013593505050565b6000602082840312156130af57600080fd5b8135610c0081613399565b6000602082840312156130cc57600080fd5b8151610c0081613399565b6000602082840312156130e957600080fd5b5035919050565b60006020828403121561310257600080fd5b5051919050565b6000806040838503121561311c57600080fd5b823591506020830135612ff781613399565b6000806040838503121561314157600080fd5b50508035926020909101359150565b60008060006060848603121561316557600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156131ab5785810183015185820160400152820161318f565b818111156131bd576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132585784516001600160a01b031683529383019391830191600101613233565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561328c5761328c61333f565b500190565b6000826132ae57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156132cd576132cd61333f565b500290565b6000828210156132e4576132e461333f565b500390565b600181811c908216806132fd57607f821691505b6020821081141561331e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156133385761333861333f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461339657600080fd5b50565b801515811461339657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122052917a069071d5e5d0330a180f781dd660646a194962ba21d8d14519127b41d464736f6c63430008070033000000000000000000000000c9035bef087a03ef732add36164dc98a4a117563
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80636ac9a87011610190578063a9059cbb116100dc578063dd46706411610095578063efcc52de1161006f578063efcc52de146108f9578063f2fde38b1461090f578063fb0ecfa41461092f578063fe575a871461094f57600080fd5b8063dd46706414610873578063dd62ed3e14610893578063ea2f0b37146108d957600080fd5b8063a9059cbb146107d2578063b6c52324146107f2578063c40fedc614610807578063c49b9a8014610827578063c5d2418914610847578063dc44b6a01461085d57600080fd5b806388f820201161014957806395d89b411161012357806395d89b41146107685780639be953b31461077d578063a457c2d71461079d578063a69df4b5146107bd57600080fd5b806388f82020146106f15780638da5cb5b1461072a5780638fcc250d1461074857600080fd5b80636ac9a870146106585780636bc87c3a1461067857806370a082311461068e578063715018a6146106ae578063787a08a6146106c3578063809157c5146106d957600080fd5b80633685d4191161024f57806347f2914c116102085780634fc3f41a116101e25780634fc3f41a146105bf57806352390c02146105df5780635342acb4146105ff5780635932ead11461063857600080fd5b806347f2914c1461055557806349bd5a5e1461056b5780634f6625661461059f57600080fd5b80633685d4191461049f57806339509351146104bf5780633b124fe7146104df5780633bd5d173146104f5578063437823ec146105155780634549b0391461053557600080fd5b806318160ddd116102a157806318160ddd146103f25780631da1db5e1461040757806322976e0d1461042757806323b872dd1461043d5780632d8381191461045d578063313ce5671461047d57600080fd5b806303d29d28146102f45780630492f0551461031657806306fdde031461033f578063095ea7b31461036157806313114a9d146103915780631694505e146103a657600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004613043565b610988565b005b34801561032257600080fd5b5061032c60265481565b6040519081526020015b60405180910390f35b34801561034b57600080fd5b506103546109e6565b604051610336919061317e565b34801561036d57600080fd5b5061038161037c366004613071565b610a78565b6040519015158152602001610336565b34801561039d57600080fd5b5060175461032c565b3480156103b257600080fd5b506103da7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610336565b3480156103fe57600080fd5b5060085461032c565b34801561041357600080fd5b506103146104223660046130d7565b610a8f565b34801561043357600080fd5b5061032c601c5481565b34801561044957600080fd5b50610381610458366004613002565b610b1a565b34801561046957600080fd5b5061032c6104783660046130d7565b610b83565b34801561048957600080fd5b5060065460405160ff9091168152602001610336565b3480156104ab57600080fd5b506103146104ba366004612f8f565b610c07565b3480156104cb57600080fd5b506103816104da366004613071565b610dba565b3480156104eb57600080fd5b5061032c60185481565b34801561050157600080fd5b506103146105103660046130d7565b610df0565b34801561052157600080fd5b50610314610530366004612f8f565b610edc565b34801561054157600080fd5b5061032c610550366004613109565b610f2a565b34801561056157600080fd5b5061032c60155481565b34801561057757600080fd5b506103da7f0000000000000000000000002ee7dca2162d27f02d5423f448101272794b7c9081565b3480156105ab57600080fd5b506103146105ba36600461312e565b610fb9565b3480156105cb57600080fd5b506103146105da3660046130d7565b611022565b3480156105eb57600080fd5b506103146105fa366004612f8f565b611060565b34801561060b57600080fd5b5061038161061a366004612f8f565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561064457600080fd5b5061031461065336600461309d565b61122b565b34801561066457600080fd5b5061031461067336600461312e565b611268565b34801561068457600080fd5b5061032c601a5481565b34801561069a57600080fd5b5061032c6106a9366004612f8f565b61129d565b3480156106ba57600080fd5b506103146112fc565b3480156106cf57600080fd5b5061032c60145481565b3480156106e557600080fd5b5060135460ff16610381565b3480156106fd57600080fd5b5061038161070c366004612f8f565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561073657600080fd5b506000546001600160a01b03166103da565b34801561075457600080fd5b5061031461076336600461312e565b61135e565b34801561077457600080fd5b506103546113ab565b34801561078957600080fd5b50610314610798366004612f8f565b6113ba565b3480156107a957600080fd5b506103816107b8366004613071565b6113fc565b3480156107c957600080fd5b5061031461144b565b3480156107de57600080fd5b506103816107ed366004613071565b611551565b3480156107fe57600080fd5b5060025461032c565b34801561081357600080fd5b50610381610822366004612fc9565b61155e565b34801561083357600080fd5b5061031461084236600461309d565b6116a4565b34801561085357600080fd5b5061032c60225481565b34801561086957600080fd5b5061032c60205481565b34801561087f57600080fd5b5061031461088e3660046130d7565b611722565b34801561089f57600080fd5b5061032c6108ae366004612fc9565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156108e557600080fd5b506103146108f4366004612f8f565b6117a7565b34801561090557600080fd5b5061032c601e5481565b34801561091b57600080fd5b5061031461092a366004612f8f565b6117f2565b34801561093b57600080fd5b5061031461094a36600461312e565b6118ca565b34801561095b57600080fd5b5061038161096a366004612f8f565b6001600160a01b031660009081526011602052604090205460ff1690565b6000546001600160a01b031633146109bb5760405162461bcd60e51b81526004016109b2906131d3565b60405180910390fd5b5060016001600160a01b0382166000908152601160205260409020805460ff191660011790555b5050565b6060600480546109f5906132e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a21906132e9565b8015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b5050505050905090565b6000610a853384846119c0565b5060015b92915050565b6000546001600160a01b03163314610ab95760405162461bcd60e51b81526004016109b2906131d3565b6064811115610ac757600080fd5b60095447906001600160a01b03166108fc610aed6064610ae785876118ff565b9061197e565b6040518115909202916000818181858888f19350505050158015610b15573d6000803e3d6000fd5b505050565b6000610b27848484611ae4565b610b798433610b74856040518060600160405280602881526020016133a8602891396001600160a01b038a166000908152600e602090815260408083203384529091529020549190611f6a565b6119c0565b5060019392505050565b6000601654821115610bea5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109b2565b6000610bf4611fa4565b9050610c00838261197e565b9392505050565b6000546001600160a01b03163314610c315760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03811660009081526010602052604090205460ff16610c995760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b2565b60005b6012548110156109e257816001600160a01b031660128281548110610cc357610cc361336b565b6000918252602090912001546001600160a01b03161415610da85760128054610cee906001906132d2565b81548110610cfe57610cfe61336b565b600091825260209091200154601280546001600160a01b039092169183908110610d2a57610d2a61336b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600b82526040808220829055601090925220805460ff191690556012805480610d8257610d82613355565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610db281613324565b915050610c9c565b336000818152600e602090815260408083206001600160a01b03871684529091528120549091610a85918590610b749086611fc7565b3360008181526010602052604090205460ff1615610e655760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109b2565b6000610e7083612026565b5050506001600160a01b0386166000908152600a6020526040902054939450610e9e93925084915050612081565b6001600160a01b0383166000908152600a6020526040902055601654610ec49082612081565b601655601754610ed49084611fc7565b601755505050565b6000546001600160a01b03163314610f065760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000600854831115610f7e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109b2565b81610f9e576000610f8e84612026565b50949650610a8995505050505050565b6000610fa984612026565b50939650610a8995505050505050565b6000546001600160a01b03163314610fe35760405162461bcd60e51b81526004016109b2906131d3565b60018210158015610ff657506103e88111155b610fff57600080fd5b600061101a82610ae7856008546118ff90919063ffffffff16565b602655505050565b6000546001600160a01b0316331461104c5760405162461bcd60e51b81526004016109b2906131d3565b60155481111561105b57600080fd5b601455565b6000546001600160a01b0316331461108a5760405162461bcd60e51b81526004016109b2906131d3565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156111025760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c75646520556e697377617020726f757465604482015261391760f11b60648201526084016109b2565b6001600160a01b03811660009081526010602052604090205460ff161561116b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b2565b6001600160a01b0381166000908152600a6020526040902054156111c5576001600160a01b0381166000908152600a60205260409020546111ab90610b83565b6001600160a01b0382166000908152600b60205260409020555b6001600160a01b03166000818152601060205260408120805460ff191660019081179091556012805491820181559091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319169091179055565b6000546001600160a01b031633146112555760405162461bcd60e51b81526004016109b2906131d3565b6013805460ff1916911515919091179055565b6000546001600160a01b031633146112925760405162461bcd60e51b81526004016109b2906131d3565b601a91909155601c55565b6001600160a01b03811660009081526010602052604081205460ff16156112da57506001600160a01b03166000908152600b602052604090205490565b6001600160a01b0382166000908152600a6020526040902054610a8990610b83565b6000546001600160a01b031633146113265760405162461bcd60e51b81526004016109b2906131d3565b600080546040516001600160a01b03909116906000805160206133d0833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113885760405162461bcd60e51b81526004016109b2906131d3565b60006113a382610ae7856008546118ff90919063ffffffff16565b602855505050565b6060600580546109f5906132e9565b6000546001600160a01b031633146113e45760405162461bcd60e51b81526004016109b2906131d3565b60006113ef3061129d565b90506109e2308383611ae4565b6000610a853384610b74856040518060600160405280602581526020016133f060259139336000908152600e602090815260408083206001600160a01b038d1684529091529020549190611f6a565b6001546001600160a01b031633146114b15760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109b2565b60025442116115025760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109b2565b600154600080546040516001600160a01b0393841693909116916000805160206133d083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a85338484611ae4565b600080546001600160a01b031633146115895760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03831661159c57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156115de57600080fd5b505afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161691906130f0565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561166457600080fd5b505af1158015611678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169c91906130ba565b949350505050565b6000546001600160a01b031633146116ce5760405162461bcd60e51b81526004016109b2906131d3565b602780548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061171790831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461174c5760405162461bcd60e51b81526004016109b2906131d3565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561177b8142613279565b600255600080546040516001600160a01b03909116906000805160206133d0833981519152908390a350565b6000546001600160a01b031633146117d15760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b0316331461181c5760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b0381166118815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b2565b600080546040516001600160a01b03808516939216916000805160206133d083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f45760405162461bcd60e51b81526004016109b2906131d3565b602291909155602055565b60008261190e57506000610a89565b600061191a83856132b3565b9050826119278583613291565b14610c005760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b2565b6000610c0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120c3565b6001600160a01b038316611a225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b2565b6001600160a01b038216611a835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b2565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b2565b6001600160a01b038216611baa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b2565b60008111611c0c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109b2565b6001600160a01b03831660009081526011602052604090205460ff1615611c5e5760405162461bcd60e51b81526004016109b2906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b03821660009081526011602052604090205460ff1615611cb05760405162461bcd60e51b81526004016109b2906020808252600490820152634865686560e01b604082015260600190565b7f0000000000000000000000002ee7dca2162d27f02d5423f448101272794b7c906001600160a01b0316836001600160a01b0316148015611d2357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b8015611d4857506001600160a01b0382166000908152600f602052604090205460ff16155b8015611d56575060135460ff165b15611dba57602654811115611d6a57600080fd5b6001600160a01b0382166000908152600c60205260409020544211611d8e57600080fd5b601454611d9c904290611fc7565b6001600160a01b0383166000908152600c6020526040902055611e75565b7f0000000000000000000000002ee7dca2162d27f02d5423f448101272794b7c906001600160a01b0316836001600160a01b031614158015611dfe575060135460ff165b8015611e2357506001600160a01b0382166000908152600f602052604090205460ff16155b15611e75576001600160a01b0383166000908152600d6020526040902054421015611e4d57600080fd5b601454611e5b904290611fc7565b6001600160a01b0384166000908152600d60205260409020555b6000611e803061129d565b90506028548110611e9057506028545b60285481108015908190611ea7575060275460ff16155b8015611ee557507f0000000000000000000000002ee7dca2162d27f02d5423f448101272794b7c906001600160a01b0316856001600160a01b031614155b8015611ef85750602754610100900460ff165b15611f0b576028549150611f0b826120f1565b6001600160a01b0385166000908152600f602052604090205460019060ff1680611f4d57506001600160a01b0385166000908152600f602052604090205460ff165b15611f56575060005b611f6286868684612253565b505050505050565b60008184841115611f8e5760405162461bcd60e51b81526004016109b2919061317e565b506000611f9b84866132d2565b95945050505050565b6000806000611fb161246b565b9092509050611fc0828261197e565b9250505090565b600080611fd48385613279565b905083811015610c005760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b2565b60008060008060008060008060008060006120408c6125ed565b935093509350935060008060006120618f87878761205c611fa4565b612675565b919f509d509b509599509397509195509350505050919395979092949650565b6000610c0083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f6a565b600081836120e45760405162461bcd60e51b81526004016109b2919061317e565b506000611f9b8486613291565b6027805460ff1916600117905560006121106064610ae78460556118ff565b9050600061211e8383612081565b9050600061212d82600261197e565b9050600061213b8383612081565b905047600061214a8487611fc7565b9050612155816126d7565b60006121614784612081565b905060006121756064610ae784600a6118ff565b9050612181858261289e565b60408051878152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a160006121ce8383612081565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612209573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a150506027805460ff191690555050505050505050565b80612260576122606129b3565b7f0000000000000000000000002ee7dca2162d27f02d5423f448101272794b7c906001600160a01b0316846001600160a01b03161480156122d357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614155b156122e8576122e3848484612a3c565b612437565b6001600160a01b03841660009081526010602052604090205460ff16801561232957506001600160a01b03831660009081526010602052604090205460ff16155b15612339576122e3848484612b53565b6001600160a01b03841660009081526010602052604090205460ff1615801561237a57506001600160a01b03831660009081526010602052604090205460ff165b1561238a576122e3848484612c36565b6001600160a01b03841660009081526010602052604090205460ff161580156123cc57506001600160a01b03831660009081526010602052604090205460ff16155b156123dc576122e3848484612cf5565b6001600160a01b03841660009081526010602052604090205460ff16801561241c57506001600160a01b03831660009081526010602052604090205460ff165b1561242c576122e3848484612d4f565b612437848484612cf5565b8061246557612465601954601855601d54601c55601b54601a55602154602055602354602255601f54601e55565b50505050565b6016546008546000918291825b6012548110156125bd5782600a60006012848154811061249a5761249a61336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612505575081600b6000601284815481106124de576124de61336b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561251b57601654600854945094505050509091565b612561600a6000601284815481106125355761253561336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612081565b92506125a9600b60006012848154811061257d5761257d61336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612081565b9150806125b581613324565b915050612478565b506008546016546125cd9161197e565b8210156125e4576016546008549350935050509091565b90939092509050565b600080600080600061260f6064610ae7601854896118ff90919063ffffffff16565b9050600061262d6064610ae7601c548a6118ff90919063ffffffff16565b9050600061264b6064610ae7601a548b6118ff90919063ffffffff16565b905060006126658261265f85818d89612081565b90612081565b9993985091965094509092505050565b600080808061268489866118ff565b9050600061269289876118ff565b905060006126a088886118ff565b905060006126ae8a896118ff565b905060006126c28361265f84818989612081565b949d949c50929a509298505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061270c5761270c61336b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561278557600080fd5b505afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd9190612fac565b816001815181106127d0576127d061336b565b60200260200101906001600160a01b031690816001600160a01b03168152505061281b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846119c0565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612870908590600090869030904290600401613208565b600060405180830381600087803b15801561288a57600080fd5b505af1158015611f62573d6000803e3d6000fd5b6128c9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846119c0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806129106000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561297357600080fd5b505af1158015612987573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129ac9190613150565b5050505050565b6018541580156129c35750601a54155b80156129cf5750601c54155b80156129db5750602254155b80156129e75750601e54155b80156129f35750602054155b156129fa57565b60188054601955601c8054601d55601a8054601b55601e8054601f55602280546023556020805460215560009283905590829055819055928390559082905555565b6000806000806000806000612a5088612dd8565b9650965096509650965096509650612a9687600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b03808c166000908152600a602052604080822093909355908b1681522054612ac59087611fc7565b6001600160a01b038a166000908152600a6020526040902055612ae781612e13565b612af082612e13565b612afa8584612e9b565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b3f91815260200190565b60405180910390a350505050505050505050565b6000806000806000806000612b6788612026565b9650965096509650965096509650612bad88600b60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b038b166000908152600b6020908152604080832093909355600a90522054612bdc9088612081565b6001600160a01b03808c166000908152600a602052604080822093909355908b1681522054612c0b9087611fc7565b6001600160a01b038a166000908152600a6020526040902055612c2d82612e13565b612af081612e13565b6000806000806000806000612c4a88612026565b9650965096509650965096509650612c9087600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b03808c166000908152600a6020908152604080832094909455918c168152600b9091522054612cc69085611fc7565b6001600160a01b038a166000908152600b6020908152604080832093909355600a90522054612c0b9087611fc7565b6000806000806000806000612d0988612026565b9650965096509650965096509650612bdc87600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6000806000806000806000612d6388612026565b9650965096509650965096509650612da988600b60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b038b166000908152600b6020908152604080832093909355600a90522054612c909088612081565b6000806000806000806000806000806000612df28c612ebf565b935093509350935060008060006120618f878787612e0e611fa4565b612f42565b6000612e1d611fa4565b90506000612e2b83836118ff565b306000908152600a6020526040902054909150612e489082611fc7565b306000908152600a602090815260408083209390935560109052205460ff1615610b1557306000908152600b6020526040902054612e869084611fc7565b306000908152600b6020526040902055505050565b601654612ea89083612081565b601655601754612eb89082611fc7565b6017555050565b6000806000806000612ee16064610ae7601e54896118ff90919063ffffffff16565b90506000612eff6064610ae76020548a6118ff90919063ffffffff16565b90506000612f1d6064610ae76022548b6118ff90919063ffffffff16565b90506000612f318261265f85818d89612081565b975092955093509150509193509193565b6000808080612f5189866118ff565b90506000612f5f89876118ff565b90506000612f6d89886118ff565b90506000612f7b89896118ff565b905060006126c28261265f85818989612081565b600060208284031215612fa157600080fd5b8135610c0081613381565b600060208284031215612fbe57600080fd5b8151610c0081613381565b60008060408385031215612fdc57600080fd5b8235612fe781613381565b91506020830135612ff781613381565b809150509250929050565b60008060006060848603121561301757600080fd5b833561302281613381565b9250602084013561303281613381565b929592945050506040919091013590565b6000806040838503121561305657600080fd5b823561306181613381565b91506020830135612ff781613399565b6000806040838503121561308457600080fd5b823561308f81613381565b946020939093013593505050565b6000602082840312156130af57600080fd5b8135610c0081613399565b6000602082840312156130cc57600080fd5b8151610c0081613399565b6000602082840312156130e957600080fd5b5035919050565b60006020828403121561310257600080fd5b5051919050565b6000806040838503121561311c57600080fd5b823591506020830135612ff781613399565b6000806040838503121561314157600080fd5b50508035926020909101359150565b60008060006060848603121561316557600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156131ab5785810183015185820160400152820161318f565b818111156131bd576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132585784516001600160a01b031683529383019391830191600101613233565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561328c5761328c61333f565b500190565b6000826132ae57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156132cd576132cd61333f565b500290565b6000828210156132e4576132e461333f565b500390565b600181811c908216806132fd57607f821691505b6020821081141561331e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156133385761333861333f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461339657600080fd5b50565b801515811461339657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122052917a069071d5e5d0330a180f781dd660646a194962ba21d8d14519127b41d464736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c9035bef087a03ef732add36164dc98a4a117563
-----Decoded View---------------
Arg [0] : marketingWallet (address): 0xC9035beF087A03eF732aDD36164DC98a4a117563
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c9035bef087a03ef732add36164dc98a4a117563
Deployed Bytecode Sourcemap
14597:24717:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20228:282;;;;;;;;;;-1:-1:-1;20228:282:0;;;;;:::i;:::-;;:::i;:::-;;16518:72;;;;;;;;;;;;;;;;;;;12698:25:1;;;12686:2;12671:18;16518:72:0;;;;;;;;17874:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18519:161::-;;;;;;;;;;-1:-1:-1;18519:161:0;;;;;:::i;:::-;;:::i;:::-;;;5095:14:1;;5088:22;5070:41;;5058:2;5043:18;18519:161:0;4930:187:1;23181:87:0;;;;;;;;;;-1:-1:-1;23250:10:0;;23181:87;;16602:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3995:32:1;;;3977:51;;3965:2;3950:18;16602:51:0;3831:203:1;18097:79:0;;;;;;;;;;-1:-1:-1;18167:7:0;;18097:79;;30511:262;;;;;;;;;;-1:-1:-1;30511:262:0;;;;;:::i;:::-;;:::i;16025:32::-;;;;;;;;;;;;;;;;32370:313;;;;;;;;;;-1:-1:-1;32370:313:0;;;;;:::i;:::-;;:::i;21354:253::-;;;;;;;;;;-1:-1:-1;21354:253:0;;;;;:::i;:::-;;:::i;18024:67::-;;;;;;;;;;-1:-1:-1;18080:9:0;;18024:67;;18080:9;;;;14185:36:1;;14173:2;14158:18;18024:67:0;14043:184:1;22195:479:0;;;;;;;;;;-1:-1:-1;22195:479:0;;;;;:::i;:::-;;:::i;19721:218::-;;;;;;;;;;-1:-1:-1;19721:218:0;;;;;:::i;:::-;;:::i;15845:26::-;;;;;;;;;;;;;;;;20522:378;;;;;;;;;;-1:-1:-1;20522:378:0;;;;;:::i;:::-;;:::i;22682:111::-;;;;;;;;;;-1:-1:-1;22682:111:0;;;;;:::i;:::-;;:::i;20908:438::-;;;;;;;;;;-1:-1:-1;20908:438:0;;;;;:::i;:::-;;:::i;15653:41::-;;;;;;;;;;;;;;;;16660:38;;;;;;;;;;;;;;;19455:258;;;;;;;;;;-1:-1:-1;19455:258:0;;;;;:::i;:::-;;:::i;19306:137::-;;;;;;;;;;-1:-1:-1;19306:137:0;;;;;:::i;:::-;;:::i;21743:444::-;;;;;;;;;;-1:-1:-1;21743:444:0;;;;;:::i;:::-;;:::i;22923:123::-;;;;;;;;;;-1:-1:-1;22923:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;23011:27:0;22987:4;23011:27;;;:18;:27;;;;;;;;;22923:123;39208:103;;;;;;;;;;-1:-1:-1;39208:103:0;;;;;:::i;:::-;;:::i;18927:171::-;;;;;;;;;;-1:-1:-1;18927:171:0;;;;;:::i;:::-;;:::i;15926:32::-;;;;;;;;;;;;;;;;18315:198;;;;;;;;;;-1:-1:-1;18315:198:0;;;;;:::i;:::-;;:::i;5489:148::-;;;;;;;;;;;;;:::i;15610:36::-;;;;;;;;;;;;;;;;39102:94;;;;;;;;;;-1:-1:-1;39173:15:0;;;;39102:94;;21615:120;;;;;;;;;;-1:-1:-1;21615:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21707:20:0;21683:4;21707:20;;;:11;:20;;;;;;;;;21615:120;5275:79;;;;;;;;;;-1:-1:-1;5313:7:0;5340:6;-1:-1:-1;;;;;5340:6:0;5275:79;;18688:223;;;;;;;;;;-1:-1:-1;18688:223:0;;;;;:::i;:::-;;:::i;17947:71::-;;;;;;;;;;;;;:::i;30781:167::-;;;;;;;;;;-1:-1:-1;30781:167:0;;;;;:::i;:::-;;:::i;19947:269::-;;;;;;;;;;-1:-1:-1;19947:269:0;;;;;:::i;:::-;;:::i;6232:305::-;;;;;;;;;;;;;:::i;34735:167::-;;;;;;;;;;-1:-1:-1;34735:167:0;;;;;:::i;:::-;;:::i;5897:89::-;;;;;;;;;;-1:-1:-1;5969:9:0;;5897:89;;30956:284;;;;;;;;;;-1:-1:-1;30956:284:0;;;;;:::i;:::-;;:::i;23276:171::-;;;;;;;;;;-1:-1:-1;23276:171:0;;;;;:::i;:::-;;:::i;16326:35::-;;;;;;;;;;;;;;;;16218;;;;;;;;;;;;;;;;5994:226;;;;;;;;;;-1:-1:-1;5994:226:0;;;;;:::i;:::-;;:::i;18182:127::-;;;;;;;;;;-1:-1:-1;18182:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;18280:18:0;;;18263:7;18280:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18182:127;22801:110;;;;;;;;;;-1:-1:-1;22801:110:0;;;;;:::i;:::-;;:::i;16124:29::-;;;;;;;;;;;;;;;;5645:244;;;;;;;;;;-1:-1:-1;5645:244:0;;;;;:::i;:::-;;:::i;19114:176::-;;;;;;;;;;-1:-1:-1;19114:176:0;;;;;:::i;:::-;;:::i;23058:115::-;;;;;;;;;;-1:-1:-1;23058:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;23142:23:0;23118:4;23142:23;;;:14;:23;;;;;;;;;23058:115;20228:282;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;20337:4:0::1;-1:-1:-1::0;;;;;20362:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;20362:30:0::1;20388:4;20362:30;::::0;;20409:94:::1;20228:282:::0;;:::o;17874:67::-;17911:13;17934:5;17927:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17874:67;:::o;18519:161::-;18594:4;18611:39;2338:10;18634:7;18643:6;18611:8;:39::i;:::-;-1:-1:-1;18668:4:0;18519:161;;;;;:::o;30511:262::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;30622:3:::1;30602:16;:23;;30594:32;;;::::0;::::1;;30697:16;::::0;30657:21:::1;::::0;-1:-1:-1;;;;;30697:16:0::1;30689:76;30724:40;30760:3;30724:31;30657:21:::0;30738:16;30724:13:::1;:31::i;:::-;:35:::0;::::1;:40::i;:::-;30689:76;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30583:190;30511:262:::0;:::o;32370:313::-;32468:4;32485:36;32495:6;32503:9;32514:6;32485:9;:36::i;:::-;32532:121;32541:6;2338:10;32563:89;32601:6;32563:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32563:19:0;;;;;;:11;:19;;;;;;;;2338:10;32563:33;;;;;;;;;;:37;:89::i;:::-;32532:8;:121::i;:::-;-1:-1:-1;32671:4:0;32370:313;;;;;:::o;21354:253::-;21420:7;21459;;21448;:18;;21440:73;;;;-1:-1:-1;;;21440:73:0;;6565:2:1;21440:73:0;;;6547:21:1;6604:2;6584:18;;;6577:30;6643:34;6623:18;;;6616:62;-1:-1:-1;;;6694:18:1;;;6687:40;6744:19;;21440:73:0;6363:406:1;21440:73:0;21524:19;21547:10;:8;:10::i;:::-;21524:33;-1:-1:-1;21575:24:0;:7;21524:33;21575:11;:24::i;:::-;21568:31;21354:253;-1:-1:-1;;;21354:253:0:o;22195:479::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22277:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22269:60;;;::::0;-1:-1:-1;;;22269:60:0;;8142:2:1;22269:60:0::1;::::0;::::1;8124:21:1::0;8181:2;8161:18;;;8154:30;8220:29;8200:18;;;8193:57;8267:18;;22269:60:0::1;7940:351:1::0;22269:60:0::1;22345:9;22340:327;22364:9;:16:::0;22360:20;::::1;22340:327;;;22422:7;-1:-1:-1::0;;;;;22406:23:0::1;:9;22416:1;22406:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22406:12:0::1;:23;22402:254;;;22465:9;22475:16:::0;;:20:::1;::::0;22494:1:::1;::::0;22475:20:::1;:::i;:::-;22465:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22450:9:::1;:12:::0;;-1:-1:-1;;;;;22465:31:0;;::::1;::::0;22460:1;;22450:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22450:46:0::1;-1:-1:-1::0;;;;;22450:46:0;;::::1;;::::0;;22515:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22554:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22554:28:0::1;::::0;;22601:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22601:15:0;;;;;-1:-1:-1;;;;;;22601:15:0::1;::::0;;;;;20228:282;;:::o;22402:254::-:1;22382:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22340:327;;19721:218:::0;2338:10;19809:4;19858:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19858:34:0;;;;;;;;;;19809:4;;19826:83;;19849:7;;19858:50;;19897:10;19858:38;:50::i;20522:378::-;2338:10;20574:14;20623:19;;;:11;:19;;;;;;;;20622:20;20614:77;;;;-1:-1:-1;;;20614:77:0;;11937:2:1;20614:77:0;;;11919:21:1;11976:2;11956:18;;;11949:30;12015:34;11995:18;;;11988:62;-1:-1:-1;;;12066:18:1;;;12059:42;12118:19;;20614:77:0;11735:408:1;20614:77:0;20703:15;20728:19;20739:7;20728:10;:19::i;:::-;-1:-1:-1;;;;;;;;20776:15:0;;;;;;:7;:15;;;;;;20702:45;;-1:-1:-1;20776:28:0;;:15;-1:-1:-1;20702:45:0;;-1:-1:-1;;20776:19:0;:28::i;:::-;-1:-1:-1;;;;;20758:15:0;;;;;;:7;:15;;;;;:46;20825:7;;:20;;20837:7;20825:11;:20::i;:::-;20815:7;:30;20869:10;;:23;;20884:7;20869:14;:23::i;:::-;20856:10;:36;-1:-1:-1;;;20522:378:0:o;22682:111::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22751:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;22751:34:0::1;22781:4;22751:34;::::0;;22682:111::o;20908:438::-;20998:7;21037;;21026;:18;;21018:62;;;;-1:-1:-1;;;21018:62:0;;8498:2:1;21018:62:0;;;8480:21:1;8537:2;8517:18;;;8510:30;8576:33;8556:18;;;8549:61;8627:18;;21018:62:0;8296:355:1;21018:62:0;21096:17;21091:248;;21131:15;21156:19;21167:7;21156:10;:19::i;:::-;-1:-1:-1;21130:45:0;;-1:-1:-1;21190:14:0;;-1:-1:-1;;;;;;21190:14:0;21091:248;21239:23;21271:19;21282:7;21271:10;:19::i;:::-;-1:-1:-1;21237:53:0;;-1:-1:-1;21305:22:0;;-1:-1:-1;;;;;;21305:22:0;19455:258;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;19561:1:::1;19550:7;:12;;:31;;;;;19577:4;19566:7;:15;;19550:31;19542:40;;;::::0;::::1;;19622:14;19639:33;19664:7;19639:20;19651:7;19639;;:11;;:20;;;;:::i;:33::-;19683:13;:22:::0;-1:-1:-1;;;19455:258:0:o;19306:137::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;19393:13:::1;;19383:6;:23;;19375:32;;;::::0;::::1;;19418:8;:17:::0;19306:137::o;21743:444::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;21836:42:::1;-1:-1:-1::0;;;;;21825:53:0;::::1;;;21817:100;;;::::0;-1:-1:-1;;;21817:100:0;;11534:2:1;21817:100:0::1;::::0;::::1;11516:21:1::0;11573:2;11553:18;;;11546:30;11612:34;11592:18;;;11585:62;-1:-1:-1;;;11663:18:1;;;11656:32;11705:19;;21817:100:0::1;11332:398:1::0;21817:100:0::1;-1:-1:-1::0;;;;;21937:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21936:21;21928:61;;;::::0;-1:-1:-1;;;21928:61:0;;8142:2:1;21928:61:0::1;::::0;::::1;8124:21:1::0;8181:2;8161:18;;;8154:30;8220:29;8200:18;;;8193:57;8267:18;;21928:61:0::1;7940:351:1::0;21928:61:0::1;-1:-1:-1::0;;;;;22003:16:0;::::1;22022:1;22003:16:::0;;;:7:::1;:16;::::0;;;;;:20;22000:108:::1;;-1:-1:-1::0;;;;;22079:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22059:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22040:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22000:108:::1;-1:-1:-1::0;;;;;22118:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22118:27:0::1;22141:4;22118:27:::0;;::::1;::::0;;;22156:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22156:23:0::1;::::0;;::::1;::::0;;21743:444::o;39208:103::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;39280:15:::1;:23:::0;;-1:-1:-1;;39280:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39208:103::o;18927:171::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;19023:13:::1;:28:::0;;;;19062:13:::1;:28:::0;18927:171::o;18315:198::-;-1:-1:-1;;;;;18405:20:0;;18381:7;18405:20;;;:11;:20;;;;;;;;18401:49;;;-1:-1:-1;;;;;;18434:16:0;;;;;:7;:16;;;;;;;18315:198::o;18401:49::-;-1:-1:-1;;;;;18488:16:0;;;;;;:7;:16;;;;;;18468:37;;:19;:37::i;5489:148::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;5596:1:::1;5580:6:::0;;5559:40:::1;::::0;-1:-1:-1;;;;;5580:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;5559:40:0;5596:1;;5559:40:::1;5627:1;5610:19:::0;;-1:-1:-1;;;;;;5610:19:0::1;::::0;;5489:148::o;18688:223::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;18796:18:::1;18817:33;18842:7;18817:20;18829:7;18817;;:11;;:20;;;;:::i;:33::-;18861:29;:42:::0;-1:-1:-1;;;18688:223:0:o;17947:71::-;17986:13;18009:7;18002:14;;;;;:::i;30781:167::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;30848:16:::1;30867:24;30885:4;30867:9;:24::i;:::-;30848:43;;30902:38;30920:4;30927:2;30931:8;30902:9;:38::i;19947:269::-:0;20040:4;20057:129;2338:10;20080:7;20089:96;20128:15;20089:96;;;;;;;;;;;;;;;;;2338:10;20089:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20089:34:0;;;;;;;;;;;;:38;:96::i;6232:305::-;6284:14;;-1:-1:-1;;;;;6284:14:0;6302:10;6284:28;6276:76;;;;-1:-1:-1;;;6276:76:0;;12350:2:1;6276:76:0;;;12332:21:1;12389:2;12369:18;;;12362:30;12428:34;12408:18;;;12401:62;-1:-1:-1;;;12479:18:1;;;12472:33;12522:19;;6276:76:0;12148:399:1;6276:76:0;6389:9;;6371:15;:27;6363:72;;;;-1:-1:-1;;;6363:72:0;;11174:2:1;6363:72:0;;;11156:21:1;11213:2;11193:18;;;11186:30;11252:33;11232:18;;;11225:61;11303:18;;6363:72:0;10972:355:1;6363:72:0;6480:14;;;6472:6;;6451:44;;-1:-1:-1;;;;;6480:14:0;;;;6472:6;;;;-1:-1:-1;;;;;;;;;;;6451:44:0;;6515:14;;;6506:23;;-1:-1:-1;;;;;;6506:23:0;-1:-1:-1;;;;;6515:14:0;;;6506:23;;;;;;6232:305::o;34735:167::-;34813:4;34830:42;2338:10;34854:9;34865:6;34830:9;:42::i;30956:284::-;31039:10;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31069:20:0;::::1;31061:29;;;::::0;::::1;;31128:39;::::0;-1:-1:-1;;;31128:39:0;;31161:4:::1;31128:39;::::0;::::1;3977:51:1::0;31101:24:0::1;::::0;-1:-1:-1;;;;;31128:24:0;::::1;::::0;::::1;::::0;3950:18:1;;31128:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31186:46;::::0;-1:-1:-1;;;31186:46:0;;-1:-1:-1;;;;;4231:32:1;;;31186:46:0::1;::::0;::::1;4213:51:1::0;4280:18;;;4273:34;;;31101:66:0;;-1:-1:-1;31186:23:0;;::::1;::::0;::::1;::::0;4186:18:1;;31186:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31178:54:::0;30956:284;-1:-1:-1;;;;30956:284:0:o;23276:171::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;23353:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;23353:32:0;;::::1;;::::0;;23401:38:::1;::::0;::::1;::::0;::::1;::::0;23377:8;5095:14:1;5088:22;5070:41;;5058:2;5043:18;;4930:187;23401:38:0::1;;;;;;;;23276:171:::0;:::o;5994:226::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;6075:6:::1;::::0;;;6058:23;;-1:-1:-1;;;;;;6058:23:0;;::::1;-1:-1:-1::0;;;;;6075:6:0;::::1;6058:23;::::0;;;6092:19:::1;::::0;;6134:22:::1;6152:4:::0;6134:15:::1;:22;:::i;:::-;6122:9;:34:::0;6209:1:::1;6193:6:::0;;6172:40:::1;::::0;-1:-1:-1;;;;;6193:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6172:40:0;6209:1;;6172:40:::1;5994:226:::0;:::o;22801:110::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22868:27:0::1;22898:5;22868:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;22868:35:0::1;::::0;;22801:110::o;5645:244::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5734:22:0;::::1;5726:73;;;::::0;-1:-1:-1;;;5726:73:0;;6976:2:1;5726:73:0::1;::::0;::::1;6958:21:1::0;7015:2;6995:18;;;6988:30;7054:34;7034:18;;;7027:62;-1:-1:-1;;;7105:18:1;;;7098:36;7151:19;;5726:73:0::1;6774:402:1::0;5726:73:0::1;5836:6;::::0;;5815:38:::1;::::0;-1:-1:-1;;;;;5815:38:0;;::::1;::::0;5836:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;5815:38:0;::::1;5864:6;:17:::0;;-1:-1:-1;;;;;;5864:17:0::1;-1:-1:-1::0;;;;;5864:17:0;;;::::1;::::0;;;::::1;::::0;;5645:244::o;19114:176::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;19209:16:::1;:31:::0;;;;19251:16:::1;:31:::0;19114:176::o;1317:250::-;1375:7;1399:6;1395:47;;-1:-1:-1;1429:1:0;1422:8;;1395:47;1454:9;1466:5;1470:1;1466;:5;:::i;:::-;1454:17;-1:-1:-1;1499:1:0;1490:5;1494:1;1454:17;1490:5;:::i;:::-;:10;1482:56;;;;-1:-1:-1;;;1482:56:0;;8858:2:1;1482:56:0;;;8840:21:1;8897:2;8877:18;;;8870:30;8936:34;8916:18;;;8909:62;-1:-1:-1;;;8987:18:1;;;8980:31;9028:19;;1482:56:0;8656:397:1;1575:132:0;1633:7;1660:39;1664:1;1667;1660:39;;;;;;;;;;;;;;;;;:3;:39::i;29097:337::-;-1:-1:-1;;;;;29190:19:0;;29182:68;;;;-1:-1:-1;;;29182:68:0;;10769:2:1;29182:68:0;;;10751:21:1;10808:2;10788:18;;;10781:30;10847:34;10827:18;;;10820:62;-1:-1:-1;;;10898:18:1;;;10891:34;10942:19;;29182:68:0;10567:400:1;29182:68:0;-1:-1:-1;;;;;29269:21:0;;29261:68;;;;-1:-1:-1;;;29261:68:0;;7383:2:1;29261:68:0;;;7365:21:1;7422:2;7402:18;;;7395:30;7461:34;7441:18;;;7434:62;-1:-1:-1;;;7512:18:1;;;7505:32;7554:19;;29261:68:0;7181:398:1;29261:68:0;-1:-1:-1;;;;;29342:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;29394:32;;12698:25:1;;;29394:32:0;;12671:18:1;29394:32:0;;;;;;;29097:337;;;:::o;32691:2036::-;-1:-1:-1;;;;;32813:18:0;;32805:68;;;;-1:-1:-1;;;32805:68:0;;10363:2:1;32805:68:0;;;10345:21:1;10402:2;10382:18;;;10375:30;10441:34;10421:18;;;10414:62;-1:-1:-1;;;10492:18:1;;;10485:35;10537:19;;32805:68:0;10161:401:1;32805:68:0;-1:-1:-1;;;;;32892:16:0;;32884:64;;;;-1:-1:-1;;;32884:64:0;;6161:2:1;32884:64:0;;;6143:21:1;6200:2;6180:18;;;6173:30;6239:34;6219:18;;;6212:62;-1:-1:-1;;;6290:18:1;;;6283:33;6333:19;;32884:64:0;5959:399:1;32884:64:0;32976:1;32967:6;:10;32959:64;;;;-1:-1:-1;;;32959:64:0;;9621:2:1;32959:64:0;;;9603:21:1;9660:2;9640:18;;;9633:30;9699:34;9679:18;;;9672:62;-1:-1:-1;;;9750:18:1;;;9743:39;9799:19;;32959:64:0;9419:405:1;32959:64:0;-1:-1:-1;;;;;33042:20:0;;;;;;:14;:20;;;;;;;;:29;33034:46;;;;-1:-1:-1;;;33034:46:0;;;;;;10031:2:1;10013:21;;;10070:1;10050:18;;;10043:29;-1:-1:-1;;;10103:2:1;10088:18;;10081:34;10147:2;10132:18;;9829:327;33034:46:0;-1:-1:-1;;;;;33099:18:0;;;;;;:14;:18;;;;;;;;:27;33091:44;;;;-1:-1:-1;;;33091:44:0;;;;;;10031:2:1;10013:21;;;10070:1;10050:18;;;10043:29;-1:-1:-1;;;10103:2:1;10088:18;;10081:34;10147:2;10132:18;;9829:327;33091:44:0;33158:13;-1:-1:-1;;;;;33150:21:0;:4;-1:-1:-1;;;;;33150:21:0;;:55;;;;;33189:15;-1:-1:-1;;;;;33175:30:0;:2;-1:-1:-1;;;;;33175:30:0;;;33150:55;:82;;;;-1:-1:-1;;;;;;33210:22:0;;;;;;:18;:22;;;;;;;;33209:23;33150:82;:101;;;;-1:-1:-1;33236:15:0;;;;33150:101;33146:525;;;33290:13;;33280:6;:23;;33272:32;;;;;;-1:-1:-1;;;;;33331:15:0;;;;;;:11;:15;;;;;;33349;-1:-1:-1;33323:42:0;;;;;;33422:8;;33402:29;;:15;;:19;:29::i;:::-;-1:-1:-1;;;;;33384:15:0;;;;;;:11;:15;;;;;:47;33146:525;;;33472:13;-1:-1:-1;;;;;33464:21:0;:4;-1:-1:-1;;;;;33464:21:0;;;:40;;;;-1:-1:-1;33489:15:0;;;;33464:40;:67;;;;-1:-1:-1;;;;;;33509:22:0;;;;;;:18;:22;;;;;;;;33508:23;33464:67;33461:210;;;-1:-1:-1;;;;;33556:18:0;;;;;;:12;:18;;;;;;33578:15;-1:-1:-1;33556:37:0;33548:46;;;;;;33650:8;;33630:29;;:15;;:19;:29::i;:::-;-1:-1:-1;;;;;33609:18:0;;;;;;:12;:18;;;;;:50;33461:210;33695:28;33726:24;33744:4;33726:9;:24::i;:::-;33695:55;;33790:29;;33766:20;:53;33763:146;;-1:-1:-1;33868:29:0;;33763:146;33972:29;;33948:53;;;;;;;34030;;-1:-1:-1;34067:16:0;;;;34066:17;34030:53;:91;;;;;34108:13;-1:-1:-1;;;;;34100:21:0;:4;-1:-1:-1;;;;;34100:21:0;;;34030:91;:129;;;;-1:-1:-1;34138:21:0;;;;;;;34030:129;34012:301;;;34221:29;;34198:52;;34265:36;34280:20;34265:14;:36::i;:::-;-1:-1:-1;;;;;34505:24:0;;34386:12;34505:24;;;:18;:24;;;;;;34401:4;;34505:24;;;:50;;-1:-1:-1;;;;;;34533:22:0;;;;;;:18;:22;;;;;;;;34505:50;34502:96;;;-1:-1:-1;34581:5:0;34502:96;34681:38;34696:4;34701:2;34704:6;34711:7;34681:14;:38::i;:::-;32794:1933;;;32691:2036;;;:::o;1117:192::-;1203:7;1239:12;1231:6;;;;1223:29;;;;-1:-1:-1;;;1223:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1263:9:0;1275:5;1279:1;1275;:5;:::i;:::-;1263:17;1117:192;-1:-1:-1;;;;;1117:192:0:o;26656:163::-;26697:7;26718:15;26735;26754:19;:17;:19::i;:::-;26717:56;;-1:-1:-1;26717:56:0;-1:-1:-1;26791:20:0;26717:56;;26791:11;:20::i;:::-;26784:27;;;;26656:163;:::o;784:181::-;842:7;;874:5;878:1;874;:5;:::i;:::-;862:17;;903:1;898;:6;;890:46;;;;-1:-1:-1;;;890:46:0;;7786:2:1;890:46:0;;;7768:21:1;7825:2;7805:18;;;7798:30;7864:29;7844:18;;;7837:57;7911:18;;890:46:0;7584:351:1;23704:472:0;23763:7;23772;23781;23790;23799;23808;23817;23838:23;23863:12;23877:18;23897;23919:20;23931:7;23919:11;:20::i;:::-;23837:102;;;;;;;;23951:15;23968:23;23993:12;24009:62;24021:7;24030:4;24036:10;24048;24060;:8;:10::i;:::-;24009:11;:62::i;:::-;23950:121;;-1:-1:-1;23950:121:0;-1:-1:-1;23950:121:0;-1:-1:-1;24122:15:0;;-1:-1:-1;24139:4:0;;-1:-1:-1;24145:10:0;;-1:-1:-1;24157:10:0;-1:-1:-1;;;;23704:472:0;;;;;;;;;:::o;973:136::-;1031:7;1058:43;1062:1;1065;1058:43;;;;;;;;;;;;;;;;;:3;:43::i;1715:191::-;1801:7;1836:12;1829:5;1821:28;;;;-1:-1:-1;;;1821:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1860:9:0;1872:5;1876:1;1872;:5;:::i;29442:1061::-;17139:16;:23;;-1:-1:-1;;17139:23:0;17158:4;17139:23;;;:16;29559:37:::1;29592:3;29559:28;:20:::0;29584:2:::1;29559:24;:28::i;:37::-;29527:69:::0;-1:-1:-1;29607:29:0::1;29639:47;:20:::0;29527:69;29639:24:::1;:47::i;:::-;29607:79:::0;-1:-1:-1;29697:34:0::1;29734:28;29607:79:::0;29760:1:::1;29734:25;:28::i;:::-;29697:65:::0;-1:-1:-1;29773:29:0::1;29805:53;:21:::0;29697:65;29805:25:::1;:53::i;:::-;29773:85:::0;-1:-1:-1;29894:21:0::1;29869:22;29954:53;:26:::0;29985:21;29954:30:::1;:53::i;:::-;29926:81;;30018:35;30035:17;30018:16;:35::i;:::-;30064:18;30085:41;:21;30111:14:::0;30085:25:::1;:41::i;:::-;30064:62:::0;-1:-1:-1;30137:20:0::1;30160:27;30183:3;30160:18;30064:62:::0;30175:2:::1;30160:14;:18::i;:27::-;30137:50;;30198:49;30211:21;30234:12;30198;:49::i;:::-;30263:79;::::0;;13921:25:1;;;13977:2;13962:18;;13955:34;;;14005:18;;;13998:34;;;30263:79:0::1;::::0;13909:2:1;13894:18;30263:79:0::1;;;;;;;30353:20;30376:28;:10:::0;30391:12;30376:14:::1;:28::i;:::-;30415:16;::::0;:39:::1;::::0;30353:51;;-1:-1:-1;;;;;;30415:16:0::1;::::0;:39;::::1;;;::::0;30353:51;;30415:16:::1;:39:::0;:16;:39;30353:51;30415:16;:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;30470:25:0::1;::::0;12698::1;;;30470::0::1;::::0;12686:2:1;12671:18;30470:25:0::1;;;;;;;-1:-1:-1::0;;17185:16:0;:24;;-1:-1:-1;;17185:24:0;;;-1:-1:-1;;;;;;;;29442:1061:0:o;34983:968::-;35094:7;35090:40;;35116:14;:12;:14::i;:::-;35157:13;-1:-1:-1;;;;;35147:23:0;:6;-1:-1:-1;;;;;35147:23:0;;:64;;;;;35195:15;-1:-1:-1;;;;;35174:37:0;:9;-1:-1:-1;;;;;35174:37:0;;;35147:64;35143:747;;;35228:47;35249:6;35257:9;35268:6;35228:20;:47::i;:::-;35143:747;;;-1:-1:-1;;;;;35297:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;35321:22:0;;;;;;:11;:22;;;;;;;;35320:23;35297:46;35293:597;;;35360:48;35382:6;35390:9;35401:6;35360:21;:48::i;35293:597::-;-1:-1:-1;;;;;35431:19:0;;;;;;:11;:19;;;;;;;;35430:20;:46;;;;-1:-1:-1;;;;;;35454:22:0;;;;;;:11;:22;;;;;;;;35430:46;35426:464;;;35493:46;35513:6;35521:9;35532:6;35493:19;:46::i;35426:464::-;-1:-1:-1;;;;;35562:19:0;;;;;;:11;:19;;;;;;;;35561:20;:47;;;;-1:-1:-1;;;;;;35586:22:0;;;;;;:11;:22;;;;;;;;35585:23;35561:47;35557:333;;;35625:44;35643:6;35651:9;35662:6;35625:17;:44::i;35557:333::-;-1:-1:-1;;;;;35691:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;35714:22:0;;;;;;:11;:22;;;;;;;;35691:45;35687:203;;;35753:48;35775:6;35783:9;35794:6;35753:21;:48::i;35687:203::-;35834:44;35852:6;35860:9;35871:6;35834:17;:44::i;:::-;35906:7;35902:41;;35928:15;28820;;28810:7;:25;28862:21;;28846:13;:37;28910:21;;28894:13;:37;28961:24;;28942:16;:43;29015:24;;28996:16;:43;29063:18;;29050:10;:31;28766:323;35928:15;34983:968;;;;:::o;26827:555::-;26924:7;;26960;;26877;;;;;26978:289;27002:9;:16;26998:20;;26978:289;;;27068:7;27044;:21;27052:9;27062:1;27052:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27052:12:0;27044:21;;;;;;;;;;;;;:31;;:66;;;27103:7;27079;:21;27087:9;27097:1;27087:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27087:12:0;27079:21;;;;;;;;;;;;;:31;27044:66;27040:97;;;27120:7;;27129;;27112:25;;;;;;;26827:555;;:::o;27040:97::-;27162:34;27174:7;:21;27182:9;27192:1;27182:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27182:12:0;27174:21;;;;;;;;;;;;;27162:7;;:11;:34::i;:::-;27152:44;;27221:34;27233:7;:21;27241:9;27251:1;27241:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27241:12:0;27233:21;;;;;;;;;;;;;27221:7;;:11;:34::i;:::-;27211:44;-1:-1:-1;27020:3:0;;;;:::i;:::-;;;;26978:289;;;-1:-1:-1;27303:7:0;;27291;;:20;;:11;:20::i;:::-;27281:7;:30;27277:61;;;27321:7;;27330;;27313:25;;;;;;26827:555;;:::o;27277:61::-;27357:7;;27366;;-1:-1:-1;26827:555:0;-1:-1:-1;26827:555:0:o;24184:444::-;24244:7;24253;24262;24271;24291:12;24306:29;24331:3;24306:20;24318:7;;24306;:11;;:20;;;;:::i;:29::-;24291:44;;24346:18;24367:35;24398:3;24367:26;24379:13;;24367:7;:11;;:26;;;;:::i;:35::-;24346:56;;24413:18;24434:35;24465:3;24434:26;24446:13;;24434:7;:11;;:26;;;;:::i;:35::-;24413:56;-1:-1:-1;24480:23:0;24506:49;24413:56;24506:33;24528:10;24506:33;:7;24518:4;24506:11;:17::i;:::-;:21;;:33::i;:49::-;24480:75;24591:4;;-1:-1:-1;24597:10:0;;-1:-1:-1;24597:10:0;-1:-1:-1;24184:444:0;;-1:-1:-1;;;24184:444:0:o;24636:524::-;24771:7;;;;24827:24;:7;24839:11;24827;:24::i;:::-;24809:42;-1:-1:-1;24862:12:0;24877:21;:4;24886:11;24877:8;:21::i;:::-;24862:36;-1:-1:-1;24909:18:0;24930:27;:10;24945:11;24930:14;:27::i;:::-;24909:48;-1:-1:-1;24968:18:0;24989:27;:10;25004:11;24989:14;:27::i;:::-;24968:48;-1:-1:-1;25027:23:0;25053:49;25091:10;25053:33;24968:48;25053:33;:7;25065:4;25053:11;:17::i;:49::-;25121:7;;;;-1:-1:-1;25147:4:0;;-1:-1:-1;24636:524:0;;-1:-1:-1;;;;;;;;;24636:524:0:o;31248:589::-;31398:16;;;31412:1;31398:16;;;;;;;;31374:21;;31398:16;;;;;;;;;;-1:-1:-1;31398:16:0;31374:40;;31443:4;31425;31430:1;31425:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31425:23:0;;;-1:-1:-1;;;;;31425:23:0;;;;;31469:15;-1:-1:-1;;;;;31469:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31459:4;31464:1;31459:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;31459:32:0;;;-1:-1:-1;;;;;31459:32:0;;;;;31504:62;31521:4;31536:15;31554:11;31504:8;:62::i;:::-;31605:224;;-1:-1:-1;;;31605:224:0;;-1:-1:-1;;;;;31605:15:0;:66;;;;:224;;31686:11;;31712:1;;31756:4;;31783;;31803:15;;31605:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31845:513;31993:62;32010:4;32025:15;32043:11;31993:8;:62::i;:::-;32098:15;-1:-1:-1;;;;;32098:31:0;;32137:9;32170:4;32190:11;32216:1;32259;32302:7;5313;5340:6;-1:-1:-1;;;;;5340:6:0;;5275:79;32302:7;32098:252;;;;;;-1:-1:-1;;;;;;32098:252:0;;;-1:-1:-1;;;;;4677:15:1;;;32098:252:0;;;4659:34:1;4709:18;;;4702:34;;;;4752:18;;;4745:34;;;;4795:18;;;4788:34;4859:15;;;4838:19;;;4831:44;32324:15:0;4891:19:1;;;4884:35;4593:19;;32098:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31845:513;;:::o;28124:634::-;28170:7;;:12;:34;;;;-1:-1:-1;28186:13:0;;:18;28170:34;:56;;;;-1:-1:-1;28208:13:0;;:18;28170:56;:81;;;;-1:-1:-1;28230:16:0;;:21;28170:81;:100;;;;-1:-1:-1;28255:10:0;;:15;28170:100;:125;;;;-1:-1:-1;28274:16:0;;:21;28170:125;28167:137;;;28124:634::o;28167:137::-;28332:7;;;28314:15;:25;28374:13;;;28350:21;:37;28422:13;;;28398:21;:37;28467:10;;;28446:18;:31;28515:16;;;28488:24;:43;28569:16;;;28542:24;:43;-1:-1:-1;28596:14:0;;;;28621:20;;;;28652;;;28683:11;;;;28705:17;;;;28733;28124:634::o;35959:566::-;36061:15;36078:23;36103:12;36117:23;36142:12;36156:18;36176;36198:22;36212:7;36198:13;:22::i;:::-;36060:160;;;;;;;;;;;;;;36249:28;36269:7;36249;:15;36257:6;-1:-1:-1;;;;;36249:15:0;-1:-1:-1;;;;;36249:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;36231:15:0;;;;;;;:7;:15;;;;;;:46;;;;36309:18;;;;;;;:39;;36332:15;36309:22;:39::i;:::-;-1:-1:-1;;;;;36288:18:0;;;;;;:7;:18;;;;;:60;36359:26;36374:10;36359:14;:26::i;:::-;36396;36411:10;36396:14;:26::i;:::-;36433:23;36445:4;36451;36433:11;:23::i;:::-;36489:9;-1:-1:-1;;;;;36472:44:0;36481:6;-1:-1:-1;;;;;36472:44:0;;36500:15;36472:44;;;;12698:25:1;;12686:2;12671:18;;12552:177;36472:44:0;;;;;;;;36049:476;;;;;;;35959:566;;;:::o;37756:627::-;37859:15;37876:23;37901:12;37915:23;37940:12;37954:18;37974;37996:19;38007:7;37996:10;:19::i;:::-;37858:157;;;;;;;;;;;;;;38044:28;38064:7;38044;:15;38052:6;-1:-1:-1;;;;;38044:15:0;-1:-1:-1;;;;;38044:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;38026:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38101:7;:15;;;;:28;;38121:7;38101:19;:28::i;:::-;-1:-1:-1;;;;;38083:15:0;;;;;;;:7;:15;;;;;;:46;;;;38161:18;;;;;;;:39;;38184:15;38161:22;:39::i;:::-;-1:-1:-1;;;;;38140:18:0;;;;;;:7;:18;;;;;:60;38211:26;38226:10;38211:14;:26::i;:::-;38255;38270:10;38255:14;:26::i;37108:640::-;37209:15;37226:23;37251:12;37265:23;37290:12;37304:18;37324;37346:19;37357:7;37346:10;:19::i;:::-;37208:157;;;;;;;;;;;;;;37394:28;37414:7;37394;:15;37402:6;-1:-1:-1;;;;;37394:15:0;-1:-1:-1;;;;;37394:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;37376:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;37454:18;;;;;:7;:18;;;;;:39;;37477:15;37454:22;:39::i;:::-;-1:-1:-1;;;;;37433:18:0;;;;;;:7;:18;;;;;;;;:60;;;;37525:7;:18;;;;:39;;37548:15;37525:22;:39::i;36533:567::-;36632:15;36649:23;36674:12;36688:23;36713:12;36727:18;36747;36769:19;36780:7;36769:10;:19::i;:::-;36631:157;;;;;;;;;;;;;;36817:28;36837:7;36817;:15;36825:6;-1:-1:-1;;;;;36817:15:0;-1:-1:-1;;;;;36817:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;38395:699::-;38498:15;38515:23;38540:12;38554:23;38579:12;38593:18;38613;38635:19;38646:7;38635:10;:19::i;:::-;38497:157;;;;;;;;;;;;;;38683:28;38703:7;38683;:15;38691:6;-1:-1:-1;;;;;38683:15:0;-1:-1:-1;;;;;38683:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;38665:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38740:7;:15;;;;:28;;38760:7;38740:19;:28::i;25168:481::-;25230:7;25239;25248;25257;25266;25275;25284;25305:23;25330:12;25344:18;25364;25386:23;25401:7;25386:14;:23::i;:::-;25304:105;;;;;;;;25421:15;25438:23;25463:12;25479:65;25494:7;25503:4;25509:10;25521;25533;:8;:10::i;:::-;25479:14;:65::i;27390:355::-;27453:19;27476:10;:8;:10::i;:::-;27453:33;-1:-1:-1;27497:18:0;27518:27;:10;27453:33;27518:14;:27::i;:::-;27597:4;27581:22;;;;:7;:22;;;;;;27497:48;;-1:-1:-1;27581:38:0;;27497:48;27581:26;:38::i;:::-;27572:4;27556:22;;;;:7;:22;;;;;;;;:63;;;;27633:11;:26;;;;;;27630:107;;;27715:4;27699:22;;;;:7;:22;;;;;;:38;;27726:10;27699:26;:38::i;:::-;27690:4;27674:22;;;;:7;:22;;;;;:63;27442:303;;27390:355;:::o;23549:147::-;23627:7;;:17;;23639:4;23627:11;:17::i;:::-;23617:7;:27;23668:10;;:20;;23683:4;23668:14;:20::i;:::-;23655:10;:33;-1:-1:-1;;23549:147:0:o;25657:456::-;25720:7;25729;25738;25747;25767:12;25782:32;25810:3;25782:23;25794:10;;25782:7;:11;;:23;;;;:::i;:32::-;25767:47;;25825:18;25846:38;25880:3;25846:29;25858:16;;25846:7;:11;;:29;;;;:::i;:38::-;25825:59;;25895:18;25916:38;25950:3;25916:29;25928:16;;25916:7;:11;;:29;;;;:::i;:38::-;25895:59;-1:-1:-1;25965:23:0;25991:49;25895:59;25991:33;26013:10;25991:33;:7;26003:4;25991:11;:17::i;:49::-;25965:75;-1:-1:-1;26076:4:0;;-1:-1:-1;26082:10:0;-1:-1:-1;26094:10:0;-1:-1:-1;;25657:456:0;;;;;:::o;26121:527::-;26259:7;;;;26315:24;:7;26327:11;26315;:24::i;:::-;26297:42;-1:-1:-1;26350:12:0;26365:21;:4;26374:11;26365:8;:21::i;:::-;26350:36;-1:-1:-1;26397:18:0;26418:27;:10;26433:11;26418:14;:27::i;:::-;26397:48;-1:-1:-1;26456:18:0;26477:27;:10;26492:11;26477:14;:27::i;:::-;26456:48;-1:-1:-1;26515:23:0;26541:49;26456:48;26541:33;26563:10;26541:33;:7;26553:4;26541:11;:17::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:241::-;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2247:9;2234:23;2266:28;2288:5;2266:28;:::i;2329:245::-;2396:6;2449:2;2437:9;2428:7;2424:23;2420:32;2417:52;;;2465:1;2462;2455:12;2417:52;2497:9;2491:16;2516:28;2538:5;2516:28;:::i;2579:180::-;2638:6;2691:2;2679:9;2670:7;2666:23;2662:32;2659:52;;;2707:1;2704;2697:12;2659:52;-1:-1:-1;2730:23:1;;2579:180;-1:-1:-1;2579:180:1:o;2764:184::-;2834:6;2887:2;2875:9;2866:7;2862:23;2858:32;2855:52;;;2903:1;2900;2893:12;2855:52;-1:-1:-1;2926:16:1;;2764:184;-1:-1:-1;2764:184:1:o;2953:309::-;3018:6;3026;3079:2;3067:9;3058:7;3054:23;3050:32;3047:52;;;3095:1;3092;3085:12;3047:52;3131:9;3118:23;3108:33;;3191:2;3180:9;3176:18;3163:32;3204:28;3226:5;3204:28;:::i;3267:248::-;3335:6;3343;3396:2;3384:9;3375:7;3371:23;3367:32;3364:52;;;3412:1;3409;3402:12;3364:52;-1:-1:-1;;3435:23:1;;;3505:2;3490:18;;;3477:32;;-1:-1:-1;3267:248:1:o;3520:306::-;3608:6;3616;3624;3677:2;3665:9;3656:7;3652:23;3648:32;3645:52;;;3693:1;3690;3683:12;3645:52;3722:9;3716:16;3706:26;;3772:2;3761:9;3757:18;3751:25;3741:35;;3816:2;3805:9;3801:18;3795:25;3785:35;;3520:306;;;;;:::o;5357:597::-;5469:4;5498:2;5527;5516:9;5509:21;5559:6;5553:13;5602:6;5597:2;5586:9;5582:18;5575:34;5627:1;5637:140;5651:6;5648:1;5645:13;5637:140;;;5746:14;;;5742:23;;5736:30;5712:17;;;5731:2;5708:26;5701:66;5666:10;;5637:140;;;5795:6;5792:1;5789:13;5786:91;;;5865:1;5860:2;5851:6;5840:9;5836:22;5832:31;5825:42;5786:91;-1:-1:-1;5938:2:1;5917:15;-1:-1:-1;;5913:29:1;5898:45;;;;5945:2;5894:54;;5357:597;-1:-1:-1;;;5357:597:1:o;9058:356::-;9260:2;9242:21;;;9279:18;;;9272:30;9338:34;9333:2;9318:18;;9311:62;9405:2;9390:18;;9058:356::o;12734:980::-;12996:4;13044:3;13033:9;13029:19;13075:6;13064:9;13057:25;13101:2;13139:6;13134:2;13123:9;13119:18;13112:34;13182:3;13177:2;13166:9;13162:18;13155:31;13206:6;13241;13235:13;13272:6;13264;13257:22;13310:3;13299:9;13295:19;13288:26;;13349:2;13341:6;13337:15;13323:29;;13370:1;13380:195;13394:6;13391:1;13388:13;13380:195;;;13459:13;;-1:-1:-1;;;;;13455:39:1;13443:52;;13550:15;;;;13515:12;;;;13491:1;13409:9;13380:195;;;-1:-1:-1;;;;;;;13631:32:1;;;;13626:2;13611:18;;13604:60;-1:-1:-1;;;13695:3:1;13680:19;13673:35;13592:3;12734:980;-1:-1:-1;;;12734:980:1:o;14232:128::-;14272:3;14303:1;14299:6;14296:1;14293:13;14290:39;;;14309:18;;:::i;:::-;-1:-1:-1;14345:9:1;;14232:128::o;14365:217::-;14405:1;14431;14421:132;;14475:10;14470:3;14466:20;14463:1;14456:31;14510:4;14507:1;14500:15;14538:4;14535:1;14528:15;14421:132;-1:-1:-1;14567:9:1;;14365:217::o;14587:168::-;14627:7;14693:1;14689;14685:6;14681:14;14678:1;14675:21;14670:1;14663:9;14656:17;14652:45;14649:71;;;14700:18;;:::i;:::-;-1:-1:-1;14740:9:1;;14587:168::o;14760:125::-;14800:4;14828:1;14825;14822:8;14819:34;;;14833:18;;:::i;:::-;-1:-1:-1;14870:9:1;;14760:125::o;14890:380::-;14969:1;14965:12;;;;15012;;;15033:61;;15087:4;15079:6;15075:17;15065:27;;15033:61;15140:2;15132:6;15129:14;15109:18;15106:38;15103:161;;;15186:10;15181:3;15177:20;15174:1;15167:31;15221:4;15218:1;15211:15;15249:4;15246:1;15239:15;15103:161;;14890:380;;;:::o;15275:135::-;15314:3;-1:-1:-1;;15335:17:1;;15332:43;;;15355:18;;:::i;:::-;-1:-1:-1;15402:1:1;15391:13;;15275:135::o;15415:127::-;15476:10;15471:3;15467:20;15464:1;15457:31;15507:4;15504:1;15497:15;15531:4;15528:1;15521:15;15547:127;15608:10;15603:3;15599:20;15596:1;15589:31;15639:4;15636:1;15629:15;15663:4;15660:1;15653:15;15679:127;15740:10;15735:3;15731:20;15728:1;15721:31;15771:4;15768:1;15761:15;15795:4;15792:1;15785:15;15943:131;-1:-1:-1;;;;;16018:31:1;;16008:42;;15998:70;;16064:1;16061;16054:12;15998:70;15943:131;:::o;16079:118::-;16165:5;16158:13;16151:21;16144:5;16141:32;16131:60;;16187:1;16184;16177:12
Swarm Source
ipfs://52917a069071d5e5d0330a180f781dd660646a194962ba21d8d14519127b41d4
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.