ERC-20
Overview
Max Total Supply
1,000,000,000,000 OOKII
Holders
25
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,232,720,627.520489769338409822 OOKIIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
OOKII
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-15 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.7; contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract ERC20Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: 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), "ERC20Ownable: new owner is the zero address"); _owner = newOwner; } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view 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); } 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); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; 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); } 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; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 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 (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } contract OOKII is Context, IERC20, ERC20Ownable { using SafeMath for uint256; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily mapping(address => bool) private _isExcluded; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isMaxWalletExclude; mapping (address => bool) private _isExcludedMaxTxnAmount; mapping (address => bool) public isBot; mapping(address => bool) public isSniper; address payable private MarketingWallet; address payable private GiveawayWallet; address payable private DevWallet; address dead = address(0xdead); IUniswapV2Router02 public uniV2Router; address public uniV2Pair; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1e12 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _maxWallet; uint256 private _minTaxSwap; uint256 private tokensForMarketing; uint256 private tokensForGiveaway; uint256 private tokensForLiquidity; uint256 private totalBurnedTokens; uint256 private constant BUY = 1; uint256 private constant SELL = 2; uint256 private constant TRANSFER = 3; uint256 private buyOrSellSwitch; uint256 private _marketingTax = 3; uint256 private _previousMarketingTax = _marketingTax; uint256 private _giveawayTax = 7; uint256 private _previousGiveawayTax = _giveawayTax; uint256 private _reflectionsTax = 0; uint256 private _previousReflectionsTax = _reflectionsTax; uint256 private _liquidityTax = 2; uint256 private _previousLiquidityTax = _liquidityTax; uint256 private _divForLiq = _marketingTax + _liquidityTax + _giveawayTax; uint256 public taxBuyMarketing = 3; uint256 public taxBuyGiveaway = 7; uint256 public taxBuyReflections = 0; uint256 public taxBuyLiquidity = 2; uint256 public taxSellMarketing = 3; uint256 public taxSellGiveaway = 7; uint256 public taxSellReflections = 0; uint256 public taxSellLiquidity = 2; uint256 public activeTradingBlock = 0; uint256 public earlyBuyPenaltyEnd; uint256 public maxTxnAmount; bool public oneBuyPerBlock = false; bool public limitsOn = false; bool private _initiateTrades = true; bool public maxWalletOn = false; bool private _declog = false; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; string private constant _name = "OOKII"; string private constant _symbol = "OOKII"; uint8 private constant _decimal = 18; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); event SwapETHForTokens(uint256 amountIn, address[] path); event SwapTokensForETH(uint256 amountIn, address[] path); event ExcludeFromFee(address excludedAddress); event IncludeInFee(address includedAddress); event OwnerForcedSwapBack(uint256 timestamp); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() payable { _rOwned[_msgSender()] = _rTotal; maxTxnAmount = _tTotal / 100; _maxWallet = _tTotal * 3 / 100; _minTaxSwap = _tTotal * 5 / 10000; MarketingWallet = payable(0x10c1ec2c603d06E05fdbFed9D0CA2f54531b8126); GiveawayWallet = payable(0x1993Ae1cF006D7abC5dE54D546e63E789bFfE62b); DevWallet = payable(0xf51818899D82bdafA2d9cD2dE2ea94b413b09A68); _isExcluded[dead] = true; _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[dead] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[MarketingWallet] = true; _isExcludedFromFee[GiveawayWallet] = true; _isExcludedFromFee[DevWallet] = true; _isMaxWalletExclude[address(this)] = true; _isMaxWalletExclude[_msgSender()] = true; _isMaxWalletExclude[dead] = true; _isMaxWalletExclude[MarketingWallet] = true; _isMaxWalletExclude[GiveawayWallet] = true; _isMaxWalletExclude[DevWallet] = true; _isExcludedMaxTxnAmount[_msgSender()] = true; _isExcludedMaxTxnAmount[address(this)] = true; _isExcludedMaxTxnAmount[dead] = true; _isExcludedMaxTxnAmount[MarketingWallet] = true; _isExcludedMaxTxnAmount[GiveawayWallet] = true; _isExcludedMaxTxnAmount[DevWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } receive() external payable {} function name() public pure override returns (string memory) { return _name; } function symbol() public pure override returns (string memory) { return _symbol; } function decimals() public pure override returns (uint8) { return _decimal; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender,address recipient,uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender,_msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero") ); return true; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amt 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, "Amt must be less than tot refl"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { if(buyOrSellSwitch == BUY){ tokensForMarketing += tLiquidity * taxBuyMarketing / _divForLiq; tokensForGiveaway += tLiquidity * taxBuyGiveaway / _divForLiq; tokensForLiquidity += tLiquidity * taxBuyLiquidity / _divForLiq; } else if(buyOrSellSwitch == SELL){ tokensForMarketing += tLiquidity * taxSellMarketing / _divForLiq; tokensForGiveaway += tLiquidity * taxSellGiveaway / _divForLiq; tokensForLiquidity += tLiquidity * taxSellLiquidity / _divForLiq; } uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_reflectionsTax).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityTax + _marketingTax + _giveawayTax).div(10**2); } function _approve(address owner,address spender,uint256 amount) private { require(owner != address(0), "ERC20: approve from zero address"); require(spender != address(0), "ERC20: approve to zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!isBot[from]); if (maxWalletOn == true && ! _isMaxWalletExclude[to]) { require(balanceOf(to) + amount <= _maxWallet, "Max amount of tokens for wallet reached"); } if (_declog == true && to != owner() && from != uniV2Pair) { require(amount <= 0 * 10**18); } if(_initiateTrades == true) { IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniV2Router = _uniV2Router; uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).getPair(address(this), _uniV2Router.WETH()); activeTradingBlock = block.number; earlyBuyPenaltyEnd = block.timestamp + 127 hours; _isMaxWalletExclude[address(uniV2Pair)] = true; _isMaxWalletExclude[address(uniV2Router)] = true; _isExcludedMaxTxnAmount[address(uniV2Router)] = true; _isExcludedMaxTxnAmount[address(uniV2Pair)] = true; limitsOn = false; maxWalletOn = true; swapAndLiquifyEnabled = true; oneBuyPerBlock = false; _initiateTrades = false; } if(limitsOn){ if (from != owner() && to != owner() && to != address(0) && to != dead && !inSwapAndLiquify) { if(from != owner() && to != uniV2Pair) { for (uint x = 0; x < 2; x++) { if(block.number == activeTradingBlock + x) { isSniper[to] = true; } } } if (oneBuyPerBlock){ if (to != owner() && to != address(uniV2Router) && to != address(uniV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniV2Pair && !_isExcludedMaxTxnAmount[to]) { require(amount <= maxTxnAmount, "Buy transfer amount exceeds the maxTransactionAmount."); } } } uint256 totalTokensToSwap = tokensForLiquidity.add(tokensForMarketing); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= _minTaxSwap; if (!inSwapAndLiquify && swapAndLiquifyEnabled && balanceOf(uniV2Pair) > 0 && totalTokensToSwap > 0 && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && to == uniV2Pair && overMinimumTokenBalance) { swapTokens(); } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; buyOrSellSwitch = TRANSFER; } else { if (from == uniV2Pair) { removeAllFee(); _marketingTax = taxBuyMarketing; _giveawayTax = taxBuyGiveaway; _reflectionsTax = taxBuyReflections; _liquidityTax = taxBuyLiquidity; buyOrSellSwitch = BUY; } else if (to == uniV2Pair) { removeAllFee(); _marketingTax = taxSellMarketing; _giveawayTax = taxSellGiveaway; _reflectionsTax = taxSellReflections; _liquidityTax = taxSellLiquidity; buyOrSellSwitch = SELL; if(isSniper[from] && earlyBuyPenaltyEnd >= block.timestamp){ _marketingTax = _marketingTax * 15; _liquidityTax = _liquidityTax * 15; } } else { require(!isSniper[from]); removeAllFee(); buyOrSellSwitch = TRANSFER; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokens() private lockTheSwap { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokensForLiquidity + tokensForGiveaway; uint256 swapLiquidityTokens = tokensForLiquidity.div(2); uint256 amountToSwapForETH = contractBalance.sub(swapLiquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForGiveaway = ethBalance.mul(tokensForGiveaway).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance.sub(ethForMarketing).sub(ethForGiveaway); tokensForMarketing = 0; tokensForGiveaway = 0; tokensForLiquidity = 0; (bool success,) = address(MarketingWallet).call{value: ethForMarketing}(""); (success,) = address(GiveawayWallet).call{value: ethForGiveaway}(""); addLiquidity(swapLiquidityTokens, ethForLiquidity); if(address(this).balance > 2 * 10**17){ (success,) = address(DevWallet).call{value: address(this).balance}(""); } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniV2Router.WETH(); _approve(address(this), address(uniV2Router), tokenAmount); uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniV2Router), tokenAmount); uniV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp ); } function removeAllFee() private { if (_reflectionsTax == 0 && _liquidityTax == 0 && _marketingTax == 0 && _giveawayTax == 0) return; _previousMarketingTax = _marketingTax; _previousGiveawayTax = _giveawayTax; _previousLiquidityTax = _liquidityTax; _previousReflectionsTax = _reflectionsTax; _marketingTax = 0; _giveawayTax = 0; _reflectionsTax = 0; _liquidityTax = 0; } function restoreAllFee() private { _marketingTax = _previousMarketingTax; _giveawayTax = _previousGiveawayTax; _reflectionsTax = _previousReflectionsTax; _liquidityTax = _previousLiquidityTax; } function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private { _rOwned[sender] = _rOwned[sender].sub(amount); _rOwned[recipient] = _rOwned[recipient].add(amount); if (_isExcluded[sender]) { _tOwned[sender] = _tOwned[sender].sub(amount); } if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient].add(amount); } emit Transfer(sender, recipient, amount); } function excludeFromFee(address account) external onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) external onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function excludeFromMaxWallet(address account) external onlyOwner { _isMaxWalletExclude[account] = true; } function includeInMaxWallet(address account) external onlyOwner { _isMaxWalletExclude[account] = false; } function isExcludedFromMaxWallet(address account) public view returns (bool) { return _isMaxWalletExclude[account]; } function excludeFromMaxTransaction(address account) external onlyOwner { _isExcludedMaxTxnAmount[account] = true; } function includeInMaxTransaction(address account) external onlyOwner { _isExcludedMaxTxnAmount[account] = false; } function isExcludedFromMaxTransaction(address account) public view returns (bool) { return _isExcludedMaxTxnAmount[account]; } function BotAddToList(address _user) public onlyOwner { require(!isBot[_user]); isBot[_user] = true; } function BotRemoveFromList(address _user) public onlyOwner { require(isBot[_user]); isBot[_user] = false; } function removeSniper(address account) external onlyOwner { isSniper[account] = false; } function executeLimits() external onlyOwner { limitsOn = true; oneBuyPerBlock = true; } function LimitRemovalExecution() external onlyOwner { limitsOn = false; oneBuyPerBlock = false; } function INITIATE() external onlyOwner { _initiateTrades = true; } function STOPINITIATE() external onlyOwner { _initiateTrades = false; } function TaxSwapEnable() external onlyOwner { swapAndLiquifyEnabled = true; } function TaxSwapDisable() external onlyOwner { swapAndLiquifyEnabled = false; } function enableOneBuyPerBlock() external onlyOwner { oneBuyPerBlock = true; } function disableOneBuyPerBlock() external onlyOwner { oneBuyPerBlock = false; } function enableMaxWallet() external onlyOwner { maxWalletOn = true; } function disableMaxWallet() external onlyOwner { maxWalletOn = false; } function setBuyTax(uint256 _buyLiquidityTax, uint256 _buyReflectionsTax, uint256 _buyMarketingTax, uint256 _buyGiveawayTax) external onlyOwner { taxBuyReflections = _buyReflectionsTax; taxBuyGiveaway = _buyGiveawayTax; taxBuyMarketing = _buyMarketingTax; taxBuyLiquidity = _buyLiquidityTax; } function setSellTax(uint256 _sellLiquidityTax, uint256 _sellReflectionsTax, uint256 _sellMarketingTax, uint256 _sellGiveawayTax) external onlyOwner { taxSellReflections = _sellReflectionsTax; taxSellGiveaway = _sellGiveawayTax; taxSellMarketing = _sellMarketingTax; taxSellLiquidity = _sellLiquidityTax; } function setMarketingAddress(address _marketingAddress) external onlyOwner { require(_marketingAddress != address(0), "address cannot be 0"); _isExcludedFromFee[MarketingWallet] = false; MarketingWallet = payable(_marketingAddress); _isExcludedFromFee[MarketingWallet] = true; } function setGiveawayAddress(address _giveawayAddress) external onlyOwner { require(_giveawayAddress != address(0), "address cannot be 0"); _isExcludedFromFee[GiveawayWallet] = false; GiveawayWallet = payable(_giveawayAddress); _isExcludedFromFee[GiveawayWallet] = true; } function forceSwapBack() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); require(contractBalance >= _tTotal * 5 / 10000, "Can only swap back if more than 0.05% of tokens stuck on contract"); swapTokens(); emit OwnerForcedSwapBack(block.timestamp); } function withdrawDevETH() public onlyOwner { bool success; (success,) = address(DevWallet).call{value: address(this).balance}(""); } function DECLOG() external onlyOwner { _declog = true; } function resetDECLOG() external onlyOwner { _declog = false; } function manualBurnTokens(uint256 percent) external onlyOwner returns (bool){ require(percent <= 10, "May not nuke more than 10% of tokens in LP"); uint256 liquidityPairBalance = this.balanceOf(uniV2Pair); uint256 amountToBurn = liquidityPairBalance * percent / 10**2; if (amountToBurn > 0){ _transfer(uniV2Pair, dead, amountToBurn); } totalBurnedTokens = balanceOf(dead); require(totalBurnedTokens <= _tTotal * 50 / 10**2, "Can not burn more then 50% of supply"); IUniswapV2Pair pair = IUniswapV2Pair(uniV2Pair); pair.sync(); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"excludedAddress","type":"address"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"includedAddress","type":"address"}],"name":"IncludeInFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"BotAddToList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"BotRemoveFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DECLOG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"INITIATE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitRemovalExecution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"STOPINITIATE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activeTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableOneBuyPerBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableOneBuyPerBlock","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":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxWallet","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":"","type":"address"}],"name":"isBot","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":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oneBuyPerBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetDECLOG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"_buyReflectionsTax","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_buyGiveawayTax","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_giveawayAddress","type":"address"}],"name":"setGiveawayAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"_sellReflectionsTax","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_sellGiveawayTax","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxBuyGiveaway","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellGiveaway","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawDevETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600e80546001600160a01b03191661dead179055620000336c0c9f2c9cd04674edea40000000600019620004f1565b6200004190600019620004d7565b6012556003601b55601b54601c556007601d55601d54601e556000601f55601f546020556002602155602154602255601d54602154601b5462000085919062000483565b62000091919062000483565b60235560036024819055600760258190556000602681905560026027819055602893909355602991909155602a819055602b91909155602c819055602f805466ff00ffffffffff191662010000179055620000e93390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601254336000908152600160205260409020556200016060646c0c9f2c9cd04674edea400000006200049e565b602e5560646200017f6c0c9f2c9cd04674edea400000006003620004b5565b6200018b91906200049e565b601455612710620001ab6c0c9f2c9cd04674edea400000006005620004b5565b620001b791906200049e565b601555600b80546001600160a01b03199081167310c1ec2c603d06e05fdbfed9d0ca2f54531b812617909155600c80548216731993ae1cf006d7abc5de54d546e63e789bffe62b179055600d805490911673f51818899d82bdafa2d9cd2de2ea94b413b09a68179055600e546001600160a01b03166000908152600560205260408120805460ff1916600190811790915590600690620002543390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e548216815260068452828120805486166001908117909155308083528483208054881683179055600b54841683528483208054881683179055600c54841683528483208054881683179055600d549093168252838220805487168217905591815260079384905291822080549094168117909355620003003390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54821681526007909352818320805485166001908117909155600b54821684528284208054861682179055600c54821684528284208054861682179055600d549091168352908220805490931681179092556008906200038d3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526008909352818320805485166001908117909155600e54821684528284208054861682179055600b54821684528284208054861682179055600c54821684528284208054861682179055600d54909116835291208054909216179055620004223390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c0c9f2c9cd04674edea400000006040516200047591815260200190565b60405180910390a362000534565b6000821982111562000499576200049962000508565b500190565b600082620004b057620004b06200051e565b500490565b6000816000190483118215151615620004d257620004d262000508565b500290565b600082821015620004ec57620004ec62000508565b500390565b6000826200050357620005036200051e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61380580620005446000396000f3fe6080604052600436106103dd5760003560e01c80636dd3d39f116101fd578063958c2e5211610118578063cf46f24c116100ab578063ea2f0b371161007a578063ea2f0b3714610b36578063f2f8ff2a14610b56578063f2fde38b14610b6c578063f3fb4a2d14610b8c578063f4af464b14610bac57600080fd5b8063cf46f24c14610aaf578063dd62ed3e14610ac5578063dd8bb3c114610b0b578063ea090d9714610b2057600080fd5b8063a9059cbb116100e7578063a9059cbb14610a50578063a98a934a14610a70578063afe110c314610a85578063ba37009014610a9a57600080fd5b8063958c2e52146109f057806395d89b41146103e9578063a457c2d714610a10578063a82cfe8b14610a3057600080fd5b806384666b08116101905780638da5cb5b1161015f5780638da5cb5b146109865780638f3c3854146109a4578063906e9dd0146109ba57806393165dbb146109da57600080fd5b806384666b081461090357806389b8249f146109235780638bcea939146109385780638c3826511461097057600080fd5b8063745d032f116101cc578063745d032f1461089357806378fe4599146108b45780637cf14024146108ce5780637f7fe7c2146108ee57600080fd5b80636dd3d39f146108105780636e86ea8b1461084957806370a082311461085e578063715018a61461087e57600080fd5b80633f33e909116102f85780635342acb41161028b5780635f12509d1161025a5780635f12509d1461078f578063603dbe06146107a5578063620b4bfc146107bb5780636adf6818146107d05780636d61ce65146107f057600080fd5b80635342acb41461070b5780635b700d91146107445780635bec94e4146107645780635c3e7c401461077a57600080fd5b80634a74bb02116102c75780634a74bb02146106ab5780634fc9f26f146106cc57806351f205e4146106e1578063527ccf28146106f657600080fd5b80633f33e90914610636578063437823ec146106565780634549b0391461067657806348e830281461069657600080fd5b806326d3d9db1161037057806333251a0b1161033f57806333251a0b146105b057806339509351146105d05780633af50e57146105f05780633bbac5791461060657600080fd5b806326d3d9db1461053d5780632d83811914610554578063313ce5671461057457806331af198c1461059057600080fd5b806318d9ceae116103ac57806318d9ceae146104af5780631c42047a146104e85780631fc851bd1461050757806323b872dd1461051d57600080fd5b806306fdde03146103e9578063095ea7b3146104265780630f3a325f1461045657806318160ddd1461048657600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b5060408051808201825260058152644f4f4b494960d81b6020820152905161041d91906135a8565b60405180910390f35b34801561043257600080fd5b506104466104413660046134c0565b610bcc565b604051901515815260200161041d565b34801561046257600080fd5b5061044661047136600461340c565b600a6020526000908152604090205460ff1681565b34801561049257600080fd5b5068327cb2734119d3b7a9601e1b5b60405190815260200161041d565b3480156104bb57600080fd5b506104466104ca36600461340c565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156104f457600080fd5b50602f5461044690610100900460ff1681565b34801561051357600080fd5b506104a1602d5481565b34801561052957600080fd5b5061044661053836600461347f565b610be3565b34801561054957600080fd5b50610552610c4c565b005b34801561056057600080fd5b506104a161056f3660046134ec565b610c90565b34801561058057600080fd5b506040516012815260200161041d565b34801561059c57600080fd5b506105526105ab36600461340c565b610d01565b3480156105bc57600080fd5b506105526105cb36600461340c565b610d71565b3480156105dc57600080fd5b506104466105eb3660046134c0565b610dbc565b3480156105fc57600080fd5b506104a160285481565b34801561061257600080fd5b5061044661062136600461340c565b60096020526000908152604090205460ff1681565b34801561064257600080fd5b5061055261065136600461340c565b610df2565b34801561066257600080fd5b5061055261067136600461340c565b610e3d565b34801561068257600080fd5b506104a161069136600461351e565b610e8b565b3480156106a257600080fd5b50610552610f22565b3480156106b757600080fd5b50602f5461044690600160301b900460ff1681565b3480156106d857600080fd5b50610552610fa4565b3480156106ed57600080fd5b50610552610fdb565b34801561070257600080fd5b506105526110f3565b34801561071757600080fd5b5061044661072636600461340c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561075057600080fd5b5061055261075f36600461340c565b611134565b34801561077057600080fd5b506104a1602b5481565b34801561078657600080fd5b50610552611182565b34801561079b57600080fd5b506104a1602a5481565b3480156107b157600080fd5b506104a160275481565b3480156107c757600080fd5b506105526111bf565b3480156107dc57600080fd5b506105526107eb36600461340c565b6111fb565b3480156107fc57600080fd5b5061044661080b3660046134ec565b611246565b34801561081c57600080fd5b5061044661082b36600461340c565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561085557600080fd5b50610552611497565b34801561086a57600080fd5b506104a161087936600461340c565b6114d9565b34801561088a57600080fd5b50610552611538565b34801561089f57600080fd5b50602f54610446906301000000900460ff1681565b3480156108c057600080fd5b50602f546104469060ff1681565b3480156108da57600080fd5b506105526108e936600461340c565b6115ac565b3480156108fa57600080fd5b506105526115fa565b34801561090f57600080fd5b5061055261091e366004613576565b611639565b34801561092f57600080fd5b50610552611677565b34801561094457600080fd5b50601054610958906001600160a01b031681565b6040516001600160a01b03909116815260200161041d565b34801561097c57600080fd5b506104a160255481565b34801561099257600080fd5b506000546001600160a01b0316610958565b3480156109b057600080fd5b506104a160295481565b3480156109c657600080fd5b506105526109d536600461340c565b6116b1565b3480156109e657600080fd5b506104a160265481565b3480156109fc57600080fd5b50600f54610958906001600160a01b031681565b348015610a1c57600080fd5b50610446610a2b3660046134c0565b611777565b348015610a3c57600080fd5b50610552610a4b366004613576565b6117c6565b348015610a5c57600080fd5b50610446610a6b3660046134c0565b611804565b348015610a7c57600080fd5b50610552611811565b348015610a9157600080fd5b5061055261184a565b348015610aa657600080fd5b50610552611883565b348015610abb57600080fd5b506104a1602e5481565b348015610ad157600080fd5b506104a1610ae0366004613446565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b1757600080fd5b506105526118b9565b348015610b2c57600080fd5b506104a1602c5481565b348015610b4257600080fd5b50610552610b5136600461340c565b6118f1565b348015610b6257600080fd5b506104a160245481565b348015610b7857600080fd5b50610552610b8736600461340c565b61193c565b348015610b9857600080fd5b50610552610ba736600461340c565b6119f2565b348015610bb857600080fd5b50610552610bc736600461340c565b611ab8565b6000610bd9338484611b2c565b5060015b92915050565b6000610bf0848484611c39565b610c428433610c3d85604051806060016040528060288152602001613783602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061261b565b611b2c565b5060019392505050565b6000546001600160a01b03163314610c7f5760405162461bcd60e51b8152600401610c76906135fd565b60405180910390fd5b602f805461ffff1916610101179055565b6000601254821115610ce45760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c00006044820152606401610c76565b6000610cee612647565b9050610cfa838261266a565b9392505050565b6000546001600160a01b03163314610d2b5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03811660009081526009602052604090205460ff16610d5057600080fd5b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610bd9918590610c3d9086612676565b6000546001600160a01b03163314610e1c5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610e675760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b600068327cb2734119d3b7a9601e1b831115610ee95760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610c76565b81610f08576000610ef984612682565b50939550610bdd945050505050565b6000610f1384612682565b50929550610bdd945050505050565b6000546001600160a01b03163314610f4c5760405162461bcd60e51b8152600401610c76906135fd565b600d546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610f99576040519150601f19603f3d011682016040523d82523d6000602084013e610f9e565b606091505b50505050565b6000546001600160a01b03163314610fce5760405162461bcd60e51b8152600401610c76906135fd565b602f805461ffff19169055565b6000546001600160a01b031633146110055760405162461bcd60e51b8152600401610c76906135fd565b6000611010306114d9565b905061271061102c68327cb2734119d3b7a9601e1b60056136ed565b61103691906136cb565b8110156110b55760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060448201527f302e303525206f6620746f6b656e7320737475636b206f6e20636f6e747261636064820152601d60fa1b608482015260a401610c76565b6110bd6126d1565b6040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a150565b6000546001600160a01b0316331461111d5760405162461bcd60e51b8152600401610c76906135fd565b602f805464ff000000001916640100000000179055565b6000546001600160a01b0316331461115e5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146111ac5760405162461bcd60e51b8152600401610c76906135fd565b602f805462ff0000191662010000179055565b6000546001600160a01b031633146111e95760405162461bcd60e51b8152600401610c76906135fd565b602f805466ff00000000000019169055565b6000546001600160a01b031633146112255760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600860205260409020805460ff19169055565b600080546001600160a01b031633146112715760405162461bcd60e51b8152600401610c76906135fd565b600a8211156112d55760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610c76565b6010546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b15801561131b57600080fd5b505afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190613505565b90506000606461136385846136ed565b61136d91906136cb565b9050801561139257601054600e54611392916001600160a01b03908116911683611c39565b600e546113a7906001600160a01b03166114d9565b60195560646113c368327cb2734119d3b7a9601e1b60326136ed565b6113cd91906136cb565b601954111561142a5760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f74206275726e206d6f7265207468656e20353025206f6620737560448201526370706c7960e01b6064820152608401610c76565b6010546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561147457600080fd5b505af1158015611488573d6000803e3d6000fd5b50600198975050505050505050565b6000546001600160a01b031633146114c15760405162461bcd60e51b8152600401610c76906135fd565b602f805466ff0000000000001916600160301b179055565b6001600160a01b03811660009081526005602052604081205460ff161561151657506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bdd90610c90565b6000546001600160a01b031633146115625760405162461bcd60e51b8152600401610c76906135fd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146115d65760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146116245760405162461bcd60e51b8152600401610c76906135fd565b602f805463ff00000019166301000000179055565b6000546001600160a01b031633146116635760405162461bcd60e51b8152600401610c76906135fd565b602a92909255602991909155602855602b55565b6000546001600160a01b031633146116a15760405162461bcd60e51b8152600401610c76906135fd565b602f805464ff0000000019169055565b6000546001600160a01b031633146116db5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b0381166117275760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401610c76565b600b80546001600160a01b03908116600090815260066020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000610bd93384610c3d856040518060600160405280602581526020016137ab602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061261b565b6000546001600160a01b031633146117f05760405162461bcd60e51b8152600401610c76906135fd565b602692909255602591909155602455602755565b6000610bd9338484611c39565b6000546001600160a01b0316331461183b5760405162461bcd60e51b8152600401610c76906135fd565b602f805463ff00000019169055565b6000546001600160a01b031633146118745760405162461bcd60e51b8152600401610c76906135fd565b602f805460ff19166001179055565b6000546001600160a01b031633146118ad5760405162461bcd60e51b8152600401610c76906135fd565b602f805460ff19169055565b6000546001600160a01b031633146118e35760405162461bcd60e51b8152600401610c76906135fd565b602f805462ff000019169055565b6000546001600160a01b0316331461191b5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146119665760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b0381166119d05760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610c76565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a1c5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b038116611a685760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401610c76565b600c80546001600160a01b03908116600090815260066020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314611ae25760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03811660009081526009602052604090205460ff1615611b0857600080fd5b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6001600160a01b038316611b825760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610c76565b6001600160a01b038216611bd85760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610c76565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c9d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c76565b6001600160a01b038216611cff5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c76565b60008111611d615760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c76565b6001600160a01b03831660009081526009602052604090205460ff1615611d8757600080fd5b602f546301000000900460ff1615156001148015611dbe57506001600160a01b03821660009081526007602052604090205460ff16155b15611e385760145481611dd0846114d9565b611dda91906136b3565b1115611e385760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610c76565b602f54640100000000900460ff1615156001148015611e6557506000546001600160a01b03838116911614155b8015611e7f57506010546001600160a01b03848116911614155b15611e8f578015611e8f57600080fd5b602f5462010000900460ff161515600114156120f657600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b158015611f0557600080fd5b505afa158015611f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3d9190613429565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8557600080fd5b505afa158015611f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbd9190613429565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561200357600080fd5b505afa158015612017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203b9190613429565b601080546001600160a01b0319166001600160a01b039290921691909117905543602c5561206c426206f9f06136b3565b602d5550601080546001600160a01b039081166000908152600760209081526040808320805460ff199081166001908117909255600f80548716865283862080548316841790555486168552600890935281842080548416821790559454909316825291902080549091169091179055602f805466ff0000ffffffff191666010000010000001790555b602f54610100900460ff16156123b1576000546001600160a01b0384811691161480159061213257506000546001600160a01b03838116911614155b801561214657506001600160a01b03821615155b80156121605750600e546001600160a01b03838116911614155b80156121785750602f5465010000000000900460ff16155b156123b1576000546001600160a01b038481169116148015906121a957506010546001600160a01b03838116911614155b156122075760005b60028110156122055780602c546121c891906136b3565b4314156121f3576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b806121fd81613723565b9150506121b1565b505b602f5460ff1615612306576000546001600160a01b0383811691161480159061223e5750600f546001600160a01b03838116911614155b801561225857506010546001600160a01b03838116911614155b15612306573260009081526004602052604090205443116122f35760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610c76565b3260009081526004602052604090204390555b6010546001600160a01b03848116911614801561233c57506001600160a01b03821660009081526008602052604090205460ff16155b156123b157602e548111156123b15760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c76565b60006123ca60165460185461267690919063ffffffff16565b905060006123d7306114d9565b601554602f549192508210159065010000000000900460ff161580156124065750602f54600160301b900460ff165b80156124275750601054600090612425906001600160a01b03166114d9565b115b80156124335750600083115b801561245857506001600160a01b03851660009081526006602052604090205460ff16155b801561247d57506001600160a01b03861660009081526006602052604090205460ff16155b801561249657506010546001600160a01b038681169116145b801561249f5750805b156124ac576124ac6126d1565b6001600160a01b03861660009081526006602052604090205460019060ff16806124ee57506001600160a01b03861660009081526006602052604090205460ff165b1561250057506003601a556000612606565b6010546001600160a01b03888116911614156125405761251e6128fb565b602454601b55602554601d55602654601f556027546021556001601a55612606565b6010546001600160a01b03878116911614156125d25761255e6128fb565b602854601b55602954601d55602a54601f55602b546021556002601a556001600160a01b0387166000908152600a602052604090205460ff1680156125a5575042602d5410155b156125cd57601b546125b890600f6136ed565b601b556021546125c990600f6136ed565b6021555b612606565b6001600160a01b0387166000908152600a602052604090205460ff16156125f857600080fd5b6126006128fb565b6003601a555b61261287878784612957565b50505050505050565b6000818484111561263f5760405162461bcd60e51b8152600401610c7691906135a8565b505050900390565b6000806000612654612ada565b9092509050612663828261266a565b9250505090565b6000610cfa82846136cb565b6000610cfa82846136b3565b60008060008060008060008060006126998a612c82565b92509250925060008060006126b78d86866126b2612647565b612cbe565b919f909e50909c50959a5093985091965092945050505050565b602f805465ff000000000019166501000000000017905560006126f3306114d9565b9050600060175460185460165461270a91906136b3565b61271491906136b3565b9050600061272e600260185461266a90919063ffffffff16565b9050600061273c8483612d0e565b90504761274882612d1a565b60006127544783612d0e565b905060006127778661277160165485612e8390919063ffffffff16565b9061266a565b905060006127948761277160175486612e8390919063ffffffff16565b905060006127ac826127a68686612d0e565b90612d0e565b6000601681905560178190556018819055600b5460405192935090916001600160a01b039091169085908381818185875af1925050503d806000811461280e576040519150601f19603f3d011682016040523d82523d6000602084013e612813565b606091505b5050600c546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612863576040519150601f19603f3d011682016040523d82523d6000602084013e612868565b606091505b5050809150506128788883612e8f565b6702c68af0bb1400004711156128e057600d546040516001600160a01b03909116904790600081818185875af1925050503d80600081146128d5576040519150601f19603f3d011682016040523d82523d6000602084013e6128da565b606091505b50909150505b5050602f805465ff0000000000191690555050505050505050565b601f5415801561290b5750602154155b80156129175750601b54155b80156129235750601d54155b1561292a57565b601b8054601c55601d8054601e5560218054602255601f8054602055600093849055918390559082905555565b80612964576129646128fb565b6001600160a01b03841660009081526005602052604090205460ff1680156129a557506001600160a01b03831660009081526005602052604090205460ff16155b156129ba576129b5848484612f52565b612ab8565b6001600160a01b03841660009081526005602052604090205460ff161580156129fb57506001600160a01b03831660009081526005602052604090205460ff165b15612a0b576129b5848484613078565b6001600160a01b03841660009081526005602052604090205460ff16158015612a4d57506001600160a01b03831660009081526005602052604090205460ff16155b15612a5d576129b5848484613121565b6001600160a01b03841660009081526005602052604090205460ff168015612a9d57506001600160a01b03831660009081526005602052604090205460ff165b15612aad576129b5848484613165565b612ab8848484613121565b80610f9e57610f9e601c54601b55601e54601d55602054601f55602254602155565b601254600090819068327cb2734119d3b7a9601e1b825b601154811015612c3f57826001600060118481548110612b1357612b13613754565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b7e5750816002600060118481548110612b5757612b57613754565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b9d5750506012549368327cb2734119d3b7a9601e1b9350915050565b612be36001600060118481548110612bb757612bb7613754565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612d0e565b9250612c2b6002600060118481548110612bff57612bff613754565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612d0e565b915080612c3781613723565b915050612af1565b50601254612c599068327cb2734119d3b7a9601e1b61266a565b821015612c795750506012549268327cb2734119d3b7a9601e1b92509050565b90939092509050565b600080600080612c91856131d8565b90506000612c9e866131f4565b90506000612cb0826127a68986612d0e565b979296509094509092505050565b6000808080612ccd8886612e83565b90506000612cdb8887612e83565b90506000612ce98888612e83565b90506000612cfb826127a68686612d0e565b939b939a50919850919650505050505050565b6000610cfa828461370c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d4f57612d4f613754565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612da357600080fd5b505afa158015612db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddb9190613429565b81600181518110612dee57612dee613754565b6001600160a01b039283166020918202929092010152600f54612e149130911684611b2c565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e4d908590600090869030904290600401613642565b600060405180830381600087803b158015612e6757600080fd5b505af1158015612e7b573d6000803e3d6000fd5b505050505050565b6000610cfa82846136ed565b600f54612ea79030906001600160a01b031684611b2c565b600f54600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612f1257600080fd5b505af1158015612f26573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f4b9190613548565b5050505050565b600080600080600080612f6487612682565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612f969088612d0e565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612fc59087612d0e565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054612ff49086612676565b6001600160a01b03891660009081526001602052604090205561301681613222565b61302084836133e8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161306591815260200190565b60405180910390a3505050505050505050565b60008060008060008061308a87612682565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506130bc9087612d0e565b6001600160a01b03808b16600090815260016020908152604080832094909455918b168152600290915220546130f29084612676565b6001600160a01b038916600090815260026020908152604080832093909355600190522054612ff49086612676565b60008060008060008061313387612682565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612fc59087612d0e565b60008060008060008061317787612682565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506131a99088612d0e565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546130bc9087612d0e565b6000610bdd6064612771601f5485612e8390919063ffffffff16565b6000610bdd6064612771601d54601b5460215461321191906136b3565b61321b91906136b3565b8590612e83565b6001601a5414156132c35760235460245461323d90836136ed565b61324791906136cb565b6016600082825461325891906136b3565b909155505060235460255461326d90836136ed565b61327791906136cb565b6017600082825461328891906136b3565b909155505060235460275461329d90836136ed565b6132a791906136cb565b601860008282546132b891906136b3565b9091555061335f9050565b6002601a54141561335f576023546028546132de90836136ed565b6132e891906136cb565b601660008282546132f991906136b3565b909155505060235460295461330e90836136ed565b61331891906136cb565b6017600082825461332991906136b3565b9091555050602354602b5461333e90836136ed565b61334891906136cb565b6018600082825461335991906136b3565b90915550505b6000613369612647565b905060006133778383612e83565b306000908152600160205260409020549091506133949082612676565b3060009081526001602090815260408083209390935560059052205460ff16156133e357306000908152600260205260409020546133d29084612676565b306000908152600260205260409020555b505050565b6012546133f59083612d0e565b6012556013546134059082612676565b6013555050565b60006020828403121561341e57600080fd5b8135610cfa8161376a565b60006020828403121561343b57600080fd5b8151610cfa8161376a565b6000806040838503121561345957600080fd5b82356134648161376a565b915060208301356134748161376a565b809150509250929050565b60008060006060848603121561349457600080fd5b833561349f8161376a565b925060208401356134af8161376a565b929592945050506040919091013590565b600080604083850312156134d357600080fd5b82356134de8161376a565b946020939093013593505050565b6000602082840312156134fe57600080fd5b5035919050565b60006020828403121561351757600080fd5b5051919050565b6000806040838503121561353157600080fd5b823591506020830135801515811461347457600080fd5b60008060006060848603121561355d57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561358c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156135d5578581018301518582016040015282016135b9565b818111156135e7576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156136925784516001600160a01b03168352938301939183019160010161366d565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156136c6576136c661373e565b500190565b6000826136e857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156137075761370761373e565b500290565b60008282101561371e5761371e61373e565b500390565b60006000198214156137375761373761373e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461377f57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e0c71cbd9376ea6dc108edd983851d8dcec51786d4b3ab17dc2f7e00811e25f664736f6c63430008070033
Deployed Bytecode
0x6080604052600436106103dd5760003560e01c80636dd3d39f116101fd578063958c2e5211610118578063cf46f24c116100ab578063ea2f0b371161007a578063ea2f0b3714610b36578063f2f8ff2a14610b56578063f2fde38b14610b6c578063f3fb4a2d14610b8c578063f4af464b14610bac57600080fd5b8063cf46f24c14610aaf578063dd62ed3e14610ac5578063dd8bb3c114610b0b578063ea090d9714610b2057600080fd5b8063a9059cbb116100e7578063a9059cbb14610a50578063a98a934a14610a70578063afe110c314610a85578063ba37009014610a9a57600080fd5b8063958c2e52146109f057806395d89b41146103e9578063a457c2d714610a10578063a82cfe8b14610a3057600080fd5b806384666b08116101905780638da5cb5b1161015f5780638da5cb5b146109865780638f3c3854146109a4578063906e9dd0146109ba57806393165dbb146109da57600080fd5b806384666b081461090357806389b8249f146109235780638bcea939146109385780638c3826511461097057600080fd5b8063745d032f116101cc578063745d032f1461089357806378fe4599146108b45780637cf14024146108ce5780637f7fe7c2146108ee57600080fd5b80636dd3d39f146108105780636e86ea8b1461084957806370a082311461085e578063715018a61461087e57600080fd5b80633f33e909116102f85780635342acb41161028b5780635f12509d1161025a5780635f12509d1461078f578063603dbe06146107a5578063620b4bfc146107bb5780636adf6818146107d05780636d61ce65146107f057600080fd5b80635342acb41461070b5780635b700d91146107445780635bec94e4146107645780635c3e7c401461077a57600080fd5b80634a74bb02116102c75780634a74bb02146106ab5780634fc9f26f146106cc57806351f205e4146106e1578063527ccf28146106f657600080fd5b80633f33e90914610636578063437823ec146106565780634549b0391461067657806348e830281461069657600080fd5b806326d3d9db1161037057806333251a0b1161033f57806333251a0b146105b057806339509351146105d05780633af50e57146105f05780633bbac5791461060657600080fd5b806326d3d9db1461053d5780632d83811914610554578063313ce5671461057457806331af198c1461059057600080fd5b806318d9ceae116103ac57806318d9ceae146104af5780631c42047a146104e85780631fc851bd1461050757806323b872dd1461051d57600080fd5b806306fdde03146103e9578063095ea7b3146104265780630f3a325f1461045657806318160ddd1461048657600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b5060408051808201825260058152644f4f4b494960d81b6020820152905161041d91906135a8565b60405180910390f35b34801561043257600080fd5b506104466104413660046134c0565b610bcc565b604051901515815260200161041d565b34801561046257600080fd5b5061044661047136600461340c565b600a6020526000908152604090205460ff1681565b34801561049257600080fd5b5068327cb2734119d3b7a9601e1b5b60405190815260200161041d565b3480156104bb57600080fd5b506104466104ca36600461340c565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156104f457600080fd5b50602f5461044690610100900460ff1681565b34801561051357600080fd5b506104a1602d5481565b34801561052957600080fd5b5061044661053836600461347f565b610be3565b34801561054957600080fd5b50610552610c4c565b005b34801561056057600080fd5b506104a161056f3660046134ec565b610c90565b34801561058057600080fd5b506040516012815260200161041d565b34801561059c57600080fd5b506105526105ab36600461340c565b610d01565b3480156105bc57600080fd5b506105526105cb36600461340c565b610d71565b3480156105dc57600080fd5b506104466105eb3660046134c0565b610dbc565b3480156105fc57600080fd5b506104a160285481565b34801561061257600080fd5b5061044661062136600461340c565b60096020526000908152604090205460ff1681565b34801561064257600080fd5b5061055261065136600461340c565b610df2565b34801561066257600080fd5b5061055261067136600461340c565b610e3d565b34801561068257600080fd5b506104a161069136600461351e565b610e8b565b3480156106a257600080fd5b50610552610f22565b3480156106b757600080fd5b50602f5461044690600160301b900460ff1681565b3480156106d857600080fd5b50610552610fa4565b3480156106ed57600080fd5b50610552610fdb565b34801561070257600080fd5b506105526110f3565b34801561071757600080fd5b5061044661072636600461340c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561075057600080fd5b5061055261075f36600461340c565b611134565b34801561077057600080fd5b506104a1602b5481565b34801561078657600080fd5b50610552611182565b34801561079b57600080fd5b506104a1602a5481565b3480156107b157600080fd5b506104a160275481565b3480156107c757600080fd5b506105526111bf565b3480156107dc57600080fd5b506105526107eb36600461340c565b6111fb565b3480156107fc57600080fd5b5061044661080b3660046134ec565b611246565b34801561081c57600080fd5b5061044661082b36600461340c565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561085557600080fd5b50610552611497565b34801561086a57600080fd5b506104a161087936600461340c565b6114d9565b34801561088a57600080fd5b50610552611538565b34801561089f57600080fd5b50602f54610446906301000000900460ff1681565b3480156108c057600080fd5b50602f546104469060ff1681565b3480156108da57600080fd5b506105526108e936600461340c565b6115ac565b3480156108fa57600080fd5b506105526115fa565b34801561090f57600080fd5b5061055261091e366004613576565b611639565b34801561092f57600080fd5b50610552611677565b34801561094457600080fd5b50601054610958906001600160a01b031681565b6040516001600160a01b03909116815260200161041d565b34801561097c57600080fd5b506104a160255481565b34801561099257600080fd5b506000546001600160a01b0316610958565b3480156109b057600080fd5b506104a160295481565b3480156109c657600080fd5b506105526109d536600461340c565b6116b1565b3480156109e657600080fd5b506104a160265481565b3480156109fc57600080fd5b50600f54610958906001600160a01b031681565b348015610a1c57600080fd5b50610446610a2b3660046134c0565b611777565b348015610a3c57600080fd5b50610552610a4b366004613576565b6117c6565b348015610a5c57600080fd5b50610446610a6b3660046134c0565b611804565b348015610a7c57600080fd5b50610552611811565b348015610a9157600080fd5b5061055261184a565b348015610aa657600080fd5b50610552611883565b348015610abb57600080fd5b506104a1602e5481565b348015610ad157600080fd5b506104a1610ae0366004613446565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b1757600080fd5b506105526118b9565b348015610b2c57600080fd5b506104a1602c5481565b348015610b4257600080fd5b50610552610b5136600461340c565b6118f1565b348015610b6257600080fd5b506104a160245481565b348015610b7857600080fd5b50610552610b8736600461340c565b61193c565b348015610b9857600080fd5b50610552610ba736600461340c565b6119f2565b348015610bb857600080fd5b50610552610bc736600461340c565b611ab8565b6000610bd9338484611b2c565b5060015b92915050565b6000610bf0848484611c39565b610c428433610c3d85604051806060016040528060288152602001613783602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061261b565b611b2c565b5060019392505050565b6000546001600160a01b03163314610c7f5760405162461bcd60e51b8152600401610c76906135fd565b60405180910390fd5b602f805461ffff1916610101179055565b6000601254821115610ce45760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c00006044820152606401610c76565b6000610cee612647565b9050610cfa838261266a565b9392505050565b6000546001600160a01b03163314610d2b5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03811660009081526009602052604090205460ff16610d5057600080fd5b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610bd9918590610c3d9086612676565b6000546001600160a01b03163314610e1c5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610e675760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b600068327cb2734119d3b7a9601e1b831115610ee95760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610c76565b81610f08576000610ef984612682565b50939550610bdd945050505050565b6000610f1384612682565b50929550610bdd945050505050565b6000546001600160a01b03163314610f4c5760405162461bcd60e51b8152600401610c76906135fd565b600d546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610f99576040519150601f19603f3d011682016040523d82523d6000602084013e610f9e565b606091505b50505050565b6000546001600160a01b03163314610fce5760405162461bcd60e51b8152600401610c76906135fd565b602f805461ffff19169055565b6000546001600160a01b031633146110055760405162461bcd60e51b8152600401610c76906135fd565b6000611010306114d9565b905061271061102c68327cb2734119d3b7a9601e1b60056136ed565b61103691906136cb565b8110156110b55760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060448201527f302e303525206f6620746f6b656e7320737475636b206f6e20636f6e747261636064820152601d60fa1b608482015260a401610c76565b6110bd6126d1565b6040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a150565b6000546001600160a01b0316331461111d5760405162461bcd60e51b8152600401610c76906135fd565b602f805464ff000000001916640100000000179055565b6000546001600160a01b0316331461115e5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146111ac5760405162461bcd60e51b8152600401610c76906135fd565b602f805462ff0000191662010000179055565b6000546001600160a01b031633146111e95760405162461bcd60e51b8152600401610c76906135fd565b602f805466ff00000000000019169055565b6000546001600160a01b031633146112255760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600860205260409020805460ff19169055565b600080546001600160a01b031633146112715760405162461bcd60e51b8152600401610c76906135fd565b600a8211156112d55760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610c76565b6010546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b15801561131b57600080fd5b505afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190613505565b90506000606461136385846136ed565b61136d91906136cb565b9050801561139257601054600e54611392916001600160a01b03908116911683611c39565b600e546113a7906001600160a01b03166114d9565b60195560646113c368327cb2734119d3b7a9601e1b60326136ed565b6113cd91906136cb565b601954111561142a5760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f74206275726e206d6f7265207468656e20353025206f6620737560448201526370706c7960e01b6064820152608401610c76565b6010546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561147457600080fd5b505af1158015611488573d6000803e3d6000fd5b50600198975050505050505050565b6000546001600160a01b031633146114c15760405162461bcd60e51b8152600401610c76906135fd565b602f805466ff0000000000001916600160301b179055565b6001600160a01b03811660009081526005602052604081205460ff161561151657506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bdd90610c90565b6000546001600160a01b031633146115625760405162461bcd60e51b8152600401610c76906135fd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146115d65760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146116245760405162461bcd60e51b8152600401610c76906135fd565b602f805463ff00000019166301000000179055565b6000546001600160a01b031633146116635760405162461bcd60e51b8152600401610c76906135fd565b602a92909255602991909155602855602b55565b6000546001600160a01b031633146116a15760405162461bcd60e51b8152600401610c76906135fd565b602f805464ff0000000019169055565b6000546001600160a01b031633146116db5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b0381166117275760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401610c76565b600b80546001600160a01b03908116600090815260066020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000610bd93384610c3d856040518060600160405280602581526020016137ab602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061261b565b6000546001600160a01b031633146117f05760405162461bcd60e51b8152600401610c76906135fd565b602692909255602591909155602455602755565b6000610bd9338484611c39565b6000546001600160a01b0316331461183b5760405162461bcd60e51b8152600401610c76906135fd565b602f805463ff00000019169055565b6000546001600160a01b031633146118745760405162461bcd60e51b8152600401610c76906135fd565b602f805460ff19166001179055565b6000546001600160a01b031633146118ad5760405162461bcd60e51b8152600401610c76906135fd565b602f805460ff19169055565b6000546001600160a01b031633146118e35760405162461bcd60e51b8152600401610c76906135fd565b602f805462ff000019169055565b6000546001600160a01b0316331461191b5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146119665760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b0381166119d05760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610c76565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a1c5760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b038116611a685760405162461bcd60e51b81526020600482015260136024820152720616464726573732063616e6e6f74206265203606c1b6044820152606401610c76565b600c80546001600160a01b03908116600090815260066020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314611ae25760405162461bcd60e51b8152600401610c76906135fd565b6001600160a01b03811660009081526009602052604090205460ff1615611b0857600080fd5b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6001600160a01b038316611b825760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610c76565b6001600160a01b038216611bd85760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610c76565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c9d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c76565b6001600160a01b038216611cff5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c76565b60008111611d615760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c76565b6001600160a01b03831660009081526009602052604090205460ff1615611d8757600080fd5b602f546301000000900460ff1615156001148015611dbe57506001600160a01b03821660009081526007602052604090205460ff16155b15611e385760145481611dd0846114d9565b611dda91906136b3565b1115611e385760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610c76565b602f54640100000000900460ff1615156001148015611e6557506000546001600160a01b03838116911614155b8015611e7f57506010546001600160a01b03848116911614155b15611e8f578015611e8f57600080fd5b602f5462010000900460ff161515600114156120f657600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b158015611f0557600080fd5b505afa158015611f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3d9190613429565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8557600080fd5b505afa158015611f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbd9190613429565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561200357600080fd5b505afa158015612017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203b9190613429565b601080546001600160a01b0319166001600160a01b039290921691909117905543602c5561206c426206f9f06136b3565b602d5550601080546001600160a01b039081166000908152600760209081526040808320805460ff199081166001908117909255600f80548716865283862080548316841790555486168552600890935281842080548416821790559454909316825291902080549091169091179055602f805466ff0000ffffffff191666010000010000001790555b602f54610100900460ff16156123b1576000546001600160a01b0384811691161480159061213257506000546001600160a01b03838116911614155b801561214657506001600160a01b03821615155b80156121605750600e546001600160a01b03838116911614155b80156121785750602f5465010000000000900460ff16155b156123b1576000546001600160a01b038481169116148015906121a957506010546001600160a01b03838116911614155b156122075760005b60028110156122055780602c546121c891906136b3565b4314156121f3576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b806121fd81613723565b9150506121b1565b505b602f5460ff1615612306576000546001600160a01b0383811691161480159061223e5750600f546001600160a01b03838116911614155b801561225857506010546001600160a01b03838116911614155b15612306573260009081526004602052604090205443116122f35760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610c76565b3260009081526004602052604090204390555b6010546001600160a01b03848116911614801561233c57506001600160a01b03821660009081526008602052604090205460ff16155b156123b157602e548111156123b15760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c76565b60006123ca60165460185461267690919063ffffffff16565b905060006123d7306114d9565b601554602f549192508210159065010000000000900460ff161580156124065750602f54600160301b900460ff165b80156124275750601054600090612425906001600160a01b03166114d9565b115b80156124335750600083115b801561245857506001600160a01b03851660009081526006602052604090205460ff16155b801561247d57506001600160a01b03861660009081526006602052604090205460ff16155b801561249657506010546001600160a01b038681169116145b801561249f5750805b156124ac576124ac6126d1565b6001600160a01b03861660009081526006602052604090205460019060ff16806124ee57506001600160a01b03861660009081526006602052604090205460ff165b1561250057506003601a556000612606565b6010546001600160a01b03888116911614156125405761251e6128fb565b602454601b55602554601d55602654601f556027546021556001601a55612606565b6010546001600160a01b03878116911614156125d25761255e6128fb565b602854601b55602954601d55602a54601f55602b546021556002601a556001600160a01b0387166000908152600a602052604090205460ff1680156125a5575042602d5410155b156125cd57601b546125b890600f6136ed565b601b556021546125c990600f6136ed565b6021555b612606565b6001600160a01b0387166000908152600a602052604090205460ff16156125f857600080fd5b6126006128fb565b6003601a555b61261287878784612957565b50505050505050565b6000818484111561263f5760405162461bcd60e51b8152600401610c7691906135a8565b505050900390565b6000806000612654612ada565b9092509050612663828261266a565b9250505090565b6000610cfa82846136cb565b6000610cfa82846136b3565b60008060008060008060008060006126998a612c82565b92509250925060008060006126b78d86866126b2612647565b612cbe565b919f909e50909c50959a5093985091965092945050505050565b602f805465ff000000000019166501000000000017905560006126f3306114d9565b9050600060175460185460165461270a91906136b3565b61271491906136b3565b9050600061272e600260185461266a90919063ffffffff16565b9050600061273c8483612d0e565b90504761274882612d1a565b60006127544783612d0e565b905060006127778661277160165485612e8390919063ffffffff16565b9061266a565b905060006127948761277160175486612e8390919063ffffffff16565b905060006127ac826127a68686612d0e565b90612d0e565b6000601681905560178190556018819055600b5460405192935090916001600160a01b039091169085908381818185875af1925050503d806000811461280e576040519150601f19603f3d011682016040523d82523d6000602084013e612813565b606091505b5050600c546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612863576040519150601f19603f3d011682016040523d82523d6000602084013e612868565b606091505b5050809150506128788883612e8f565b6702c68af0bb1400004711156128e057600d546040516001600160a01b03909116904790600081818185875af1925050503d80600081146128d5576040519150601f19603f3d011682016040523d82523d6000602084013e6128da565b606091505b50909150505b5050602f805465ff0000000000191690555050505050505050565b601f5415801561290b5750602154155b80156129175750601b54155b80156129235750601d54155b1561292a57565b601b8054601c55601d8054601e5560218054602255601f8054602055600093849055918390559082905555565b80612964576129646128fb565b6001600160a01b03841660009081526005602052604090205460ff1680156129a557506001600160a01b03831660009081526005602052604090205460ff16155b156129ba576129b5848484612f52565b612ab8565b6001600160a01b03841660009081526005602052604090205460ff161580156129fb57506001600160a01b03831660009081526005602052604090205460ff165b15612a0b576129b5848484613078565b6001600160a01b03841660009081526005602052604090205460ff16158015612a4d57506001600160a01b03831660009081526005602052604090205460ff16155b15612a5d576129b5848484613121565b6001600160a01b03841660009081526005602052604090205460ff168015612a9d57506001600160a01b03831660009081526005602052604090205460ff165b15612aad576129b5848484613165565b612ab8848484613121565b80610f9e57610f9e601c54601b55601e54601d55602054601f55602254602155565b601254600090819068327cb2734119d3b7a9601e1b825b601154811015612c3f57826001600060118481548110612b1357612b13613754565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b7e5750816002600060118481548110612b5757612b57613754565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b9d5750506012549368327cb2734119d3b7a9601e1b9350915050565b612be36001600060118481548110612bb757612bb7613754565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612d0e565b9250612c2b6002600060118481548110612bff57612bff613754565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612d0e565b915080612c3781613723565b915050612af1565b50601254612c599068327cb2734119d3b7a9601e1b61266a565b821015612c795750506012549268327cb2734119d3b7a9601e1b92509050565b90939092509050565b600080600080612c91856131d8565b90506000612c9e866131f4565b90506000612cb0826127a68986612d0e565b979296509094509092505050565b6000808080612ccd8886612e83565b90506000612cdb8887612e83565b90506000612ce98888612e83565b90506000612cfb826127a68686612d0e565b939b939a50919850919650505050505050565b6000610cfa828461370c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d4f57612d4f613754565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612da357600080fd5b505afa158015612db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddb9190613429565b81600181518110612dee57612dee613754565b6001600160a01b039283166020918202929092010152600f54612e149130911684611b2c565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e4d908590600090869030904290600401613642565b600060405180830381600087803b158015612e6757600080fd5b505af1158015612e7b573d6000803e3d6000fd5b505050505050565b6000610cfa82846136ed565b600f54612ea79030906001600160a01b031684611b2c565b600f54600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612f1257600080fd5b505af1158015612f26573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f4b9190613548565b5050505050565b600080600080600080612f6487612682565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612f969088612d0e565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612fc59087612d0e565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054612ff49086612676565b6001600160a01b03891660009081526001602052604090205561301681613222565b61302084836133e8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161306591815260200190565b60405180910390a3505050505050505050565b60008060008060008061308a87612682565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506130bc9087612d0e565b6001600160a01b03808b16600090815260016020908152604080832094909455918b168152600290915220546130f29084612676565b6001600160a01b038916600090815260026020908152604080832093909355600190522054612ff49086612676565b60008060008060008061313387612682565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612fc59087612d0e565b60008060008060008061317787612682565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506131a99088612d0e565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546130bc9087612d0e565b6000610bdd6064612771601f5485612e8390919063ffffffff16565b6000610bdd6064612771601d54601b5460215461321191906136b3565b61321b91906136b3565b8590612e83565b6001601a5414156132c35760235460245461323d90836136ed565b61324791906136cb565b6016600082825461325891906136b3565b909155505060235460255461326d90836136ed565b61327791906136cb565b6017600082825461328891906136b3565b909155505060235460275461329d90836136ed565b6132a791906136cb565b601860008282546132b891906136b3565b9091555061335f9050565b6002601a54141561335f576023546028546132de90836136ed565b6132e891906136cb565b601660008282546132f991906136b3565b909155505060235460295461330e90836136ed565b61331891906136cb565b6017600082825461332991906136b3565b9091555050602354602b5461333e90836136ed565b61334891906136cb565b6018600082825461335991906136b3565b90915550505b6000613369612647565b905060006133778383612e83565b306000908152600160205260409020549091506133949082612676565b3060009081526001602090815260408083209390935560059052205460ff16156133e357306000908152600260205260409020546133d29084612676565b306000908152600260205260409020555b505050565b6012546133f59083612d0e565b6012556013546134059082612676565b6013555050565b60006020828403121561341e57600080fd5b8135610cfa8161376a565b60006020828403121561343b57600080fd5b8151610cfa8161376a565b6000806040838503121561345957600080fd5b82356134648161376a565b915060208301356134748161376a565b809150509250929050565b60008060006060848603121561349457600080fd5b833561349f8161376a565b925060208401356134af8161376a565b929592945050506040919091013590565b600080604083850312156134d357600080fd5b82356134de8161376a565b946020939093013593505050565b6000602082840312156134fe57600080fd5b5035919050565b60006020828403121561351757600080fd5b5051919050565b6000806040838503121561353157600080fd5b823591506020830135801515811461347457600080fd5b60008060006060848603121561355d57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561358c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156135d5578581018301518582016040015282016135b9565b818111156135e7576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156136925784516001600160a01b03168352938301939183019160010161366d565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156136c6576136c661373e565b500190565b6000826136e857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156137075761370761373e565b500290565b60008282101561371e5761371e61373e565b500390565b60006000198214156137375761373761373e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461377f57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e0c71cbd9376ea6dc108edd983851d8dcec51786d4b3ab17dc2f7e00811e25f664736f6c63430008070033
Deployed Bytecode Sourcemap
14955:27557:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19901:92;;;;;;;;;;-1:-1:-1;19980:5:0;;;;;;;;;;;-1:-1:-1;;;19980:5:0;;;;19901:92;;;;19980:5;19901:92;:::i;:::-;;;;;;;;20825:161;;;;;;;;;;-1:-1:-1;20825:161:0;;;;;:::i;:::-;;:::i;:::-;;;4621:14:1;;4614:22;4596:41;;4584:2;4569:18;20825:161:0;4456:187:1;15594:40:0;;;;;;;;;;-1:-1:-1;15594:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20198:95;;;;;;;;;;-1:-1:-1;;;;20198:95:0;;;12055:25:1;;;12043:2;12028:18;20198:95:0;11909:177:1;38401:140:0;;;;;;;;;;-1:-1:-1;38401:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;38501:32:0;38477:4;38501:32;;;:23;:32;;;;;;;;;38401:140;17484:28;;;;;;;;;;-1:-1:-1;17484:28:0;;;;;;;;;;;17367:33;;;;;;;;;;;;;;;;20992:329;;;;;;;;;;-1:-1:-1;20992:329:0;;;;;:::i;:::-;;:::i;38916:110::-;;;;;;;;;;;;;:::i;:::-;;22326:241;;;;;;;;;;-1:-1:-1;22326:241:0;;;;;:::i;:::-;;:::i;20101:91::-;;;;;;;;;;-1:-1:-1;20101:91:0;;17840:2;13218:36:1;;13206:2;13191:18;20101:91:0;13076:184:1;38675:130:0;;;;;;;;;;-1:-1:-1;38675:130:0;;;;;:::i;:::-;;:::i;38808:102::-;;;;;;;;;;-1:-1:-1;38808:102:0;;;;;:::i;:::-;;:::i;21327:218::-;;;;;;;;;;-1:-1:-1;21327:218:0;;;;;:::i;:::-;;:::i;17151:35::-;;;;;;;;;;;;;;;;15552:38;;;;;;;;;;-1:-1:-1;15552:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;37870:119;;;;;;;;;;-1:-1:-1;37870:119:0;;;;;:::i;:::-;;:::i;37377:113::-;;;;;;;;;;-1:-1:-1;37377:113:0;;;;;:::i;:::-;;:::i;21876:444::-;;;;;;;;;;-1:-1:-1;21876:444:0;;;;;:::i;:::-;;:::i;41541:155::-;;;;;;;;;;;;;:::i;17662:41::-;;;;;;;;;;-1:-1:-1;17662:41:0;;;;-1:-1:-1;;;17662:41:0;;;;;;39032:120;;;;;;;;;;;;;:::i;41220:315::-;;;;;;;;;;;;;:::i;41702:70::-;;;;;;;;;;;;;:::i;37614:124::-;;;;;;;;;;-1:-1:-1;37614:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;37703:27:0;37679:4;37703:27;;;:18;:27;;;;;;;;;37614:124;37744:120;;;;;;;;;;-1:-1:-1;37744:120:0;;;;;:::i;:::-;;:::i;17278:35::-;;;;;;;;;;;;;;;;39158:71;;;;;;;;;;;;;:::i;17234:37::-;;;;;;;;;;;;;;;;17107:34;;;;;;;;;;;;;;;;39411:93;;;;;;;;;;;;;:::i;38267:128::-;;;;;;;;;;-1:-1:-1;38267:128:0;;;;;:::i;:::-;;:::i;41860:649::-;;;;;;;;;;-1:-1:-1;41860:649:0;;;;;:::i;:::-;;:::i;37995:131::-;;;;;;;;;;-1:-1:-1;37995:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;38090:28:0;38066:4;38090:28;;;:19;:28;;;;;;;;;37995:131;39314:91;;;;;;;;;;;;;:::i;20299:198::-;;;;;;;;;;-1:-1:-1;20299:198:0;;;;;:::i;:::-;;:::i;3250:148::-;;;;;;;;;;;;;:::i;17561:31::-;;;;;;;;;;-1:-1:-1;17561:31:0;;;;;;;;;;;17443:34;;;;;;;;;;-1:-1:-1;17443:34:0;;;;;;;;38132:129;;;;;;;;;;-1:-1:-1;38132:129:0;;;;;:::i;:::-;;:::i;39706:83::-;;;;;;;;;;;;;:::i;40225:346::-;;;;;;;;;;-1:-1:-1;40225:346:0;;;;;:::i;:::-;;:::i;41778:76::-;;;;;;;;;;;;;:::i;15850:24::-;;;;;;;;;;-1:-1:-1;15850:24:0;;;;-1:-1:-1;;;;;15850:24:0;;;;;;-1:-1:-1;;;;;3491:32:1;;;3473:51;;3461:2;3446:18;15850:24:0;3327:203:1;17024:33:0;;;;;;;;;;;;;;;;3026:87;;;;;;;;;;-1:-1:-1;3072:7:0;3099:6;-1:-1:-1;;;;;3099:6:0;3026:87;;17193:34;;;;;;;;;;;;;;;;40577:319;;;;;;;;;;-1:-1:-1;40577:319:0;;;;;:::i;:::-;;:::i;17064:36::-;;;;;;;;;;;;;;;;15806:37;;;;;;;;;;-1:-1:-1;15806:37:0;;;;-1:-1:-1;;;;;15806:37:0;;;21551:319;;;;;;;;;;-1:-1:-1;21551:319:0;;;;;:::i;:::-;;:::i;39886:333::-;;;;;;;;;;-1:-1:-1;39886:333:0;;;;;:::i;:::-;;:::i;20503:167::-;;;;;;;;;;-1:-1:-1;20503:167:0;;;;;:::i;:::-;;:::i;39795:85::-;;;;;;;;;;;;;:::i;39510:91::-;;;;;;;;;;;;;:::i;39607:93::-;;;;;;;;;;;;;:::i;17407:27::-;;;;;;;;;;;;;;;;20676:143;;;;;;;;;;-1:-1:-1;20676:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20784:18:0;;;20757:7;20784:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20676:143;39232:76;;;;;;;;;;;;;:::i;17323:37::-;;;;;;;;;;;;;;;;37496:112;;;;;;;;;;-1:-1:-1;37496:112:0;;;;;:::i;:::-;;:::i;16983:34::-;;;;;;;;;;;;;;;;3404:195;;;;;;;;;;-1:-1:-1;3404:195:0;;;;;:::i;:::-;;:::i;40902:312::-;;;;;;;;;;-1:-1:-1;40902:312:0;;;;;:::i;:::-;;:::i;38547:125::-;;;;;;;;;;-1:-1:-1;38547:125:0;;;;;:::i;:::-;;:::i;20825:161::-;20900:4;20917:39;169:10;20940:7;20949:6;20917:8;:39::i;:::-;-1:-1:-1;20974:4:0;20825:161;;;;;:::o;20992:329::-;21088:4;21105:36;21115:6;21123:9;21134:6;21105:9;:36::i;:::-;21152:139;21161:6;169:10;21191:89;21229:6;21191:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21191:19:0;;;;;;:11;:19;;;;;;;;169:10;21191:33;;;;;;;;;;:37;:89::i;:::-;21152:8;:139::i;:::-;-1:-1:-1;21309:4:0;20992:329;;;;;:::o;38916:110::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;;;;;;;;;38971:8:::1;:15:::0;;-1:-1:-1;;38997:21:0;;;;;38916:110::o;22326:241::-;22393:7;22432;;22421;:18;;22413:61;;;;-1:-1:-1;;;22413:61:0;;8037:2:1;22413:61:0;;;8019:21:1;8076:2;8056:18;;;8049:30;8115:32;8095:18;;;8088:60;8165:18;;22413:61:0;7835:354:1;22413:61:0;22485:19;22507:10;:8;:10::i;:::-;22485:32;-1:-1:-1;22535:24:0;:7;22485:32;22535:11;:24::i;:::-;22528:31;22326:241;-1:-1:-1;;;22326:241:0:o;38675:130::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38753:12:0;::::1;;::::0;;;:5:::1;:12;::::0;;;;;::::1;;38745:21;;;::::0;::::1;;-1:-1:-1::0;;;;;38777:12:0::1;38792:5;38777:12:::0;;;:5:::1;:12;::::0;;;;:20;;-1:-1:-1;;38777:20:0::1;::::0;;38675:130::o;38808:102::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38877:17:0::1;38897:5;38877:17:::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;38877:25:0::1;::::0;;38808:102::o;21327:218::-;169:10;21415:4;21464:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21464:34:0;;;;;;;;;;21415:4;;21432:83;;21455:7;;21464:50;;21503:10;21464:38;:50::i;37870:119::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37945:28:0::1;37976:5;37945:28:::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;37945:36:0::1;::::0;;37870:119::o;37377:113::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37448:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;37448:34:0::1;37478:4;37448:34;::::0;;37377:113::o;21876:444::-;21967:7;-1:-1:-1;;;21995:7:0;:18;;21987:59;;;;-1:-1:-1;;;21987:59:0;;6798:2:1;21987:59:0;;;6780:21:1;6837:2;6817:18;;;6810:30;6876;6856:18;;;6849:58;6924:18;;21987:59:0;6596:352:1;21987:59:0;22062:17;22057:256;;22097:15;22126:19;22137:7;22126:10;:19::i;:::-;-1:-1:-1;22096:49:0;;-1:-1:-1;22160:14:0;;-1:-1:-1;;;;;22160:14:0;22057:256;22210:23;22245:19;22256:7;22245:10;:19::i;:::-;-1:-1:-1;22207:57:0;;-1:-1:-1;22279:22:0;;-1:-1:-1;;;;;22279:22:0;41541:155;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;41639:9:::1;::::0;41631:57:::1;::::0;41595:12:::1;::::0;-1:-1:-1;;;;;41639:9:0::1;::::0;41662:21:::1;::::0;41595:12;41631:57;41595:12;41631:57;41662:21;41639:9;41631:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;41541:155:0:o;39032:120::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39095:8:::1;:16:::0;;-1:-1:-1;;39122:22:0;;;39032:120::o;41220:315::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;41275:23:::1;41301:24;41319:4;41301:9;:24::i;:::-;41275:50:::0;-1:-1:-1;41377:5:0::1;41363:11;-1:-1:-1::0;;;41373:1:0::1;41363:11;:::i;:::-;:19;;;;:::i;:::-;41344:15;:38;;41336:116;;;::::0;-1:-1:-1;;;41336:116:0;;7155:2:1;41336:116:0::1;::::0;::::1;7137:21:1::0;7194:2;7174:18;;;7167:30;7233:34;7213:18;;;7206:62;7304:34;7284:18;;;7277:62;-1:-1:-1;;;7355:19:1;;;7348:32;7397:19;;41336:116:0::1;6953:469:1::0;41336:116:0::1;41463:12;:10;:12::i;:::-;41491:36;::::0;41511:15:::1;12055:25:1::0;;41491:36:0::1;::::0;12043:2:1;12028:18;41491:36:0::1;;;;;;;41264:271;41220:315::o:0;41702:70::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;41750:7:::1;:14:::0;;-1:-1:-1;;41750:14:0::1;::::0;::::1;::::0;;41702:70::o;37744:120::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37821:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;37821:35:0::1;37852:4;37821:35;::::0;;37744:120::o;39158:71::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39202:15:::1;:22:::0;;-1:-1:-1;;39202:22:0::1;::::0;::::1;::::0;;39158:71::o;39411:93::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39467:21:::1;:29:::0;;-1:-1:-1;;39467:29:0::1;::::0;;39411:93::o;38267:128::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38347:32:0::1;38382:5;38347:32:::0;;;:23:::1;:32;::::0;;;;:40;;-1:-1:-1;;38347:40:0::1;::::0;;38267:128::o;41860:649::-;41931:4;3099:6;;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;41966:2:::1;41955:7;:13;;41947:68;;;::::0;-1:-1:-1;;;41947:68:0;;10933:2:1;41947:68:0::1;::::0;::::1;10915:21:1::0;10972:2;10952:18;;;10945:30;11011:34;10991:18;;;10984:62;-1:-1:-1;;;11062:18:1;;;11055:40;11112:19;;41947:68:0::1;10731:406:1::0;41947:68:0::1;42072:9;::::0;42057:25:::1;::::0;-1:-1:-1;;;42057:25:0;;-1:-1:-1;;;;;42072:9:0;;::::1;42057:25;::::0;::::1;3473:51:1::0;42026:28:0::1;::::0;42057:4:::1;::::0;:14:::1;::::0;3446:18:1;;42057:25:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42026:56:::0;-1:-1:-1;42093:20:0::1;42149:5;42116:30;42139:7:::0;42026:56;42116:30:::1;:::i;:::-;:38;;;;:::i;:::-;42093:61:::0;-1:-1:-1;42169:16:0;;42165:88:::1;;42211:9;::::0;42222:4:::1;::::0;42201:40:::1;::::0;-1:-1:-1;;;;;42211:9:0;;::::1;::::0;42222:4:::1;42228:12:::0;42201:9:::1;:40::i;:::-;42293:4;::::0;42283:15:::1;::::0;-1:-1:-1;;;;;42293:4:0::1;42283:9;:15::i;:::-;42263:17;:35:::0;42353:5:::1;42338:12;-1:-1:-1::0;;;42348:2:0::1;42338:12;:::i;:::-;:20;;;;:::i;:::-;42317:17;;:41;;42309:90;;;::::0;-1:-1:-1;;;42309:90:0;;8808:2:1;42309:90:0::1;::::0;::::1;8790:21:1::0;8847:2;8827:18;;;8820:30;8886:34;8866:18;;;8859:62;-1:-1:-1;;;8937:18:1;;;8930:34;8981:19;;42309:90:0::1;8606:400:1::0;42309:90:0::1;42447:9;::::0;42468:11:::1;::::0;;-1:-1:-1;;;;;;42468:11:0;;;;-1:-1:-1;;;;;42447:9:0;;::::1;::::0;;;42468::::1;::::0;:11:::1;::::0;;::::1;::::0;42410:19:::1;::::0;42468:11;;;;;;;42410:19;42447:9;42468:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;42497:4:0::1;::::0;41860:649;-1:-1:-1;;;;;;;;41860:649:0:o;39314:91::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39369:21:::1;:28:::0;;-1:-1:-1;;39369:28:0::1;-1:-1:-1::0;;;39369:28:0::1;::::0;;39314:91::o;20299:198::-;-1:-1:-1;;;;;20389:20:0;;20365:7;20389:20;;;:11;:20;;;;;;;;20385:49;;;-1:-1:-1;;;;;;20418:16:0;;;;;:7;:16;;;;;;;20299:198::o;20385:49::-;-1:-1:-1;;;;;20472:16:0;;;;;;:7;:16;;;;;;20452:37;;:19;:37::i;3250:148::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;3357:1:::1;3341:6:::0;;3320:40:::1;::::0;-1:-1:-1;;;;;3341:6:0;;::::1;::::0;3320:40:::1;::::0;3357:1;;3320:40:::1;3388:1;3371:19:::0;;-1:-1:-1;;;;;;3371:19:0::1;::::0;;3250:148::o;38132:129::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38214:32:0::1;;::::0;;;:23:::1;:32;::::0;;;;:39;;-1:-1:-1;;38214:39:0::1;38249:4;38214:39;::::0;;38132:129::o;39706:83::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39763:11:::1;:18:::0;;-1:-1:-1;;39763:18:0::1;::::0;::::1;::::0;;39706:83::o;40225:346::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;40384:18:::1;:40:::0;;;;40435:15:::1;:34:::0;;;;40480:16:::1;:36:::0;40527:16:::1;:36:::0;40225:346::o;41778:76::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;41831:7:::1;:15:::0;;-1:-1:-1;;41831:15:0::1;::::0;;41778:76::o;40577:319::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40671:31:0;::::1;40663:63;;;::::0;-1:-1:-1;;;40663:63:0;;5687:2:1;40663:63:0::1;::::0;::::1;5669:21:1::0;5726:2;5706:18;;;5699:30;-1:-1:-1;;;5745:18:1;;;5738:49;5804:18;;40663:63:0::1;5485:343:1::0;40663:63:0::1;40756:15;::::0;;-1:-1:-1;;;;;40756:15:0;;::::1;40775:5;40737:35:::0;;;:18:::1;:35;::::0;;;;;:43;;-1:-1:-1;;40737:43:0;;::::1;::::0;;;40791:44;;-1:-1:-1;;;;;;40791:44:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;40846:35;;;;;:42;;;;::::1;-1:-1:-1::0;40846:42:0::1;::::0;;40577:319::o;21551:::-;21644:4;21661:179;169:10;21711:7;21733:96;21772:15;21733:96;;;;;;;;;;;;;;;;;169:10;21733:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21733:34:0;;;;;;;;;;;;:38;:96::i;39886:333::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;40040:17:::1;:38:::0;;;;40089:14:::1;:32:::0;;;;40132:15:::1;:34:::0;40177:15:::1;:34:::0;39886:333::o;20503:167::-;20581:4;20598:42;169:10;20622:9;20633:6;20598:9;:42::i;39795:85::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39853:11:::1;:19:::0;;-1:-1:-1;;39853:19:0::1;::::0;;39795:85::o;39510:91::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39572:14:::1;:21:::0;;-1:-1:-1;;39572:21:0::1;39589:4;39572:21;::::0;;39510:91::o;39607:93::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39670:14:::1;:22:::0;;-1:-1:-1;;39670:22:0::1;::::0;;39607:93::o;39232:76::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;39280:15:::1;:23:::0;;-1:-1:-1;;39280:23:0::1;::::0;;39232:76::o;37496:112::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37565:27:0::1;37595:5;37565:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;37565:35:0::1;::::0;;37496:112::o;3404:195::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3493:22:0;::::1;3485:78;;;::::0;-1:-1:-1;;;3485:78:0;;8396:2:1;3485:78:0::1;::::0;::::1;8378:21:1::0;8435:2;8415:18;;;8408:30;8474:34;8454:18;;;8447:62;-1:-1:-1;;;8525:18:1;;;8518:41;8576:19;;3485:78:0::1;8194:407:1::0;3485:78:0::1;3574:6;:17:::0;;-1:-1:-1;;;;;;3574:17:0::1;-1:-1:-1::0;;;;;3574:17:0;;;::::1;::::0;;;::::1;::::0;;3404:195::o;40902:312::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40994:30:0;::::1;40986:62;;;::::0;-1:-1:-1;;;40986:62:0;;5687:2:1;40986:62:0::1;::::0;::::1;5669:21:1::0;5726:2;5706:18;;;5699:30;-1:-1:-1;;;5745:18:1;;;5738:49;5804:18;;40986:62:0::1;5485:343:1::0;40986:62:0::1;41078:14;::::0;;-1:-1:-1;;;;;41078:14:0;;::::1;41096:5;41059:34:::0;;;:18:::1;:34;::::0;;;;;:42;;-1:-1:-1;;41059:42:0;;::::1;::::0;;;41112;;-1:-1:-1;;;;;;41112:42:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;41165:34;;;;;:41;;;;::::1;-1:-1:-1::0;41165:41:0::1;::::0;;40902:312::o;38547:125::-;3072:7;3099:6;-1:-1:-1;;;;;3099:6:0;169:10;3159:23;3151:73;;;;-1:-1:-1;;;3151:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38621:12:0;::::1;;::::0;;;:5:::1;:12;::::0;;;;;::::1;;38620:13;38612:22;;;::::0;::::1;;-1:-1:-1::0;;;;;38645:12:0::1;;::::0;;;:5:::1;:12;::::0;;;;:19;;-1:-1:-1;;38645:19:0::1;38660:4;38645:19;::::0;;38547:125::o;25885:325::-;-1:-1:-1;;;;;25976:19:0;;25968:64;;;;-1:-1:-1;;;25968:64:0;;11750:2:1;25968:64:0;;;11732:21:1;;;11769:18;;;11762:30;11828:34;11808:18;;;11801:62;11880:18;;25968:64:0;11548:356:1;25968:64:0;-1:-1:-1;;;;;26051:21:0;;26043:64;;;;-1:-1:-1;;;26043:64:0;;6439:2:1;26043:64:0;;;6421:21:1;6478:2;6458:18;;;6451:30;6517:32;6497:18;;;6490:60;6567:18;;26043:64:0;6237:354:1;26043:64:0;-1:-1:-1;;;;;26118:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26170:32;;12055:25:1;;;26170:32:0;;12028:18:1;26170:32:0;;;;;;;25885:325;;;:::o;26216:4321::-;-1:-1:-1;;;;;26304:18:0;;26296:68;;;;-1:-1:-1;;;26296:68:0;;11344:2:1;26296:68:0;;;11326:21:1;11383:2;11363:18;;;11356:30;11422:34;11402:18;;;11395:62;-1:-1:-1;;;11473:18:1;;;11466:35;11518:19;;26296:68:0;11142:401:1;26296:68:0;-1:-1:-1;;;;;26383:16:0;;26375:64;;;;-1:-1:-1;;;26375:64:0;;6035:2:1;26375:64:0;;;6017:21:1;6074:2;6054:18;;;6047:30;6113:34;6093:18;;;6086:62;-1:-1:-1;;;6164:18:1;;;6157:33;6207:19;;26375:64:0;5833:399:1;26375:64:0;26467:1;26458:6;:10;26450:64;;;;-1:-1:-1;;;26450:64:0;;10523:2:1;26450:64:0;;;10505:21:1;10562:2;10542:18;;;10535:30;10601:34;10581:18;;;10574:62;-1:-1:-1;;;10652:18:1;;;10645:39;10701:19;;26450:64:0;10321:405:1;26450:64:0;-1:-1:-1;;;;;26534:11:0;;;;;;:5;:11;;;;;;;;26533:12;26525:21;;;;;;26561:11;;;;;;;:19;;26576:4;26561:19;:48;;;;-1:-1:-1;;;;;;26586:23:0;;;;;;:19;:23;;;;;;;;26584:25;26561:48;26557:169;;;26660:10;;26650:6;26634:13;26644:2;26634:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;26626:88;;;;-1:-1:-1;;;26626:88:0;;7629:2:1;26626:88:0;;;7611:21:1;7668:2;7648:18;;;7641:30;7707:34;7687:18;;;7680:62;-1:-1:-1;;;7758:18:1;;;7751:37;7805:19;;26626:88:0;7427:403:1;26626:88:0;26740:7;;;;;;;:15;;26751:4;26740:15;:32;;;;-1:-1:-1;3072:7:0;3099:6;-1:-1:-1;;;;;26759:13:0;;;3099:6;;26759:13;;26740:32;:53;;;;-1:-1:-1;26784:9:0;;-1:-1:-1;;;;;26776:17:0;;;26784:9;;26776:17;;26740:53;26736:100;;;26809:20;;26801:29;;;;;;26849:15;;;;;;;:23;;26868:4;26849:23;26846:853;;;27000:11;:26;;-1:-1:-1;;;;;;27000:26:0;26942:42;27000:26;;;;;;27071:22;;;-1:-1:-1;;;27071:22:0;;;;26942:42;;27071:20;;:22;;;;;;;;;;;;;;26942:42;27071:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27053:49:0;;27111:4;27118:12;-1:-1:-1;;;;;27118:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27053:85;;-1:-1:-1;;;;;;27053:85:0;;;;;;;-1:-1:-1;;;;;3765:15:1;;;27053:85:0;;;3747:34:1;3817:15;;3797:18;;;3790:43;3682:18;;27053:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27041:9;:97;;-1:-1:-1;;;;;;27041:97:0;-1:-1:-1;;;;;27041:97:0;;;;;;;;;;27174:12;27153:18;:33;27222:27;:15;27240:9;27222:27;:::i;:::-;27201:18;:48;-1:-1:-1;27292:9:0;;;-1:-1:-1;;;;;27292:9:0;;;27264:39;;;;:19;:39;;;;;;;;:46;;-1:-1:-1;;27264:46:0;;;27306:4;27264:46;;;;;;27353:11;;;;;27325:41;;;;;:48;;;;;;;;27420:11;;;27388:45;;:23;:45;;;;;;:52;;;;;;;;27487:9;;;;;27455:43;;;;;:50;;;;;;;;;;27520:8;:16;;-1:-1:-1;;27664:23:0;27584:28;27664:23;;;26846:853;27712:8;;;;;;;27709:1073;;;3072:7;3099:6;-1:-1:-1;;;;;27740:15:0;;;3099:6;;27740:15;;;;:32;;-1:-1:-1;3072:7:0;3099:6;-1:-1:-1;;;;;27759:13:0;;;3099:6;;27759:13;;27740:32;:52;;;;-1:-1:-1;;;;;;27776:16:0;;;;27740:52;:66;;;;-1:-1:-1;27802:4:0;;-1:-1:-1;;;;;27796:10:0;;;27802:4;;27796:10;;27740:66;:87;;;;-1:-1:-1;27811:16:0;;;;;;;27810:17;27740:87;27736:1035;;;3072:7;3099:6;-1:-1:-1;;;;;27851:15:0;;;3099:6;;27851:15;;;;:34;;-1:-1:-1;27876:9:0;;-1:-1:-1;;;;;27870:15:0;;;27876:9;;27870:15;;27851:34;27848:273;;;27915:6;27910:192;27931:1;27927;:5;27910:192;;;28002:1;27981:18;;:22;;;;:::i;:::-;27965:12;:38;27962:117;;;-1:-1:-1;;;;;28032:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;28032:19:0;28047:4;28032:19;;;27962:117;27934:3;;;;:::i;:::-;;;;27910:192;;;;27848:273;28143:14;;;;28139:409;;;3072:7;3099:6;-1:-1:-1;;;;;28185:13:0;;;3099:6;;28185:13;;;;:43;;-1:-1:-1;28216:11:0;;-1:-1:-1;;;;;28202:26:0;;;28216:11;;28202:26;;28185:43;:71;;;;-1:-1:-1;28246:9:0;;-1:-1:-1;;;;;28232:24:0;;;28246:9;;28232:24;;28185:71;28181:348;;;28321:9;28292:39;;;;:28;:39;;;;;;28334:12;-1:-1:-1;28284:140:0;;;;-1:-1:-1;;;28284:140:0;;9635:2:1;28284:140:0;;;9617:21:1;9674:2;9654:18;;;9647:30;9713:34;9693:18;;;9686:62;9784:34;9764:18;;;9757:62;-1:-1:-1;;;9835:19:1;;;9828:40;9885:19;;28284:140:0;9433:477:1;28284:140:0;28480:9;28451:39;;;;:28;:39;;;;;28493:12;28451:54;;28181:348;28578:9;;-1:-1:-1;;;;;28570:17:0;;;28578:9;;28570:17;:49;;;;-1:-1:-1;;;;;;28592:27:0;;;;;;:23;:27;;;;;;;;28591:28;28570:49;28566:190;;;28666:12;;28656:6;:22;;28648:88;;;;-1:-1:-1;;;28648:88:0;;9213:2:1;28648:88:0;;;9195:21:1;9252:2;9232:18;;;9225:30;9291:34;9271:18;;;9264:62;-1:-1:-1;;;9342:18:1;;;9335:51;9403:19;;28648:88:0;9011:417:1;28648:88:0;28792:25;28820:42;28843:18;;28820;;:22;;:42;;;;:::i;:::-;28792:70;;28873:28;28904:24;28922:4;28904:9;:24::i;:::-;28994:11;;29021:16;;28873:55;;-1:-1:-1;28970:35:0;;;;29021:16;;;;;29020:17;:42;;;;-1:-1:-1;29041:21:0;;-1:-1:-1;;;29041:21:0;;;;29020:42;:70;;;;-1:-1:-1;29076:9:0;;29089:1;;29066:20;;-1:-1:-1;;;;;29076:9:0;29066;:20::i;:::-;:24;29020:70;:95;;;;;29114:1;29094:17;:21;29020:95;:122;;;;-1:-1:-1;;;;;;29120:22:0;;;;;;:18;:22;;;;;;;;29119:23;29020:122;:151;;;;-1:-1:-1;;;;;;29147:24:0;;;;;;:18;:24;;;;;;;;29146:25;29020:151;:170;;;;-1:-1:-1;29181:9:0;;-1:-1:-1;;;;;29175:15:0;;;29181:9;;29175:15;29020:170;:197;;;;;29194:23;29020:197;29016:246;;;29234:12;:10;:12::i;:::-;-1:-1:-1;;;;;29306:24:0;;29272:12;29306:24;;;:18;:24;;;;;;29287:4;;29306:24;;;:50;;-1:-1:-1;;;;;;29334:22:0;;;;;;:18;:22;;;;;;;;29306:50;29302:1176;;;-1:-1:-1;16437:1:0;29403:15;:26;29383:5;29302:1176;;;29474:9;;-1:-1:-1;;;;;29466:17:0;;;29474:9;;29466:17;29462:1005;;;29504:14;:12;:14::i;:::-;29553:15;;29537:13;:31;29602:14;;29587:12;:29;29653:17;;29635:15;:35;29705:15;;29689:13;:31;16353:1;29739:15;:21;29462:1005;;;29806:9;;-1:-1:-1;;;;;29800:15:0;;;29806:9;;29800:15;29796:671;;;29836:14;:12;:14::i;:::-;29885:16;;29869:13;:32;29935:15;;29920:12;:30;29987:18;;29969:15;:36;30040:16;;30024:13;:32;16393:1;30075:15;:22;-1:-1:-1;;;;;30119:14:0;;-1:-1:-1;30119:14:0;;;-1:-1:-1;30119:14:0;;;;;;;;:55;;;;;30159:15;30137:18;;:37;;30119:55;30116:193;;;30214:13;;:18;;30230:2;30214:18;:::i;:::-;30198:13;:34;30271:13;;:18;;30287:2;30271:18;:::i;:::-;30255:13;:34;30116:193;29796:671;;;-1:-1:-1;;;;;30358:14:0;;;;;;:8;:14;;;;;;;;30357:15;30349:24;;;;;;30392:14;:12;:14::i;:::-;16437:1;30425:15;:26;29796:671;30488:41;30503:4;30509:2;30513:6;30521:7;30488:14;:41::i;:::-;26285:4252;;;;26216:4321;;;:::o;2075:206::-;2161:7;2222:12;2214:6;;;;2206:29;;;;-1:-1:-1;;;2206:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2257:5:0;;;2075:206::o;23909:164::-;23951:7;23972:15;23989;24008:19;:17;:19::i;:::-;23971:56;;-1:-1:-1;23971:56:0;-1:-1:-1;24045:20:0;23971:56;;24045:11;:20::i;:::-;24038:27;;;;23909:164;:::o;1867:98::-;1925:7;1952:5;1956:1;1952;:5;:::i;1555:98::-;1613:7;1640:5;1644:1;1640;:5;:::i;22726:414::-;22785:7;22793;22801;22809;22817;22825;22846:23;22871:12;22885:18;22907:20;22919:7;22907:11;:20::i;:::-;22845:82;;;;;;22939:15;22956:23;22981:12;22997:50;23009:7;23018:4;23024:10;23036;:8;:10::i;:::-;22997:11;:50::i;:::-;22938:109;;;;-1:-1:-1;22938:109:0;;-1:-1:-1;23098:15:0;;-1:-1:-1;23115:4:0;;-1:-1:-1;23121:10:0;;-1:-1:-1;22726:414:0;;-1:-1:-1;;;;;22726:414:0:o;30543:1282::-;18319:16;:23;;-1:-1:-1;;18319:23:0;;;;;;30622:24:::1;30640:4;30622:9;:24::i;:::-;30596:50;;30657:25;30727:17;;30706:18;;30685;;:39;;;;:::i;:::-;:59;;;;:::i;:::-;30657:87;;30755:27;30785:25;30808:1;30785:18;;:22;;:25;;;;:::i;:::-;30755:55:::0;-1:-1:-1;30821:26:0::1;30850:40;:15:::0;30755:55;30850:19:::1;:40::i;:::-;30821:69:::0;-1:-1:-1;30929:21:0::1;30961:36;30821:69:::0;30961:16:::1;:36::i;:::-;31009:18;31030:44;:21;31056:17:::0;31030:25:::1;:44::i;:::-;31009:65;;31085:23;31111:57;31150:17;31111:34;31126:18;;31111:10;:14;;:34;;;;:::i;:::-;:38:::0;::::1;:57::i;:::-;31085:83;;31179:22;31204:56;31242:17;31204:33;31219:17;;31204:10;:14;;:33;;;;:::i;:56::-;31179:81:::0;-1:-1:-1;31271:23:0::1;31297:51;31179:81:::0;31297:31:::1;:10:::0;31312:15;31297:14:::1;:31::i;:::-;:35:::0;::::1;:51::i;:::-;31380:1;31359:18;:22:::0;;;31392:17:::1;:21:::0;;;31424:18:::1;:22:::0;;;31483:15:::1;::::0;31475:57:::1;::::0;31271:77;;-1:-1:-1;31380:1:0;;-1:-1:-1;;;;;31483:15:0;;::::1;::::0;31512;;31380:1;31475:57;31380:1;31475:57;31512:15;31483;31475:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;31564:14:0::1;::::0;31556:55:::1;::::0;31457:75;;-1:-1:-1;;;;;;31564:14:0::1;::::0;31592;;31556:55:::1;::::0;;;31592:14;31564;31556:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31543:68;;;;;31622:50;31635:19;31656:15;31622:12;:50::i;:::-;31710:10;31686:21;:34;31683:135;;;31757:9;::::0;31749:57:::1;::::0;-1:-1:-1;;;;;31757:9:0;;::::1;::::0;31780:21:::1;::::0;31749:57:::1;::::0;;;31780:21;31757:9;31749:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;31736:70:0;;-1:-1:-1;;31683:135:0::1;-1:-1:-1::0;;18365:16:0;:24;;-1:-1:-1;;18365:24:0;;;-1:-1:-1;;;;;;;;30543:1282:0:o;32733:457::-;32780:15;;:20;:42;;;;-1:-1:-1;32804:13:0;;:18;32780:42;:64;;;;-1:-1:-1;32826:13:0;;:18;32780:64;:85;;;;-1:-1:-1;32848:12:0;;:17;32780:85;32776:98;;;32733:457::o;32776:98::-;32908:13;;;32884:21;:37;32955:12;;;32932:20;:35;33002:13;;;32978:21;:37;33052:15;;;33026:23;:41;-1:-1:-1;33080:17:0;;;;33108:16;;;;33135:19;;;;33165:17;32733:457::o;33437:788::-;33547:7;33542:28;;33556:14;:12;:14::i;:::-;-1:-1:-1;;;;;33585:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;33609:22:0;;;;;;:11;:22;;;;;;;;33608:23;33585:46;33581:597;;;33648:48;33670:6;33678:9;33689:6;33648:21;:48::i;:::-;33581:597;;;-1:-1:-1;;;;;33719:19:0;;;;;;:11;:19;;;;;;;;33718:20;:46;;;;-1:-1:-1;;;;;;33742:22:0;;;;;;:11;:22;;;;;;;;33718:46;33714:464;;;33781:46;33801:6;33809:9;33820:6;33781:19;:46::i;33714:464::-;-1:-1:-1;;;;;33850:19:0;;;;;;:11;:19;;;;;;;;33849:20;:47;;;;-1:-1:-1;;;;;;33874:22:0;;;;;;:11;:22;;;;;;;;33873:23;33849:47;33845:333;;;33913:44;33931:6;33939:9;33950:6;33913:17;:44::i;33845:333::-;-1:-1:-1;;;;;33979:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;34002:22:0;;;;;;:11;:22;;;;;;;;33979:45;33975:203;;;34041:48;34063:6;34071:9;34082:6;34041:21;:48::i;33975:203::-;34122:44;34140:6;34148:9;34159:6;34122:17;:44::i;:::-;34193:7;34188:29;;34202:15;33256:21;;33240:13;:37;33303:20;;33288:12;:35;33352:23;;33334:15;:41;33402:21;;33386:13;:37;33196:235;24079:556;24177:7;;24130;;;;-1:-1:-1;;;24130:7:0;24231:289;24255:9;:16;24251:20;;24231:289;;;24321:7;24297;:21;24305:9;24315:1;24305:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24305:12:0;24297:21;;;;;;;;;;;;;:31;;:66;;;24356:7;24332;:21;24340:9;24350:1;24340:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24340:12:0;24332:21;;;;;;;;;;;;;:31;24297:66;24293:97;;;-1:-1:-1;;24373:7:0;;;-1:-1:-1;;;15996:13:0;-1:-1:-1;24079:556:0;-1:-1:-1;;24079:556:0:o;24293:97::-;24415:34;24427:7;:21;24435:9;24445:1;24435:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24435:12:0;24427:21;;;;;;;;;;;;;24415:7;;:11;:34::i;:::-;24405:44;;24474:34;24486:7;:21;24494:9;24504:1;24494:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24494:12:0;24486:21;;;;;;;;;;;;;24474:7;;:11;:34::i;:::-;24464:44;-1:-1:-1;24273:3:0;;;;:::i;:::-;;;;24231:289;;;-1:-1:-1;24544:7:0;;:20;;-1:-1:-1;;;24544:11:0;:20::i;:::-;24534:7;:30;24530:61;;;-1:-1:-1;;24574:7:0;;;-1:-1:-1;;;15996:13:0;-1:-1:-1;24079:556:0;-1:-1:-1;24079:556:0:o;24530:61::-;24610:7;;24619;;-1:-1:-1;24079:556:0;-1:-1:-1;24079:556:0:o;23146:327::-;23205:7;23213;23221;23241:12;23256:24;23272:7;23256:15;:24::i;:::-;23241:39;;23291:18;23312:30;23334:7;23312:21;:30::i;:::-;23291:51;-1:-1:-1;23353:23:0;23379:33;23291:51;23379:17;:7;23391:4;23379:11;:17::i;:33::-;23353:59;23448:4;;-1:-1:-1;23454:10:0;;-1:-1:-1;23146:327:0;;-1:-1:-1;;;23146:327:0:o;23479:424::-;23591:7;;;;23645:24;:7;23657:11;23645;:24::i;:::-;23627:42;-1:-1:-1;23680:12:0;23695:21;:4;23704:11;23695:8;:21::i;:::-;23680:36;-1:-1:-1;23727:18:0;23748:27;:10;23763:11;23748:14;:27::i;:::-;23727:48;-1:-1:-1;23786:23:0;23812:33;23727:48;23812:17;:7;23824:4;23812:11;:17::i;:33::-;23864:7;;;;-1:-1:-1;23890:4:0;;-1:-1:-1;23479:424:0;;-1:-1:-1;;;;;;;23479:424:0:o;1659:98::-;1717:7;1744:5;1748:1;1744;:5;:::i;31831:487::-;31921:16;;;31935:1;31921:16;;;;;;;;31897:21;;31921:16;;;;;;;;;;-1:-1:-1;31921:16:0;31897:40;;31966:4;31948;31953:1;31948:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31948:23:0;;;:7;;;;;;;;;;:23;;;;31992:11;;:18;;;-1:-1:-1;;;31992:18:0;;;;:11;;;;;:16;;:18;;;;;31948:7;;31992:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31982:4;31987:1;31982:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31982:28:0;;;:7;;;;;;;;;:28;32053:11;;32021:58;;32038:4;;32053:11;32067;32021:8;:58::i;:::-;32090:11;;:220;;-1:-1:-1;;;32090:220:0;;-1:-1:-1;;;;;32090:11:0;;;;:62;;:220;;32167:11;;32090;;32237:4;;32264;;32284:15;;32090:220;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31886:432;31831:487;:::o;1763:98::-;1821:7;1848:5;1852:1;1848;:5;:::i;32324:403::-;32437:11;;32405:58;;32422:4;;-1:-1:-1;;;;;32437:11:0;32451;32405:8;:58::i;:::-;32474:11;;32674:4;;32474:245;;-1:-1:-1;;;32474:245:0;;32542:4;32474:245;;;4185:34:1;4235:18;;;4228:34;;;32474:11:0;4278:18:1;;;4271:34;;;4321:18;;;4314:34;-1:-1:-1;;;;;32674:4:0;;;4364:19:1;;;4357:44;32693:15:0;4417:19:1;;;4410:35;32474:11:0;;;:27;;32509:9;;4119:19:1;;32474:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32324:403;;:::o;35494:650::-;35609:15;35639:23;35677:12;35704:23;35742:12;35769:18;35801:19;35812:7;35801:10;:19::i;:::-;-1:-1:-1;;;;;35849:15:0;;;;;;:7;:15;;;;;;35594:226;;-1:-1:-1;35594:226:0;;-1:-1:-1;35594:226:0;;-1:-1:-1;35594:226:0;-1:-1:-1;35594:226:0;-1:-1:-1;35594:226:0;-1:-1:-1;35849:28:0;;35869:7;35849:19;:28::i;:::-;-1:-1:-1;;;;;35831:15:0;;;;;;:7;:15;;;;;;;;:46;;;;35906:7;:15;;;;:28;;35926:7;35906:19;:28::i;:::-;-1:-1:-1;;;;;35888:15:0;;;;;;;:7;:15;;;;;;:46;;;;35966:18;;;;;;;:39;;35989:15;35966:22;:39::i;:::-;-1:-1:-1;;;;;35945:18:0;;;;;;:7;:18;;;;;:60;36016:26;36031:10;36016:14;:26::i;:::-;36053:23;36065:4;36071;36053:11;:23::i;:::-;36109:9;-1:-1:-1;;;;;36092:44:0;36101:6;-1:-1:-1;;;;;36092:44:0;;36120:15;36092:44;;;;12055:25:1;;12043:2;12028:18;;11909:177;36092:44:0;;;;;;;;35583:561;;;;;;35494:650;;;:::o;34826:662::-;34939:15;34969:23;35007:12;35034:23;35072:12;35099:18;35131:19;35142:7;35131:10;:19::i;:::-;-1:-1:-1;;;;;35179:15:0;;;;;;:7;:15;;;;;;34924:226;;-1:-1:-1;34924:226:0;;-1:-1:-1;34924:226:0;;-1:-1:-1;34924:226:0;-1:-1:-1;34924:226:0;-1:-1:-1;34924:226:0;-1:-1:-1;35179:28:0;;34924:226;35179:19;:28::i;:::-;-1:-1:-1;;;;;35161:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;35239:18;;;;;:7;:18;;;;;:39;;35262:15;35239:22;:39::i;:::-;-1:-1:-1;;;;;35218:18:0;;;;;;:7;:18;;;;;;;;:60;;;;35310:7;:18;;;;:39;;35333:15;35310:22;:39::i;34231:589::-;34342:15;34372:23;34410:12;34437:23;34475:12;34502:18;34534:19;34545:7;34534:10;:19::i;:::-;-1:-1:-1;;;;;34582:15:0;;;;;;:7;:15;;;;;;34327:226;;-1:-1:-1;34327:226:0;;-1:-1:-1;34327:226:0;;-1:-1:-1;34327:226:0;-1:-1:-1;34327:226:0;-1:-1:-1;34327:226:0;-1:-1:-1;34582:28:0;;34327:226;34582:19;:28::i;36150:721::-;36265:15;36295:23;36333:12;36360:23;36398:12;36425:18;36457:19;36468:7;36457:10;:19::i;:::-;-1:-1:-1;;;;;36505:15:0;;;;;;:7;:15;;;;;;36250:226;;-1:-1:-1;36250:226:0;;-1:-1:-1;36250:226:0;;-1:-1:-1;36250:226:0;-1:-1:-1;36250:226:0;-1:-1:-1;36250:226:0;-1:-1:-1;36505:28:0;;36525:7;36505:19;:28::i;:::-;-1:-1:-1;;;;;36487:15:0;;;;;;:7;:15;;;;;;;;:46;;;;36562:7;:15;;;;:28;;36582:7;36562:19;:28::i;25562:138::-;25626:7;25653:39;25686:5;25653:28;25665:15;;25653:7;:11;;:28;;;;:::i;25706:173::-;25776:7;25803:68;25865:5;25803:57;25847:12;;25831:13;;25815;;:29;;;;:::i;:::-;:44;;;;:::i;:::-;25803:7;;:11;:57::i;24641:915::-;16353:1;24707:15;;:22;24704:550;;;24798:10;;24780:15;;24767:28;;:10;:28;:::i;:::-;:41;;;;:::i;:::-;24745:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;24874:10:0;;24857:14;;24844:27;;:10;:27;:::i;:::-;:40;;;;:::i;:::-;24823:17;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24952:10:0;;24934:15;;24921:28;;:10;:28;:::i;:::-;:41;;;;:::i;:::-;24899:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;24704:550:0;;-1:-1:-1;24704:550:0;;16393:1;24983:15;;:23;24980:274;;;25076:10;;25057:16;;25044:29;;:10;:29;:::i;:::-;:42;;;;:::i;:::-;25022:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;25153:10:0;;25135:15;;25122:28;;:10;:28;:::i;:::-;:41;;;;:::i;:::-;25101:17;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;25232:10:0;;25213:16;;25200:29;;:10;:29;:::i;:::-;:42;;;;:::i;:::-;25178:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;24980:274:0;25264:19;25286:10;:8;:10::i;:::-;25264:32;-1:-1:-1;25307:18:0;25328:27;:10;25264:32;25328:14;:27::i;:::-;25407:4;25391:22;;;;:7;:22;;;;;;25307:48;;-1:-1:-1;25391:38:0;;25307:48;25391:26;:38::i;:::-;25382:4;25366:22;;;;:7;:22;;;;;;;;:63;;;;25444:11;:26;;;;;;25440:108;;;25526:4;25510:22;;;;:7;:22;;;;;;:38;;25537:10;25510:26;:38::i;:::-;25501:4;25485:22;;;;:7;:22;;;;;:63;25440:108;24693:863;;24641:915;:::o;22573:147::-;22651:7;;:17;;22663:4;22651:11;:17::i;:::-;22641:7;:27;22692:10;;:20;;22707:4;22692:14;:20::i;:::-;22679:10;:33;-1:-1:-1;;22573:147:0:o;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:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:52;;;1521:1;1518;1511:12;1473:52;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1376:315:1:o;1696:180::-;1755:6;1808:2;1796:9;1787:7;1783:23;1779:32;1776:52;;;1824:1;1821;1814:12;1776:52;-1:-1:-1;1847:23:1;;1696:180;-1:-1:-1;1696:180:1:o;1881:184::-;1951:6;2004:2;1992:9;1983:7;1979:23;1975:32;1972:52;;;2020:1;2017;2010:12;1972:52;-1:-1:-1;2043:16:1;;1881:184;-1:-1:-1;1881:184:1:o;2070:341::-;2135:6;2143;2196:2;2184:9;2175:7;2171:23;2167:32;2164:52;;;2212:1;2209;2202:12;2164:52;2248:9;2235:23;2225:33;;2308:2;2297:9;2293:18;2280:32;2355:5;2348:13;2341:21;2334:5;2331:32;2321:60;;2377:1;2374;2367:12;2416:306;2504:6;2512;2520;2573:2;2561:9;2552:7;2548:23;2544:32;2541:52;;;2589:1;2586;2579:12;2541:52;2618:9;2612:16;2602:26;;2668:2;2657:9;2653:18;2647:25;2637:35;;2712:2;2701:9;2697:18;2691:25;2681:35;;2416:306;;;;;:::o;2727:385::-;2813:6;2821;2829;2837;2890:3;2878:9;2869:7;2865:23;2861:33;2858:53;;;2907:1;2904;2897:12;2858:53;-1:-1:-1;;2930:23:1;;;3000:2;2985:18;;2972:32;;-1:-1:-1;3051:2:1;3036:18;;3023:32;;3102:2;3087:18;3074:32;;-1:-1:-1;2727:385:1;-1:-1:-1;2727:385:1:o;4883:597::-;4995:4;5024:2;5053;5042:9;5035:21;5085:6;5079:13;5128:6;5123:2;5112:9;5108:18;5101:34;5153:1;5163:140;5177:6;5174:1;5171:13;5163:140;;;5272:14;;;5268:23;;5262:30;5238:17;;;5257:2;5234:26;5227:66;5192:10;;5163:140;;;5321:6;5318:1;5315:13;5312:91;;;5391:1;5386:2;5377:6;5366:9;5362:22;5358:31;5351:42;5312:91;-1:-1:-1;5464:2:1;5443:15;-1:-1:-1;;5439:29:1;5424:45;;;;5471:2;5420:54;;4883:597;-1:-1:-1;;;4883:597:1:o;9915:401::-;10117:2;10099:21;;;10156:2;10136:18;;;10129:30;10195:34;10190:2;10175:18;;10168:62;-1:-1:-1;;;10261:2:1;10246:18;;10239:35;10306:3;10291:19;;9915:401::o;12091:980::-;12353:4;12401:3;12390:9;12386:19;12432:6;12421:9;12414:25;12458:2;12496:6;12491:2;12480:9;12476:18;12469:34;12539:3;12534:2;12523:9;12519:18;12512:31;12563:6;12598;12592:13;12629:6;12621;12614:22;12667:3;12656:9;12652:19;12645:26;;12706:2;12698:6;12694:15;12680:29;;12727:1;12737:195;12751:6;12748:1;12745:13;12737:195;;;12816:13;;-1:-1:-1;;;;;12812:39:1;12800:52;;12907:15;;;;12872:12;;;;12848:1;12766:9;12737:195;;;-1:-1:-1;;;;;;;12988:32:1;;;;12983:2;12968:18;;12961:60;-1:-1:-1;;;13052:3:1;13037:19;13030:35;12949:3;12091:980;-1:-1:-1;;;12091:980:1:o;13265:128::-;13305:3;13336:1;13332:6;13329:1;13326:13;13323:39;;;13342:18;;:::i;:::-;-1:-1:-1;13378:9:1;;13265:128::o;13398:217::-;13438:1;13464;13454:132;;13508:10;13503:3;13499:20;13496:1;13489:31;13543:4;13540:1;13533:15;13571:4;13568:1;13561:15;13454:132;-1:-1:-1;13600:9:1;;13398:217::o;13620:168::-;13660:7;13726:1;13722;13718:6;13714:14;13711:1;13708:21;13703:1;13696:9;13689:17;13685:45;13682:71;;;13733:18;;:::i;:::-;-1:-1:-1;13773:9:1;;13620:168::o;13793:125::-;13833:4;13861:1;13858;13855:8;13852:34;;;13866:18;;:::i;:::-;-1:-1:-1;13903:9:1;;13793:125::o;13923:135::-;13962:3;-1:-1:-1;;13983:17:1;;13980:43;;;14003:18;;:::i;:::-;-1:-1:-1;14050:1:1;14039:13;;13923:135::o;14063:127::-;14124:10;14119:3;14115:20;14112:1;14105:31;14155:4;14152:1;14145:15;14179:4;14176:1;14169:15;14195:127;14256:10;14251:3;14247:20;14244:1;14237:31;14287:4;14284:1;14277:15;14311:4;14308:1;14301:15;14459:131;-1:-1:-1;;;;;14534:31:1;;14524:42;;14514:70;;14580:1;14577;14570:12;14514:70;14459:131;:::o
Swarm Source
ipfs://e0c71cbd9376ea6dc108edd983851d8dcec51786d4b3ab17dc2f7e00811e25f6
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.