More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 57 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 14978145 | 885 days ago | IN | 0 ETH | 0.00187273 | ||||
Approve | 14951406 | 890 days ago | IN | 0 ETH | 0.00157713 | ||||
Approve | 14941877 | 891 days ago | IN | 0 ETH | 0.00147912 | ||||
Approve | 14928436 | 893 days ago | IN | 0 ETH | 0.00292206 | ||||
Approve | 14928276 | 893 days ago | IN | 0 ETH | 0.00432066 | ||||
Approve | 14928264 | 894 days ago | IN | 0 ETH | 0.00186882 | ||||
Approve | 14928231 | 894 days ago | IN | 0 ETH | 0.00495282 | ||||
Approve | 14928227 | 894 days ago | IN | 0 ETH | 0.00311923 | ||||
Approve | 14928213 | 894 days ago | IN | 0 ETH | 0.00445876 | ||||
Approve | 14928209 | 894 days ago | IN | 0 ETH | 0.005025 | ||||
Approve | 14928209 | 894 days ago | IN | 0 ETH | 0.005025 | ||||
Approve | 14928196 | 894 days ago | IN | 0 ETH | 0.00459967 | ||||
Approve | 14928127 | 894 days ago | IN | 0 ETH | 0.00223689 | ||||
Approve | 14928118 | 894 days ago | IN | 0 ETH | 0.00266866 | ||||
Approve | 14928078 | 894 days ago | IN | 0 ETH | 0.00383705 | ||||
Approve | 14928074 | 894 days ago | IN | 0 ETH | 0.00280952 | ||||
Approve | 14928043 | 894 days ago | IN | 0 ETH | 0.00283428 | ||||
Approve | 14928003 | 894 days ago | IN | 0 ETH | 0.00223956 | ||||
Approve | 14927930 | 894 days ago | IN | 0 ETH | 0.0034318 | ||||
Approve | 14927904 | 894 days ago | IN | 0 ETH | 0.00278834 | ||||
Approve | 14927876 | 894 days ago | IN | 0 ETH | 0.00256954 | ||||
Approve | 14927875 | 894 days ago | IN | 0 ETH | 0.00269846 | ||||
Approve | 14927843 | 894 days ago | IN | 0 ETH | 0.00324512 | ||||
Approve | 14927816 | 894 days ago | IN | 0 ETH | 0.00299105 | ||||
Approve | 14927735 | 894 days ago | IN | 0 ETH | 0.00409236 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14978148 | 885 days ago | 0.00121063 ETH | ||||
14978148 | 885 days ago | 0.0087847 ETH | ||||
14978148 | 885 days ago | 0.00011255 ETH | ||||
14978148 | 885 days ago | 0.00052014 ETH | ||||
14978148 | 885 days ago | 0.01040294 ETH | ||||
14951560 | 890 days ago | 0.00048244 ETH | ||||
14951560 | 890 days ago | 0.00385959 ETH | ||||
14951560 | 890 days ago | 0.00022852 ETH | ||||
14951560 | 890 days ago | 0.00457057 ETH | ||||
14938262 | 892 days ago | 0.00016733 ETH | ||||
14938262 | 892 days ago | 0.00133865 ETH | ||||
14938262 | 892 days ago | 0.00007926 ETH | ||||
14938262 | 892 days ago | 0.00158524 ETH | ||||
14931759 | 893 days ago | 0.00063116 ETH | ||||
14931759 | 893 days ago | 0.0050493 ETH | ||||
14931759 | 893 days ago | 0.00029897 ETH | ||||
14931759 | 893 days ago | 0.00597944 ETH | ||||
14929318 | 893 days ago | 0.00084451 ETH | ||||
14929318 | 893 days ago | 0.00675612 ETH | ||||
14929318 | 893 days ago | 0.00040003 ETH | ||||
14929318 | 893 days ago | 0.00800067 ETH | ||||
14929303 | 893 days ago | 0.00082736 ETH | ||||
14929303 | 893 days ago | 0.00661893 ETH | ||||
14929303 | 893 days ago | 0.00039191 ETH | ||||
14929303 | 893 days ago | 0.00783821 ETH |
Loading...
Loading
Contract Name:
MASSONIUM
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-08 */ /** * ───────────────────────────────── ───────────────███─────────────── ─────────────██▀─▀██───────────── ───────────██▀─────▀██─────────── ─────────██▀──▄▄▄▄▄──▀██───────── ───────██▀──▄▀─────▀▄──▀██─────── ─────██▀──▄▀───███───▀▄──▀██───── ───██▀────▀▄───▀▀▀───▄▀────▀██─── ─██▀────────▀▄▄▄▄▄▄▄▀────────▀██─ █▀─────────────────────────────▀█ █████████████████████████████████ MASSONIUM AIM : is to unite all crypto enthusiasts in one huge elite community , to fight against centralisation , banks , and economics together. Our Elite Community have RULES to join us : Open this gates to join our private community 1) U must create public community by your own and we will choose the best as official 2) U must be a holder of 2% wallet minimum 3) Together we must reach 333 333 MC mark to get - Key N1 4) U have to find a hidden secret on our Website - Key N2 4) U must be ACTIVE community member, spreading our news about our elite token, soft and hard shilling it personally, we will take a look at EVERY person who will make it, and best community members will be added to Elite community club 5) U need to read who we are and what our aim is 6) Together we must reach 999 999 MC mark to get - Key N3 (and we open our huge Hidden Utility to make parabolic grows) Telegram: will be choisen from the best that we find, and we pin it as official on Website Twitter: will be choisen from the best that we find, and we pin it as official on Website WEBSITE: massonium.space Massomiun coin will be LOCKED and RENOUNCED LOCK EXTEND WITH MC GROWS NO PRESALES, NO HIDDEN PRESALES, 100% GOES TO LIQUIDITY Tokenomics Total supply : 100 000 000 Masson coins Max wallet : 3 000 000 Masson coins Max Tx : : 3 000 000 Masson coins decimals: 9 slippage: 8-12 Fee: 8% */ // SPDX-License-Identifier: MIT pragma solidity 0.8.7; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function factory() external view returns (address); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract MASSONIUM is Context, IERC20 { // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isSniperOrBlacklisted; mapping (address => bool) private _liquidityHolders; mapping (address => uint256) buyLog; uint256 buyCoolDown = 10 seconds; uint256 private startingSupply = 100_000_000; string private _name = "MASSONIUM"; string private _symbol = "MASSON"; uint256 public _buyFee = 800; uint256 public _sellFee = 900; uint256 private _transferFee = 1500; uint256 constant private maxBuyTaxes = 1000; uint256 constant private maxSellTaxes = 1000; uint256 constant private maxTransferTaxes = 1500; uint256 private _liquidityRatio = 10; uint256 private _marketingRatio = 80; uint256 private _devRatio = 10; uint256 private constant masterTaxDivisor = 10_000; uint256 private constant MAX = ~uint256(0); uint8 constant private _decimals = 9; uint256 private _tTotal = startingSupply * 10**_decimals; uint256 private _tFeeTotal; IUniswapV2Router02 public dexRouter; address public lpPair; // UNI ROUTER address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; address payable private _marketingWallet = payable(0x0aDCD806e7218B56e0D4dC88863bd88F8e646Df4); address payable private _teamWallet = payable(0x0aDCD806e7218B56e0D4dC88863bd88F8e646Df4); bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private maxTxPercent = 3; uint256 private maxTxDivisor = 100; uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor; // uint256 private maxWalletPercent = 3; uint256 private maxWalletDivisor = 100; uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor; // uint256 private swapThreshold = (_tTotal * 5) / 10_000; // 0.05% uint256 private swapAmount = (_tTotal * 5) / 1_000; // 0.5% bool private sniperProtection = true; bool public _hasLiqBeenAdded = false; uint256 private _liqAddStatus = 0; uint256 private _liqAddBlock = 0; uint256 private _liqAddStamp = 0; uint256 private _initialLiquidityAmount = 0; uint256 private snipeBlockAmt = 0; uint256 public snipersCaught = 0; bool private sameBlockActive = true; mapping (address => uint256) private lastTrade; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SniperCaught(address sniperAddress); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Caller =/= owner."); _; } constructor () payable { _tOwned[_msgSender()] = _tTotal; // Set the owner. _owner = msg.sender; dexRouter = IUniswapV2Router02(_routerAddress); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _allowances[address(this)][address(dexRouter)] = type(uint256).max; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _liquidityHolders[owner()] = true; // Approve the owner for UniSwap, timesaver. _approve(_msgSender(), _routerAddress, _tTotal); // Transfer tTotal to the _msgSender. emit Transfer(address(0), _msgSender(), _tTotal); } receive() external payable {} //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and recnouncements. // This allows for removal of ownership privelages from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFees(_owner, false); setExcludedFromFees(newOwner, true); if (_marketingWallet == payable(_owner)) _marketingWallet = payable(newOwner); _allowances[_owner][newOwner] = balanceOf(_owner); if(balanceOf(_owner) > 0) { _transfer(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFees(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external view override returns (string memory) { return _symbol; } function name() external view override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) private { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveMax(address spender) public returns (bool) { return approve(spender, type(uint256).max); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transfer(sender, recipient, amount); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function setNewRouter(address newRouter) public onlyOwner() { IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = get_pair; } dexRouter = _newRouter; } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPairs[pair] = false; } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown."); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; } } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function isSniperOrBlacklisted(address account) public view returns (bool) { return _isSniperOrBlacklisted[account]; } function setBuyCoolDownTime(uint256 Seconds) public onlyOwner{ uint256 timeInSeconds = Seconds * 1 seconds; buyCoolDown = timeInSeconds; } function isProtected(uint256 rInitializer) external onlyOwner { require (_liqAddStatus == 0, "Error."); _liqAddStatus = rInitializer; } function setBlacklistEnabled(address account, bool enabled) external onlyOwner() { _isSniperOrBlacklisted[account] = enabled; } function setStartingProtections(uint8 _block) external onlyOwner{ require (snipeBlockAmt == 0 && !_hasLiqBeenAdded, "Starting Protections have already been executed."); snipeBlockAmt = _block; } function setProtectionSettings(bool antiSnipe, bool antiBlock) external onlyOwner() { sniperProtection = antiSnipe; sameBlockActive = antiBlock; } function setTaxes(uint256 buyFee, uint256 sellFee, uint256 transferFee) external onlyOwner { require(buyFee <= maxBuyTaxes && sellFee <= maxSellTaxes && transferFee <= maxTransferTaxes, "Cannot exceed maximums."); _buyFee = buyFee; _sellFee = sellFee; _transferFee = transferFee; } function setRatios(uint256 liquidity, uint256 marketing, uint256 dev) external onlyOwner { require (liquidity + marketing + dev == 100, "Must add up to 100%"); _liquidityRatio = liquidity; _marketingRatio = marketing; _devRatio = dev; } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply."); _maxTxAmount = check; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply."); _maxWalletSize = check; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; } function setWallets(address payable marketingWallet, address payable teamWallet) external onlyOwner { _marketingWallet = payable(marketingWallet); _teamWallet = payable(teamWallet); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function _hasLimits(address from, address to) private view returns (bool) { return from != owner() && to != owner() && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "ERC20: Zero address."); require(to != address(0), "ERC20: Zero address."); require(amount > 0, "Must >0."); if(_hasLimits(from, to)) { if (sameBlockActive) { if (lpPairs[from]){ require(lastTrade[to] != block.number); lastTrade[to] = block.number; } else { require(lastTrade[from] != block.number); lastTrade[from] = block.number; } } if(lpPairs[from] || lpPairs[to]){ require(amount <= _maxTxAmount, "Exceeds the maxTxAmount."); } if(to != _routerAddress && !lpPairs[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); } } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } if (lpPairs[to]) { if (!inSwapAndLiquify && swapAndLiquifyEnabled ) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } swapAndLiquify(contractTokenBalance); } } } return _finalizeTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { if (_liquidityRatio + _marketingRatio + _devRatio == 0) return; uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2; uint256 toSwapForEth = contractTokenBalance - toLiquify; swapTokensForEth(toSwapForEth); uint256 currentBalance = address(this).balance; uint256 liquidityBalance = ((currentBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2; if (toLiquify > 0) { addLiquidity(toLiquify, liquidityBalance); emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify); } if (contractTokenBalance - toLiquify > 0) { _marketingWallet.transfer(((currentBalance - liquidityBalance) * _marketingRatio) / (_marketingRatio + _devRatio)); _teamWallet.transfer(address(this).balance); } } function swapTokensForEth(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable DEAD, block.timestamp ); } function _checkLiquidityAdd(address from, address to) private { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { if (snipeBlockAmt != 2) { _liqAddBlock = block.number + 5000; } else { _liqAddBlock = block.number; } _liquidityHolders[from] = true; _hasLiqBeenAdded = true; _liqAddStamp = block.timestamp; swapAndLiquifyEnabled = true; emit SwapAndLiquifyEnabledUpdated(true); } } function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) { if (sniperProtection){ if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) { revert("Sniper rejected."); } if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } else { if (_liqAddBlock > 0 && lpPairs[from] && _hasLimits(from, to) ) { if (block.number - _liqAddBlock < snipeBlockAmt) { _isSniperOrBlacklisted[to] = true; snipersCaught ++; emit SniperCaught(to); } } } } _tOwned[from] -= amount; uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; _tOwned[to] += amountReceived; emit Transfer(from, to, amountReceived); return true; } function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) { uint256 currentFee; if (from == lpPair) { if (balanceOf(to) > 0){ require(block.timestamp - buyLog[to] >= buyCoolDown, "Buy cooldown"); } buyLog[to] = block.timestamp; currentFee = _buyFee; } else if (to == lpPair) { currentFee = _sellFee; } else { currentFee = _transferFee; } if (_hasLimits(from, to)){ if (_liqAddStatus == 0 || _liqAddStatus != startingSupply/10) { revert(); } } uint256 feeAmount = amount * currentFee / masterTaxDivisor; _tOwned[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); return amount - feeAmount; } }
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":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Seconds","type":"uint256"}],"name":"setBuyCoolDownTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"}],"name":"setStartingProtections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6000600355600a60098181556305f5e10090915560c06040526080819052684d4153534f4e49554d60b81b60a09081526200003e91600b91906200064f565b506040805180820190915260068082526526a0a9a9a7a760d11b60209092019182526200006e91600c916200064f565b50610320600d55610384600e556105dc600f55600a6010556050601155600a6012556009600a620000a0919062000793565b600a54620000af919062000854565b601381905560178054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03199182161790915560188054730adcd806e7218b56e0d4dc88863bd88f8e646df492168217905560198054600161ff0160a01b03191690911790556003601a8190556064601b819055916200012b919062000854565b62000137919062000727565b601c556003601d556064601e55601e54601d5460135462000159919062000854565b62000165919062000727565b601f5561271060135460056200017c919062000854565b62000188919062000727565b6020556103e860135460056200019f919062000854565b620001ab919062000727565b6021556022805461ffff1916600190811790915560006023819055602481905560258190556026819055602781905560288190556029805460ff1916831790556013549190620001f83390565b6001600160a01b03908116825260208083019390935260409182016000908120949094558354336001600160a01b0319918216179094556017546015805491909216941684179055805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b1580156200027257600080fd5b505afa15801562000287573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ad9190620006f5565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030a57600080fd5b505afa1580156200031f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003459190620006f5565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200038d57600080fd5b505af1158015620003a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c89190620006f5565b601680546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660019081179091553084526004835281842060155490951684529390915281206000199055600590620004396000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600790620004c16000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200050d620004f53390565b6017546013546001600160a01b03909116906200054e565b60135460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620008c9565b6001600160a01b038316620005a05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005ee5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000597565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8280546200065d9062000876565b90600052602060002090601f016020900481019282620006815760008555620006cc565b82601f106200069c57805160ff1916838001178555620006cc565b82800160010185558215620006cc579182015b82811115620006cc578251825591602001919060010190620006af565b50620006da929150620006de565b5090565b5b80821115620006da5760008155600101620006df565b6000602082840312156200070857600080fd5b81516001600160a01b03811681146200072057600080fd5b9392505050565b6000826200074557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200078b5781600019048211156200076f576200076f620008b3565b808516156200077d57918102915b93841c93908002906200074f565b509250929050565b60006200072060ff841683600082620007af575060016200084e565b81620007be575060006200084e565b8160018114620007d75760028114620007e25762000802565b60019150506200084e565b60ff841115620007f657620007f6620008b3565b50506001821b6200084e565b5060208310610133831016604e8410600b841016171562000827575081810a6200084e565b6200083383836200074a565b80600019048211156200084a576200084a620008b3565b0290505b92915050565b6000816000190483118215151615620008715762000871620008b3565b500290565b600181811c908216806200088b57607f821691505b60208210811415620008ad57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6129cb80620008d96000396000f3fe60806040526004361061024a5760003560e01c8063590f897e11610139578063a457c2d7116100b6578063dd62ed3e1161007a578063dd62ed3e146106be578063e79d416014610704578063e9dae5ed1461071a578063eafb5a3c1461073a578063eec2744e1461075a578063fb78680d1461077a57600080fd5b8063a457c2d71461061e578063a9059cbb1461063e578063c49b9a801461065e578063cdfdb7dc1461067e578063d3f6a1571461069e57600080fd5b806381c6f11b116100fd57806381c6f11b14610592578063893d20e8146105b257806389fd9bc1146105d05780638da5cb5b146105b257806395d89b411461060957600080fd5b8063590f897e14610507578063590ffdce1461051d57806370a082311461053d578063715018a61461055d57806380c581d11461057257600080fd5b80633f3cf56c116101c75780634a74bb021161018b5780634a74bb021461044e5780634fb2e45d1461046f5780634fbee1931461048f57806350a8e016146104c8578063571ac8b0146104e757600080fd5b80633f3cf56c146103b857806340b9a54b146103d85780634129ecee146103ee578063452ed4f11461040e578063469c0ef51461042e57600080fd5b806318160ddd1161020e57806318160ddd1461031d57806323b872dd1461033c578063260039571461035c578063313ce5671461037c578063395093511461039857600080fd5b806303fd2a4514610256578063044df7261461028957806306fdde03146102ab5780630758d924146102cd578063095ea7b3146102ed57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561029557600080fd5b506102a96102a43660046125f4565b61079a565b005b3480156102b757600080fd5b506102c06107ed565b60405161028091906126fa565b3480156102d957600080fd5b5060155461026c906001600160a01b031681565b3480156102f957600080fd5b5061030d6103083660046125ad565b61087f565b6040519015158152602001610280565b34801561032957600080fd5b506013545b604051908152602001610280565b34801561034857600080fd5b5061030d610357366004612537565b610895565b34801561036857600080fd5b506102a9610377366004612629565b61090d565b34801561038857600080fd5b5060405160098152602001610280565b3480156103a457600080fd5b5061030d6103b33660046125ad565b61098a565b3480156103c457600080fd5b506102a96103d3366004612629565b6109c6565b3480156103e457600080fd5b5061032e600d5481565b3480156103fa57600080fd5b506102a96104093660046126d7565b610a43565b34801561041a57600080fd5b5060165461026c906001600160a01b031681565b34801561043a57600080fd5b506102a9610449366004612610565b610af2565b34801561045a57600080fd5b5060195461030d90600160a81b900460ff1681565b34801561047b57600080fd5b506102a961048a3660046124c4565b610b30565b34801561049b57600080fd5b5061030d6104aa3660046124c4565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104d457600080fd5b5060225461030d90610100900460ff1681565b3480156104f357600080fd5b5061030d6105023660046124c4565b610cc4565b34801561051357600080fd5b5061032e600e5481565b34801561052957600080fd5b506102a9610538366004612578565b610cd8565b34801561054957600080fd5b5061032e6105583660046124c4565b610d2d565b34801561056957600080fd5b506102a9610d48565b34801561057e57600080fd5b506102a961058d366004612578565b610dc7565b34801561059e57600080fd5b506102a96105ad366004612610565b610ea0565b3480156105be57600080fd5b506000546001600160a01b031661026c565b3480156105dc57600080fd5b5061030d6105eb3660046124c4565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561061557600080fd5b506102c0610f08565b34801561062a57600080fd5b5061030d6106393660046125ad565b610f17565b34801561064a57600080fd5b5061030d6106593660046125ad565b610f4e565b34801561066a57600080fd5b506102a96106793660046125d9565b610f65565b34801561068a57600080fd5b506102a961069936600461264b565b610fe7565b3480156106aa57600080fd5b506102a96106b93660046124fe565b611079565b3480156106ca57600080fd5b5061032e6106d93660046124fe565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561071057600080fd5b5061032e60285481565b34801561072657600080fd5b506102a961073536600461264b565b6110d1565b34801561074657600080fd5b506102a96107553660046124c4565b611177565b34801561076657600080fd5b506102a9610775366004612578565b6114fd565b34801561078657600080fd5b506102a96107953660046126a5565b611552565b6000546001600160a01b031633146107cd5760405162461bcd60e51b81526004016107c49061274f565b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b6060600b80546107fc906128fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610828906128fb565b80156108755780601f1061084a57610100808354040283529160200191610875565b820191906000526020600020905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b600061088c3384846115bb565b50600192915050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146108fa576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906108f49084906128e4565b90915550505b6109058484846116b4565b949350505050565b6000546001600160a01b031633146109375760405162461bcd60e51b81526004016107c49061274f565b6000818360135461094891906128c5565b61095291906128a3565b90506103e860135461096491906128a3565b8110156109835760405162461bcd60e51b81526004016107c49061277a565b601f555050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161088c9185906109c190869061288b565b6115bb565b6000546001600160a01b031633146109f05760405162461bcd60e51b81526004016107c49061274f565b60008183601354610a0191906128c5565b610a0b91906128a3565b90506103e8601354610a1d91906128a3565b811015610a3c5760405162461bcd60e51b81526004016107c49061277a565b601c555050565b6000546001600160a01b03163314610a6d5760405162461bcd60e51b81526004016107c49061274f565b602754158015610a855750602254610100900460ff16155b610aea5760405162461bcd60e51b815260206004820152603060248201527f5374617274696e672050726f74656374696f6e73206861766520616c7265616460448201526f3c903132b2b71032bc32b1baba32b21760811b60648201526084016107c4565b60ff16602755565b6000546001600160a01b03163314610b1c5760405162461bcd60e51b81526004016107c49061274f565b6000610b298260016128c5565b6009555050565b6000546001600160a01b03163314610b5a5760405162461bcd60e51b81526004016107c49061274f565b6001600160a01b038116610b805760405162461bcd60e51b81526004016107c4906127bd565b6001600160a01b03811661dead1415610bab5760405162461bcd60e51b81526004016107c4906127bd565b60008054610bc4916001600160a01b0390911690610cd8565b610bcf816001610cd8565b6000546018546001600160a01b0390811691161415610c0457601880546001600160a01b0319166001600160a01b0383161790555b600054610c19906001600160a01b0316610d2d565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610c529116610d2d565b1115610c7957600054610c77906001600160a01b031682610c7282610d2d565b6116b4565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610cd28260001961087f565b92915050565b6000546001600160a01b03163314610d025760405162461bcd60e51b81526004016107c49061274f565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610d725760405162461bcd60e51b81526004016107c49061274f565b60008054610d8b916001600160a01b0390911690610cd8565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610df15760405162461bcd60e51b81526004016107c49061274f565b80610e1857506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610e745762093a8060035442610e3291906128e4565b11610e745760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016107c4565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b03163314610eca5760405162461bcd60e51b81526004016107c49061274f565b60235415610f035760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016107c4565b602355565b6060600c80546107fc906128fb565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161088c9185906109c19086906128e4565b6000610f5b3384846116b4565b5060019392505050565b6000546001600160a01b03163314610f8f5760405162461bcd60e51b81526004016107c49061274f565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610fdc90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110115760405162461bcd60e51b81526004016107c49061274f565b8061101c838561288b565b611026919061288b565b60641461106b5760405162461bcd60e51b81526020600482015260136024820152724d7573742061646420757020746f203130302560681b60448201526064016107c4565b601092909255601155601255565b6000546001600160a01b031633146110a35760405162461bcd60e51b81526004016107c49061274f565b601880546001600160a01b039384166001600160a01b03199182161790915560198054929093169116179055565b6000546001600160a01b031633146110fb5760405162461bcd60e51b81526004016107c49061274f565b6103e8831115801561110f57506103e88211155b801561111d57506105dc8111155b6111695760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016107c4565b600d92909255600e55600f55565b6000546001600160a01b031633146111a15760405162461bcd60e51b81526004016107c49061274f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e157600080fd5b505afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121991906124e1565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561126157600080fd5b505afa158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906124e1565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131791906124e1565b90506001600160a01b0381166114bd57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561136057600080fd5b505afa158015611374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139891906124e1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e057600080fd5b505afa1580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141891906124e1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561146057600080fd5b505af1158015611474573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149891906124e1565b601680546001600160a01b0319166001600160a01b03929092169190911790556114d9565b601680546001600160a01b0319166001600160a01b0383161790555b50601580546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146115275760405162461bcd60e51b81526004016107c49061274f565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461157c5760405162461bcd60e51b81526004016107c49061274f565b828460135461158b91906128c5565b61159591906128a3565b60205560135481906115a89084906128c5565b6115b291906128a3565b60215550505050565b6001600160a01b0383166116075760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107c4565b6001600160a01b0382166116535760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107c4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117035760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016107c4565b6001600160a01b0383166117505760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016107c4565b6000821161178b5760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016107c4565b6117958484611a5b565b156119835760295460ff161561184c576001600160a01b03841660009081526002602052604090205460ff161561180b576001600160a01b0383166000908152602a60205260409020544314156117eb57600080fd5b6001600160a01b0383166000908152602a6020526040902043905561184c565b6001600160a01b0384166000908152602a602052604090205443141561183057600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b03841660009081526002602052604090205460ff168061188b57506001600160a01b03831660009081526002602052604090205460ff165b156118e257601c548211156118e25760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016107c4565b6017546001600160a01b0384811691161480159061191957506001600160a01b03831660009081526002602052604090205460ff16155b1561198357601f548261192b85610d2d565b611935919061288b565b11156119835760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016107c4565b6001600160a01b03841660009081526005602052604090205460019060ff16806119c557506001600160a01b03841660009081526005602052604090205460ff165b156119ce575060005b6001600160a01b03841660009081526002602052604090205460ff1615611a4657601954600160a01b900460ff16158015611a125750601954600160a81b900460ff165b15611a46576000611a2230610d2d565b90506020548110611a44576021548110611a3b57506021545b611a4481611b19565b505b611a5285858584611d16565b95945050505050565b600080546001600160a01b03848116911614801590611a8857506000546001600160a01b03838116911614155b8015611aad57506001600160a01b03821660009081526007602052604090205460ff16155b8015611ad257506001600160a01b03831660009081526007602052604090205460ff16155b8015611ae957506001600160a01b03821661dead14155b8015611afd57506001600160a01b03821615155b8015611b1257506001600160a01b0383163014155b9392505050565b6019805460ff60a01b1916600160a01b179055601254601154601054611b3f919061288b565b611b49919061288b565b611b5257611d06565b60006002601254601154601054611b69919061288b565b611b73919061288b565b601054611b8090856128c5565b611b8a91906128a3565b611b9491906128a3565b90506000611ba282846128e4565b9050611bad81611fd5565b600047905060006002601254601154601054611bc9919061288b565b611bd3919061288b565b601054611be090856128c5565b611bea91906128a3565b611bf491906128a3565b90508315611c4857611c068482612125565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611c5485876128e4565b1115611d01576018546012546011546001600160a01b03909216916108fc91611c7c9161288b565b601154611c8985876128e4565b611c9391906128c5565b611c9d91906128a3565b6040518115909202916000818181858888f19350505050158015611cc5573d6000803e3d6000fd5b506019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611cff573d6000803e3d6000fd5b505b505050505b506019805460ff60a01b19169055565b60225460009060ff1615611f02576001600160a01b03851660009081526006602052604090205460ff1680611d6357506001600160a01b03841660009081526006602052604090205460ff165b15611da35760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016107c4565b602254610100900460ff16611e3957611dbc85856121ce565b602254610100900460ff16158015611dd95750611dd98585611a5b565b15611e345760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016107c4565b611f02565b6000602454118015611e6357506001600160a01b03851660009081526002602052604090205460ff165b8015611e745750611e748585611a5b565b15611f0257602754602454611e8990436128e4565b1015611f02576001600160a01b0384166000908152600660205260408120805460ff191660011790556028805491611ec083612936565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03851660009081526001602052604081208054859290611f2a9084906128e4565b909155506000905082611f3d5783611f48565b611f4886868661230b565b6001600160a01b038616600090815260016020526040812080549293508392909190611f7590849061288b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fc191815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061200a5761200a612967565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561205e57600080fd5b505afa158015612072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209691906124e1565b816001815181106120a9576120a9612967565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac947906120ef90859060009086903090429060040161281a565b600060405180830381600087803b15801561210957600080fd5b505af115801561211d573d6000803e3d6000fd5b505050505050565b60155460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561218e57600080fd5b505af11580156121a2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121c79190612677565b5050505050565b602254610100900460ff16156122325760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107c4565b61223c8282611a5b565b15801561225657506016546001600160a01b038281169116145b15610e9c57602754600214612279576122714361138861288b565b60245561227e565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556019805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916122ff91901515815260200190565b60405180910390a15050565b60165460009081906001600160a01b03868116911614156123be57600061233185610d2d565b111561239a576009546001600160a01b03851660009081526008602052604090205461235d90426128e4565b101561239a5760405162461bcd60e51b815260206004820152600c60248201526b213abc9031b7b7b63237bbb760a11b60448201526064016107c4565b506001600160a01b0383166000908152600860205260409020429055600d546123e2565b6016546001600160a01b03858116911614156123dd5750600e546123e2565b50600f545b6123ec8585611a5b565b1561241957602354158061240f5750600a805461240991906128a3565b60235414155b1561241957600080fd5b600061271061242883866128c5565b61243291906128a3565b3060009081526001602052604081208054929350839290919061245690849061288b565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36124a581856128e4565b9695505050505050565b803580151581146124bf57600080fd5b919050565b6000602082840312156124d657600080fd5b8135611b128161297d565b6000602082840312156124f357600080fd5b8151611b128161297d565b6000806040838503121561251157600080fd5b823561251c8161297d565b9150602083013561252c8161297d565b809150509250929050565b60008060006060848603121561254c57600080fd5b83356125578161297d565b925060208401356125678161297d565b929592945050506040919091013590565b6000806040838503121561258b57600080fd5b82356125968161297d565b91506125a4602084016124af565b90509250929050565b600080604083850312156125c057600080fd5b82356125cb8161297d565b946020939093013593505050565b6000602082840312156125eb57600080fd5b611b12826124af565b6000806040838503121561260757600080fd5b612596836124af565b60006020828403121561262257600080fd5b5035919050565b6000806040838503121561263c57600080fd5b50508035926020909101359150565b60008060006060848603121561266057600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561268c57600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156126bb57600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156126e957600080fd5b813560ff81168114611b1257600080fd5b600060208083528351808285015260005b818110156127275785810183015185820160400152820161270b565b81811115612739576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561286a5784516001600160a01b031683529383019391830191600101612845565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561289e5761289e612951565b500190565b6000826128c057634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128df576128df612951565b500290565b6000828210156128f6576128f6612951565b500390565b600181811c9082168061290f57607f821691505b6020821081141561293057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561294a5761294a612951565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461299257600080fd5b5056fea26469706673582212208dc29c31e30912024d664106f21d58c8c9fa2e777aa8e82aa3825301271b47ac64736f6c63430008070033
Deployed Bytecode
0x60806040526004361061024a5760003560e01c8063590f897e11610139578063a457c2d7116100b6578063dd62ed3e1161007a578063dd62ed3e146106be578063e79d416014610704578063e9dae5ed1461071a578063eafb5a3c1461073a578063eec2744e1461075a578063fb78680d1461077a57600080fd5b8063a457c2d71461061e578063a9059cbb1461063e578063c49b9a801461065e578063cdfdb7dc1461067e578063d3f6a1571461069e57600080fd5b806381c6f11b116100fd57806381c6f11b14610592578063893d20e8146105b257806389fd9bc1146105d05780638da5cb5b146105b257806395d89b411461060957600080fd5b8063590f897e14610507578063590ffdce1461051d57806370a082311461053d578063715018a61461055d57806380c581d11461057257600080fd5b80633f3cf56c116101c75780634a74bb021161018b5780634a74bb021461044e5780634fb2e45d1461046f5780634fbee1931461048f57806350a8e016146104c8578063571ac8b0146104e757600080fd5b80633f3cf56c146103b857806340b9a54b146103d85780634129ecee146103ee578063452ed4f11461040e578063469c0ef51461042e57600080fd5b806318160ddd1161020e57806318160ddd1461031d57806323b872dd1461033c578063260039571461035c578063313ce5671461037c578063395093511461039857600080fd5b806303fd2a4514610256578063044df7261461028957806306fdde03146102ab5780630758d924146102cd578063095ea7b3146102ed57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561029557600080fd5b506102a96102a43660046125f4565b61079a565b005b3480156102b757600080fd5b506102c06107ed565b60405161028091906126fa565b3480156102d957600080fd5b5060155461026c906001600160a01b031681565b3480156102f957600080fd5b5061030d6103083660046125ad565b61087f565b6040519015158152602001610280565b34801561032957600080fd5b506013545b604051908152602001610280565b34801561034857600080fd5b5061030d610357366004612537565b610895565b34801561036857600080fd5b506102a9610377366004612629565b61090d565b34801561038857600080fd5b5060405160098152602001610280565b3480156103a457600080fd5b5061030d6103b33660046125ad565b61098a565b3480156103c457600080fd5b506102a96103d3366004612629565b6109c6565b3480156103e457600080fd5b5061032e600d5481565b3480156103fa57600080fd5b506102a96104093660046126d7565b610a43565b34801561041a57600080fd5b5060165461026c906001600160a01b031681565b34801561043a57600080fd5b506102a9610449366004612610565b610af2565b34801561045a57600080fd5b5060195461030d90600160a81b900460ff1681565b34801561047b57600080fd5b506102a961048a3660046124c4565b610b30565b34801561049b57600080fd5b5061030d6104aa3660046124c4565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104d457600080fd5b5060225461030d90610100900460ff1681565b3480156104f357600080fd5b5061030d6105023660046124c4565b610cc4565b34801561051357600080fd5b5061032e600e5481565b34801561052957600080fd5b506102a9610538366004612578565b610cd8565b34801561054957600080fd5b5061032e6105583660046124c4565b610d2d565b34801561056957600080fd5b506102a9610d48565b34801561057e57600080fd5b506102a961058d366004612578565b610dc7565b34801561059e57600080fd5b506102a96105ad366004612610565b610ea0565b3480156105be57600080fd5b506000546001600160a01b031661026c565b3480156105dc57600080fd5b5061030d6105eb3660046124c4565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561061557600080fd5b506102c0610f08565b34801561062a57600080fd5b5061030d6106393660046125ad565b610f17565b34801561064a57600080fd5b5061030d6106593660046125ad565b610f4e565b34801561066a57600080fd5b506102a96106793660046125d9565b610f65565b34801561068a57600080fd5b506102a961069936600461264b565b610fe7565b3480156106aa57600080fd5b506102a96106b93660046124fe565b611079565b3480156106ca57600080fd5b5061032e6106d93660046124fe565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561071057600080fd5b5061032e60285481565b34801561072657600080fd5b506102a961073536600461264b565b6110d1565b34801561074657600080fd5b506102a96107553660046124c4565b611177565b34801561076657600080fd5b506102a9610775366004612578565b6114fd565b34801561078657600080fd5b506102a96107953660046126a5565b611552565b6000546001600160a01b031633146107cd5760405162461bcd60e51b81526004016107c49061274f565b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b6060600b80546107fc906128fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610828906128fb565b80156108755780601f1061084a57610100808354040283529160200191610875565b820191906000526020600020905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b600061088c3384846115bb565b50600192915050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146108fa576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906108f49084906128e4565b90915550505b6109058484846116b4565b949350505050565b6000546001600160a01b031633146109375760405162461bcd60e51b81526004016107c49061274f565b6000818360135461094891906128c5565b61095291906128a3565b90506103e860135461096491906128a3565b8110156109835760405162461bcd60e51b81526004016107c49061277a565b601f555050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161088c9185906109c190869061288b565b6115bb565b6000546001600160a01b031633146109f05760405162461bcd60e51b81526004016107c49061274f565b60008183601354610a0191906128c5565b610a0b91906128a3565b90506103e8601354610a1d91906128a3565b811015610a3c5760405162461bcd60e51b81526004016107c49061277a565b601c555050565b6000546001600160a01b03163314610a6d5760405162461bcd60e51b81526004016107c49061274f565b602754158015610a855750602254610100900460ff16155b610aea5760405162461bcd60e51b815260206004820152603060248201527f5374617274696e672050726f74656374696f6e73206861766520616c7265616460448201526f3c903132b2b71032bc32b1baba32b21760811b60648201526084016107c4565b60ff16602755565b6000546001600160a01b03163314610b1c5760405162461bcd60e51b81526004016107c49061274f565b6000610b298260016128c5565b6009555050565b6000546001600160a01b03163314610b5a5760405162461bcd60e51b81526004016107c49061274f565b6001600160a01b038116610b805760405162461bcd60e51b81526004016107c4906127bd565b6001600160a01b03811661dead1415610bab5760405162461bcd60e51b81526004016107c4906127bd565b60008054610bc4916001600160a01b0390911690610cd8565b610bcf816001610cd8565b6000546018546001600160a01b0390811691161415610c0457601880546001600160a01b0319166001600160a01b0383161790555b600054610c19906001600160a01b0316610d2d565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610c529116610d2d565b1115610c7957600054610c77906001600160a01b031682610c7282610d2d565b6116b4565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610cd28260001961087f565b92915050565b6000546001600160a01b03163314610d025760405162461bcd60e51b81526004016107c49061274f565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610d725760405162461bcd60e51b81526004016107c49061274f565b60008054610d8b916001600160a01b0390911690610cd8565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610df15760405162461bcd60e51b81526004016107c49061274f565b80610e1857506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610e745762093a8060035442610e3291906128e4565b11610e745760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016107c4565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b03163314610eca5760405162461bcd60e51b81526004016107c49061274f565b60235415610f035760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016107c4565b602355565b6060600c80546107fc906128fb565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161088c9185906109c19086906128e4565b6000610f5b3384846116b4565b5060019392505050565b6000546001600160a01b03163314610f8f5760405162461bcd60e51b81526004016107c49061274f565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610fdc90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110115760405162461bcd60e51b81526004016107c49061274f565b8061101c838561288b565b611026919061288b565b60641461106b5760405162461bcd60e51b81526020600482015260136024820152724d7573742061646420757020746f203130302560681b60448201526064016107c4565b601092909255601155601255565b6000546001600160a01b031633146110a35760405162461bcd60e51b81526004016107c49061274f565b601880546001600160a01b039384166001600160a01b03199182161790915560198054929093169116179055565b6000546001600160a01b031633146110fb5760405162461bcd60e51b81526004016107c49061274f565b6103e8831115801561110f57506103e88211155b801561111d57506105dc8111155b6111695760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016107c4565b600d92909255600e55600f55565b6000546001600160a01b031633146111a15760405162461bcd60e51b81526004016107c49061274f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e157600080fd5b505afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121991906124e1565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561126157600080fd5b505afa158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906124e1565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131791906124e1565b90506001600160a01b0381166114bd57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561136057600080fd5b505afa158015611374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139891906124e1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e057600080fd5b505afa1580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141891906124e1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561146057600080fd5b505af1158015611474573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149891906124e1565b601680546001600160a01b0319166001600160a01b03929092169190911790556114d9565b601680546001600160a01b0319166001600160a01b0383161790555b50601580546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146115275760405162461bcd60e51b81526004016107c49061274f565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461157c5760405162461bcd60e51b81526004016107c49061274f565b828460135461158b91906128c5565b61159591906128a3565b60205560135481906115a89084906128c5565b6115b291906128a3565b60215550505050565b6001600160a01b0383166116075760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107c4565b6001600160a01b0382166116535760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107c4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117035760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016107c4565b6001600160a01b0383166117505760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016107c4565b6000821161178b5760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016107c4565b6117958484611a5b565b156119835760295460ff161561184c576001600160a01b03841660009081526002602052604090205460ff161561180b576001600160a01b0383166000908152602a60205260409020544314156117eb57600080fd5b6001600160a01b0383166000908152602a6020526040902043905561184c565b6001600160a01b0384166000908152602a602052604090205443141561183057600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b03841660009081526002602052604090205460ff168061188b57506001600160a01b03831660009081526002602052604090205460ff165b156118e257601c548211156118e25760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016107c4565b6017546001600160a01b0384811691161480159061191957506001600160a01b03831660009081526002602052604090205460ff16155b1561198357601f548261192b85610d2d565b611935919061288b565b11156119835760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016107c4565b6001600160a01b03841660009081526005602052604090205460019060ff16806119c557506001600160a01b03841660009081526005602052604090205460ff165b156119ce575060005b6001600160a01b03841660009081526002602052604090205460ff1615611a4657601954600160a01b900460ff16158015611a125750601954600160a81b900460ff165b15611a46576000611a2230610d2d565b90506020548110611a44576021548110611a3b57506021545b611a4481611b19565b505b611a5285858584611d16565b95945050505050565b600080546001600160a01b03848116911614801590611a8857506000546001600160a01b03838116911614155b8015611aad57506001600160a01b03821660009081526007602052604090205460ff16155b8015611ad257506001600160a01b03831660009081526007602052604090205460ff16155b8015611ae957506001600160a01b03821661dead14155b8015611afd57506001600160a01b03821615155b8015611b1257506001600160a01b0383163014155b9392505050565b6019805460ff60a01b1916600160a01b179055601254601154601054611b3f919061288b565b611b49919061288b565b611b5257611d06565b60006002601254601154601054611b69919061288b565b611b73919061288b565b601054611b8090856128c5565b611b8a91906128a3565b611b9491906128a3565b90506000611ba282846128e4565b9050611bad81611fd5565b600047905060006002601254601154601054611bc9919061288b565b611bd3919061288b565b601054611be090856128c5565b611bea91906128a3565b611bf491906128a3565b90508315611c4857611c068482612125565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611c5485876128e4565b1115611d01576018546012546011546001600160a01b03909216916108fc91611c7c9161288b565b601154611c8985876128e4565b611c9391906128c5565b611c9d91906128a3565b6040518115909202916000818181858888f19350505050158015611cc5573d6000803e3d6000fd5b506019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611cff573d6000803e3d6000fd5b505b505050505b506019805460ff60a01b19169055565b60225460009060ff1615611f02576001600160a01b03851660009081526006602052604090205460ff1680611d6357506001600160a01b03841660009081526006602052604090205460ff165b15611da35760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016107c4565b602254610100900460ff16611e3957611dbc85856121ce565b602254610100900460ff16158015611dd95750611dd98585611a5b565b15611e345760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016107c4565b611f02565b6000602454118015611e6357506001600160a01b03851660009081526002602052604090205460ff165b8015611e745750611e748585611a5b565b15611f0257602754602454611e8990436128e4565b1015611f02576001600160a01b0384166000908152600660205260408120805460ff191660011790556028805491611ec083612936565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03851660009081526001602052604081208054859290611f2a9084906128e4565b909155506000905082611f3d5783611f48565b611f4886868661230b565b6001600160a01b038616600090815260016020526040812080549293508392909190611f7590849061288b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fc191815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061200a5761200a612967565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561205e57600080fd5b505afa158015612072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209691906124e1565b816001815181106120a9576120a9612967565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac947906120ef90859060009086903090429060040161281a565b600060405180830381600087803b15801561210957600080fd5b505af115801561211d573d6000803e3d6000fd5b505050505050565b60155460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561218e57600080fd5b505af11580156121a2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121c79190612677565b5050505050565b602254610100900460ff16156122325760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107c4565b61223c8282611a5b565b15801561225657506016546001600160a01b038281169116145b15610e9c57602754600214612279576122714361138861288b565b60245561227e565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556019805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916122ff91901515815260200190565b60405180910390a15050565b60165460009081906001600160a01b03868116911614156123be57600061233185610d2d565b111561239a576009546001600160a01b03851660009081526008602052604090205461235d90426128e4565b101561239a5760405162461bcd60e51b815260206004820152600c60248201526b213abc9031b7b7b63237bbb760a11b60448201526064016107c4565b506001600160a01b0383166000908152600860205260409020429055600d546123e2565b6016546001600160a01b03858116911614156123dd5750600e546123e2565b50600f545b6123ec8585611a5b565b1561241957602354158061240f5750600a805461240991906128a3565b60235414155b1561241957600080fd5b600061271061242883866128c5565b61243291906128a3565b3060009081526001602052604081208054929350839290919061245690849061288b565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36124a581856128e4565b9695505050505050565b803580151581146124bf57600080fd5b919050565b6000602082840312156124d657600080fd5b8135611b128161297d565b6000602082840312156124f357600080fd5b8151611b128161297d565b6000806040838503121561251157600080fd5b823561251c8161297d565b9150602083013561252c8161297d565b809150509250929050565b60008060006060848603121561254c57600080fd5b83356125578161297d565b925060208401356125678161297d565b929592945050506040919091013590565b6000806040838503121561258b57600080fd5b82356125968161297d565b91506125a4602084016124af565b90509250929050565b600080604083850312156125c057600080fd5b82356125cb8161297d565b946020939093013593505050565b6000602082840312156125eb57600080fd5b611b12826124af565b6000806040838503121561260757600080fd5b612596836124af565b60006020828403121561262257600080fd5b5035919050565b6000806040838503121561263c57600080fd5b50508035926020909101359150565b60008060006060848603121561266057600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561268c57600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156126bb57600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156126e957600080fd5b813560ff81168114611b1257600080fd5b600060208083528351808285015260005b818110156127275785810183015185820160400152820161270b565b81811115612739576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561286a5784516001600160a01b031683529383019391830191600101612845565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561289e5761289e612951565b500190565b6000826128c057634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128df576128df612951565b500290565b6000828210156128f6576128f6612951565b500390565b600181811c9082168061290f57607f821691505b6020821081141561293057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561294a5761294a612951565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461299257600080fd5b5056fea26469706673582212208dc29c31e30912024d664106f21d58c8c9fa2e777aa8e82aa3825301271b47ac64736f6c63430008070033
Deployed Bytecode Sourcemap
8253:19192:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9828:73;;;;;;;;;;;;9859:42;9828:73;;;;;-1:-1:-1;;;;;4926:32:1;;;4908:51;;4896:2;4881:18;9828:73:0;;;;;;;;18857:169;;;;;;;;;;-1:-1:-1;18857:169:0;;;;;:::i;:::-;;:::i;:::-;;14809:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9653:35::-;;;;;;;;;;-1:-1:-1;9653:35:0;;;;-1:-1:-1;;;;;9653:35:0;;;15422:161;;;;;;;;;;-1:-1:-1;15422:161:0;;;;;:::i;:::-;;:::i;:::-;;;6056:14:1;;6049:22;6031:41;;6019:2;6004:18;15422:161:0;5891:187:1;14544:83:0;;;;;;;;;;-1:-1:-1;14617:7:0;;14544:83;;;13280:25:1;;;13268:2;13253:18;14544:83:0;13134:177:1;16036:306:0;;;;;;;;;;-1:-1:-1;16036:306:0;;;;;:::i;:::-;;:::i;19965:260::-;;;;;;;;;;-1:-1:-1;19965:260:0;;;;;:::i;:::-;;:::i;14633:80::-;;;;;;;;;;-1:-1:-1;14633:80:0;;9547:1;14767:36:1;;14755:2;14740:18;14633:80:0;14625:184:1;16350:215:0;;;;;;;;;;-1:-1:-1;16350:215:0;;;;;:::i;:::-;;:::i;19700:257::-;;;;;;;;;;-1:-1:-1;19700:257:0;;;;;:::i;:::-;;:::i;9006:28::-;;;;;;;;;;;;;;;;18632:217;;;;;;;;;;-1:-1:-1;18632:217:0;;;;;:::i;:::-;;:::i;9695:21::-;;;;;;;;;;-1:-1:-1;9695:21:0;;;;-1:-1:-1;;;;;9695:21:0;;;18148:161;;;;;;;;;;-1:-1:-1;18148:161:0;;;;;:::i;:::-;;:::i;10139:41::-;;;;;;;;;;-1:-1:-1;10139:41:0;;;;-1:-1:-1;;;10139:41:0;;;;;;13227:761;;;;;;;;;;-1:-1:-1;13227:761:0;;;;;:::i;:::-;;:::i;17733:125::-;;;;;;;;;;-1:-1:-1;17733:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;17822:28:0;17798:4;17822:28;;;:19;:28;;;;;;;;;17733:125;10717:36;;;;;;;;;;-1:-1:-1;10717:36:0;;;;;;;;;;;15908:120;;;;;;;;;;-1:-1:-1;15908:120:0;;;;;:::i;:::-;;:::i;9041:29::-;;;;;;;;;;;;;;;;17866:134;;;;;;;;;;-1:-1:-1;17866:134:0;;;;;:::i;:::-;;:::i;15122:117::-;;;;;;;;;;-1:-1:-1;15122:117:0;;;;;:::i;:::-;;:::i;13996:195::-;;;;;;;;;;;;;:::i;17315:410::-;;;;;;;;;;-1:-1:-1;17315:410:0;;;;;:::i;:::-;;:::i;18317:158::-;;;;;;;;;;-1:-1:-1;18317:158:0;;;;;:::i;:::-;;:::i;14895:80::-;;;;;;;;;;-1:-1:-1;14947:7:0;13205:6;-1:-1:-1;;;;;13205:6:0;14895:80;;18008:132;;;;;;;;;;-1:-1:-1;18008:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;18101:31:0;18077:4;18101:31;;;:22;:31;;;;;;;;;18008:132;14719:84;;;;;;;;;;;;;:::i;16573:225::-;;;;;;;;;;-1:-1:-1;16573:225:0;;;;;:::i;:::-;;:::i;15247:167::-;;;;;;;;;;-1:-1:-1;15247:167:0;;;;;:::i;:::-;;:::i;20744:171::-;;;;;;;;;;-1:-1:-1;20744:171:0;;;;;:::i;:::-;;:::i;19415:277::-;;;;;;;;;;-1:-1:-1;19415:277:0;;;;;:::i;:::-;;:::i;20530:206::-;;;;;;;;;;-1:-1:-1;20530:206:0;;;;;:::i;:::-;;:::i;14981:133::-;;;;;;;;;;-1:-1:-1;14981:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15083:19:0;;;15065:7;15083:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14981:133;10968:32;;;;;;;;;;;;;;;;19034:373;;;;;;;;;;-1:-1:-1;19034:373:0;;;;;:::i;:::-;;:::i;16806:501::-;;;;;;;;;;-1:-1:-1;16806:501:0;;;;;:::i;:::-;;:::i;18483:141::-;;;;;;;;;;-1:-1:-1;18483:141:0;;;;;:::i;:::-;;:::i;20233:289::-;;;;;;;;;;-1:-1:-1;20233:289:0;;;;;:::i;:::-;;:::i;18857:169::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;;;;;;;;;18952:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;18952:28:0;;::::1;;::::0;;18991:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;18857:169::o;14809:80::-;14857:13;14881:5;14874:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14809:80;:::o;15422:161::-;15497:4;15514:39;2734:10;15537:7;15546:6;15514:8;:39::i;:::-;-1:-1:-1;15571:4:0;15422:161;;;;:::o;16036:306::-;-1:-1:-1;;;;;16157:19:0;;16136:4;16157:19;;;:11;:19;;;;;;;;16177:10;16157:31;;;;;;;;-1:-1:-1;;16157:52:0;16153:126;;-1:-1:-1;;;;;16226:19:0;;;;;;:11;:19;;;;;;;;16246:10;16226:31;;;;;;;:41;;16261:6;;16226:19;:41;;16261:6;;16226:41;:::i;:::-;;;;-1:-1:-1;;16153:126:0;16298:36;16308:6;16316:9;16327:6;16298:9;:36::i;:::-;16291:43;16036:306;-1:-1:-1;;;;16036:306:0:o;19965:260::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;20055:13:::1;20093:7;20082;20072;;:17;;;;:::i;:::-;20071:29;;;;:::i;:::-;20055:45;;20139:4;20129:7;;:14;;;;:::i;:::-;20119:5;:25;;20111:73;;;;-1:-1:-1::0;;;20111:73:0::1;;;;;;;:::i;:::-;20195:14;:22:::0;-1:-1:-1;;19965:260:0:o;16350:215::-;2734:10;16438:4;16487:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16487:34:0;;;;;;;;;;16438:4;;16455:80;;16478:7;;16487:47;;16524:10;;16487:47;:::i;:::-;16455:8;:80::i;19700:257::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;19789:13:::1;19827:7;19816;19806;;:17;;;;:::i;:::-;19805:29;;;;:::i;:::-;19789:45;;19873:4;19863:7;;:14;;;;:::i;:::-;19853:5;:25;;19845:73;;;;-1:-1:-1::0;;;19845:73:0::1;;;;;;;:::i;:::-;19929:12;:20:::0;-1:-1:-1;;19700:257:0:o;18632:217::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;18716:13:::1;::::0;:18;:39;::::1;;;-1:-1:-1::0;18739:16:0::1;::::0;::::1;::::0;::::1;;;18738:17;18716:39;18707:101;;;::::0;-1:-1:-1;;;18707:101:0;;7462:2:1;18707:101:0::1;::::0;::::1;7444:21:1::0;7501:2;7481:18;;;7474:30;7540:34;7520:18;;;7513:62;-1:-1:-1;;;7591:18:1;;;7584:46;7647:19;;18707:101:0::1;7260:412:1::0;18707:101:0::1;18819:22;;:13;:22:::0;18632:217::o;18148:161::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;18220:21:::1;18244:19;:7:::0;18254:9:::1;18244:19;:::i;:::-;18274:11;:27:::0;-1:-1:-1;;18148:161:0:o;13227:761::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13308:22:0;::::1;13300:96;;;;-1:-1:-1::0;;;13300:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13415:16:0;::::1;9859:42;13415:16;;13407:90;;;;-1:-1:-1::0;;;13407:90:0::1;;;;;;;:::i;:::-;13528:6;::::0;;13508:34:::1;::::0;-1:-1:-1;;;;;13528:6:0;;::::1;::::0;13508:19:::1;:34::i;:::-;13553:35;13573:8;13583:4;13553:19;:35::i;:::-;13641:6;::::0;13613:16:::1;::::0;-1:-1:-1;;;;;13613:16:0;;::::1;13641:6:::0;::::1;13613:35;13609:90;;;13663:16;:36:::0;;-1:-1:-1;;;;;;13663:36:0::1;-1:-1:-1::0;;;;;13663:36:0;::::1;;::::0;;13609:90:::1;13762:6;::::0;13752:17:::1;::::0;-1:-1:-1;;;;;13762:6:0::1;13752:9;:17::i;:::-;13720:19;13732:6:::0;;-1:-1:-1;;;;;13732:6:0;;::::1;13720:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;13793:6;;13720:19;;13783:17:::1;::::0;13793:6:::1;13783:9;:17::i;:::-;:21;13780:99;;;13831:6;::::0;13821:46:::1;::::0;-1:-1:-1;;;;;13831:6:0::1;13839:8:::0;13849:17:::1;13831:6:::0;13849:9:::1;:17::i;:::-;13821:9;:46::i;:::-;;13780:99;13899:6;:17:::0;;-1:-1:-1;;;;;;13899:17:0::1;-1:-1:-1::0;;;;;13899:17:0;::::1;::::0;;::::1;::::0;;13932:38:::1;::::0;13899:17;;;;13932:38:::1;::::0;13899:6;13932:38:::1;13227:761:::0;:::o;15908:120::-;15961:4;15985:35;15993:7;-1:-1:-1;;15985:7:0;:35::i;:::-;15978:42;15908:120;-1:-1:-1;;15908:120:0:o;17866:134::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17954:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;17954:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17866:134::o;15122:117::-;-1:-1:-1;;;;;15215:16:0;15188:7;15215:16;;;:7;:16;;;;;;;15122:117::o;13996:195::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;14083:6:::1;::::0;;14063:34:::1;::::0;-1:-1:-1;;;;;14083:6:0;;::::1;::::0;14063:19:::1;:34::i;:::-;14125:1;14108:19:::0;;-1:-1:-1;;;;;;14108:19:0::1;::::0;;14143:40:::1;::::0;14125:1;;14143:40:::1;::::0;14125:1;;14143:40:::1;13996:195::o:0;17315:410::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;17396:16;17392:326:::1;;-1:-1:-1::0;;;;;;17429:13:0::1;17445:5;17429:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;17429:21:0::1;::::0;;17315:410::o;17392:326::-:1;17487:17;::::0;:22;17483:139:::1;;17576:7;17556:17;;17538:15;:35;;;;:::i;:::-;:45;17530:76;;;::::0;-1:-1:-1;;;17530:76:0;;10140:2:1;17530:76:0::1;::::0;::::1;10122:21:1::0;10179:2;10159:18;;;10152:30;-1:-1:-1;;;10198:18:1;;;10191:48;10256:18;;17530:76:0::1;9938:342:1::0;17530:76:0::1;-1:-1:-1::0;;;;;17636:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;17636:20:0::1;17652:4;17636:20;::::0;;17691:15:::1;17671:17;:35:::0;17392:326:::1;17315:410:::0;;:::o;18317:158::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;18399:13:::1;::::0;:18;18390:38:::1;;;::::0;-1:-1:-1;;;18390:38:0;;11516:2:1;18390:38:0::1;::::0;::::1;11498:21:1::0;11555:1;11535:18;;;11528:29;-1:-1:-1;;;11573:18:1;;;11566:36;11619:18;;18390:38:0::1;11314:329:1::0;18390:38:0::1;18439:13;:28:::0;18317:158::o;14719:84::-;14769:13;14793:7;14786:14;;;;;:::i;16573:225::-;2734:10;16666:4;16715:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16715:34:0;;;;;;;;;;16666:4;;16683:85;;16706:7;;16715:52;;16752:15;;16715:52;:::i;15247:167::-;15325:4;15342:42;2734:10;15366:9;15377:6;15342:9;:42::i;:::-;-1:-1:-1;15402:4:0;;15247:167;-1:-1:-1;;;15247:167:0:o;20744:171::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;20821:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;20821:32:0::1;-1:-1:-1::0;;;;20821:32:0;;::::1;;::::0;;20869:38:::1;::::0;::::1;::::0;::::1;::::0;20845:8;6056:14:1;6049:22;6031:41;;6019:2;6004:18;;5891:187;20869:38:0::1;;;;;;;;20744:171:::0;:::o;19415:277::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;19548:3;19524:21:::1;19536:9:::0;19524;:21:::1;:::i;:::-;:27;;;;:::i;:::-;19555:3;19524:34;19515:67;;;::::0;-1:-1:-1;;;19515:67:0;;12205:2:1;19515:67:0::1;::::0;::::1;12187:21:1::0;12244:2;12224:18;;;12217:30;-1:-1:-1;;;12263:18:1;;;12256:49;12322:18;;19515:67:0::1;12003:343:1::0;19515:67:0::1;19593:15;:27:::0;;;;19631:15:::1;:27:::0;19669:9:::1;:15:::0;19415:277::o;20530:206::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;20641:16:::1;:43:::0;;-1:-1:-1;;;;;20641:43:0;;::::1;-1:-1:-1::0;;;;;;20641:43:0;;::::1;;::::0;;;20695:11:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;20530:206::o;19034:373::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;9160:4:::1;19144:6;:21;;:65;;;;;9211:4;19186:7;:23;;19144:65;:117;;;;;9266:4;19230:11;:31;;19144:117;19136:170;;;::::0;-1:-1:-1;;;19136:170:0;;9035:2:1;19136:170:0::1;::::0;::::1;9017:21:1::0;9074:2;9054:18;;;9047:30;9113:25;9093:18;;;9086:53;9156:18;;19136:170:0::1;8833:347:1::0;19136:170:0::1;19317:7;:16:::0;;;;19344:8:::1;:18:::0;19373:12:::1;:26:::0;19034:373::o;16806:501::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;16877:29:::1;16928:9;16877:61;;16949:16;16986:10;-1:-1:-1::0;;;;;16986:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16968:47:0::1;;17024:4;17031:10;-1:-1:-1::0;;;;;17031:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16968:81;::::0;-1:-1:-1;;;;;;16968:81:0::1;::::0;;;;;;-1:-1:-1;;;;;5200:15:1;;;16968:81:0::1;::::0;::::1;5182:34:1::0;5252:15;;5232:18;;;5225:43;5117:18;;16968:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16949:100:::0;-1:-1:-1;;;;;;17064:22:0;::::1;17060:207;;17130:10;-1:-1:-1::0;;;;;17130:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17112:50:0::1;;17171:4;17178:10;-1:-1:-1::0;;;;;17178:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17112:84;::::0;-1:-1:-1;;;;;;17112:84:0::1;::::0;;;;;;-1:-1:-1;;;;;5200:15:1;;;17112:84:0::1;::::0;::::1;5182:34:1::0;5252:15;;5232:18;;;5225:43;5117:18;;17112:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17103:6;:93:::0;;-1:-1:-1;;;;;;17103:93:0::1;-1:-1:-1::0;;;;;17103:93:0;;;::::1;::::0;;;::::1;::::0;;17060:207:::1;;;17238:6;:17:::0;;-1:-1:-1;;;;;;17238:17:0::1;-1:-1:-1::0;;;;;17238:17:0;::::1;;::::0;;17060:207:::1;-1:-1:-1::0;17277:9:0::1;:22:::0;;-1:-1:-1;;;;;;17277:22:0::1;-1:-1:-1::0;;;;;17277:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;16806:501:0:o;18483:141::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18575:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:41;;-1:-1:-1;;18575:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18483:141::o;20233:289::-;11662:6;;-1:-1:-1;;;;;11662:6:0;2734:10;11662:22;11654:52;;;;-1:-1:-1;;;11654:52:0;;;;;;;:::i;:::-;20433:16:::1;20413;20403:7;;:26;;;;:::i;:::-;20402:47;;;;:::i;:::-;20386:13;:63:::0;20474:7:::1;::::0;20501:13;;20474:23:::1;::::0;20484:13;;20474:23:::1;:::i;:::-;20473:41;;;;:::i;:::-;20460:10;:54:::0;-1:-1:-1;;;;20233:289:0:o;15591:309::-;-1:-1:-1;;;;;15685:20:0;;15677:52;;;;-1:-1:-1;;;15677:52:0;;10823:2:1;15677:52:0;;;10805:21:1;10862:2;10842:18;;;10835:30;-1:-1:-1;;;10881:18:1;;;10874:49;10940:18;;15677:52:0;10621:343:1;15677:52:0;-1:-1:-1;;;;;15748:21:0;;15740:53;;;;-1:-1:-1;;;15740:53:0;;10823:2:1;15740:53:0;;;10805:21:1;10862:2;10842:18;;;10835:30;-1:-1:-1;;;10881:18:1;;;10874:49;10940:18;;15740:53:0;10621:343:1;15740:53:0;-1:-1:-1;;;;;15806:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;15859:33;;13280:25:1;;;15859:33:0;;13253:18:1;15859:33:0;;;;;;;15591:309;;;:::o;21254:1646::-;21333:4;-1:-1:-1;;;;;21358:18:0;;21350:51;;;;-1:-1:-1;;;21350:51:0;;9791:2:1;21350:51:0;;;9773:21:1;9830:2;9810:18;;;9803:30;-1:-1:-1;;;9849:18:1;;;9842:50;9909:18;;21350:51:0;9589:344:1;21350:51:0;-1:-1:-1;;;;;21420:16:0;;21412:49;;;;-1:-1:-1;;;21412:49:0;;9791:2:1;21412:49:0;;;9773:21:1;9830:2;9810:18;;;9803:30;-1:-1:-1;;;9849:18:1;;;9842:50;9909:18;;21412:49:0;9589:344:1;21412:49:0;21489:1;21480:6;:10;21472:31;;;;-1:-1:-1;;;21472:31:0;;10487:2:1;21472:31:0;;;10469:21:1;10526:1;10506:18;;;10499:29;-1:-1:-1;;;10544:18:1;;;10537:38;10592:18;;21472:31:0;10285:331:1;21472:31:0;21517:20;21528:4;21534:2;21517:10;:20::i;:::-;21514:707;;;21558:15;;;;21554:347;;;-1:-1:-1;;;;;21598:13:0;;;;;;:7;:13;;;;;;;;21594:292;;;-1:-1:-1;;;;;21643:13:0;;;;;;:9;:13;;;;;;21660:12;21643:29;;21635:38;;;;;;-1:-1:-1;;;;;21696:13:0;;;;;;:9;:13;;;;;21712:12;21696:28;;21594:292;;;-1:-1:-1;;;;;21781:15:0;;;;;;:9;:15;;;;;;21800:12;21781:31;;21773:40;;;;;;-1:-1:-1;;;;;21836:15:0;;;;;;:9;:15;;;;;21854:12;21836:30;;21594:292;-1:-1:-1;;;;;21918:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;21935:11:0;;;;;;:7;:11;;;;;;;;21918:28;21915:126;;;21984:12;;21974:6;:22;;21966:59;;;;-1:-1:-1;;;21966:59:0;;12553:2:1;21966:59:0;;;12535:21:1;12592:2;12572:18;;;12565:30;12631:26;12611:18;;;12604:54;12675:18;;21966:59:0;12351:348:1;21966:59:0;22064:14;;-1:-1:-1;;;;;22058:20:0;;;22064:14;;22058:20;;;;:36;;-1:-1:-1;;;;;;22083:11:0;;;;;;:7;:11;;;;;;;;22082:12;22058:36;22055:155;;;22149:14;;22139:6;22123:13;22133:2;22123:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;22115:79;;;;-1:-1:-1;;;22115:79:0;;11850:2:1;22115:79:0;;;11832:21:1;11889:2;11869:18;;;11862:30;11928:28;11908:18;;;11901:56;11974:18;;22115:79:0;11648:350:1;22115:79:0;-1:-1:-1;;;;;22266:25:0;;22233:12;22266:25;;;:19;:25;;;;;;22248:4;;22266:25;;;:52;;-1:-1:-1;;;;;;22295:23:0;;;;;;:19;:23;;;;;;;;22266:52;22263:98;;;-1:-1:-1;22344:5:0;22263:98;-1:-1:-1;;;;;22377:11:0;;;;;;:7;:11;;;;;;;;22373:457;;;22410:16;;-1:-1:-1;;;22410:16:0;;;;22409:17;:59;;;;-1:-1:-1;22447:21:0;;-1:-1:-1;;;22447:21:0;;;;22409:59;22405:408;;;22503:28;22534:24;22552:4;22534:9;:24::i;:::-;22503:55;;22605:13;;22581:20;:37;22577:221;;22670:10;;22646:20;:34;22643:77;;-1:-1:-1;22707:10:0;;22643:77;22742:36;22757:20;22742:14;:36::i;:::-;22484:329;22405:408;22848:44;22866:4;22872:2;22876:6;22884:7;22848:17;:44::i;:::-;22841:51;21254:1646;-1:-1:-1;;;;;21254:1646:0:o;20923:323::-;20991:4;13205:6;;-1:-1:-1;;;;;21015:15:0;;;13205:6;;21015:15;;;;:45;;-1:-1:-1;13178:7:0;13205:6;-1:-1:-1;;;;;21047:13:0;;;13205:6;;21047:13;;21015:45;:84;;;;-1:-1:-1;;;;;;21078:21:0;;;;;;:17;:21;;;;;;;;21077:22;21015:84;:125;;;;-1:-1:-1;;;;;;21117:23:0;;;;;;:17;:23;;;;;;;;21116:24;21015:125;:152;;;;-1:-1:-1;;;;;;21157:10:0;;9859:42;21157:10;;21015:152;:185;;;;-1:-1:-1;;;;;;21184:16:0;;;;21015:185;:223;;;;-1:-1:-1;;;;;;21217:21:0;;21233:4;21217:21;;21015:223;21008:230;20923:323;-1:-1:-1;;;20923:323:0:o;22908:1015::-;11536:16;:23;;-1:-1:-1;;;;11536:23:0;-1:-1:-1;;;11536:23:0;;;23033:9:::1;::::0;23015:15:::1;::::0;22997::::1;::::0;:33:::1;::::0;23015:15;22997:33:::1;:::i;:::-;:45;;;;:::i;:::-;22993:76;;23062:7;;22993:76;23079:17;23194:1;23180:9;;23162:15;;23144;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;23124:15;::::0;23101:38:::1;::::0;:20;:38:::1;:::i;:::-;23100:90;;;;:::i;:::-;23099:96;;;;:::i;:::-;23079:116:::0;-1:-1:-1;23208:20:0::1;23231:32;23079:116:::0;23231:20;:32:::1;:::i;:::-;23208:55;;23274:30;23291:12;23274:16;:30::i;:::-;23317:22;23342:21;23317:46;;23374:24;23490:1;23476:9;;23458:15;;23440;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;23420:15;::::0;23403:32:::1;::::0;:14;:32:::1;:::i;:::-;23402:84;;;;:::i;:::-;23401:90;;;;:::i;:::-;23374:117:::0;-1:-1:-1;23508:13:0;;23504:161:::1;;23538:41;23551:9;23562:16;23538:12;:41::i;:::-;23599:54;::::0;;14503:25:1;;;14559:2;14544:18;;14537:34;;;14587:18;;;14580:34;;;23599:54:0::1;::::0;14491:2:1;14476:18;23599:54:0::1;;;;;;;23504:161;23714:1;23679:32;23702:9:::0;23679:20;:32:::1;:::i;:::-;:36;23675:241;;;23732:16;::::0;23835:9:::1;::::0;23817:15:::1;::::0;-1:-1:-1;;;;;23732:16:0;;::::1;::::0;:114:::1;::::0;23817:27:::1;::::0;::::1;:::i;:::-;23797:15;::::0;23760:33:::1;23777:16:::0;23760:14;:33:::1;:::i;:::-;23759:53;;;;:::i;:::-;23758:87;;;;:::i;:::-;23732:114;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;23861:11:0::1;::::0;:43:::1;::::0;-1:-1:-1;;;;;23861:11:0;;::::1;::::0;23882:21:::1;23861:43:::0;::::1;;;::::0;:11:::1;:43:::0;:11;:43;23882:21;23861:11;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23675:241;22982:941;;;;11570:1;-1:-1:-1::0;11582:16:0;:24;;-1:-1:-1;;;;11582:24:0;;;22908:1015::o;25319:1216::-;25440:16;;25419:4;;25440:16;;25436:858;;;-1:-1:-1;;;;;18101:31:0;;18077:4;18101:31;;;:22;:31;;;;;;;;25476:56;;;-1:-1:-1;;;;;;18101:31:0;;18077:4;18101:31;;;:22;:31;;;;;;;;25507:25;25472:123;;;25553:26;;-1:-1:-1;;;25553:26:0;;11171:2:1;25553:26:0;;;11153:21:1;11210:2;11190:18;;;11183:30;-1:-1:-1;;;11229:18:1;;;11222:46;11285:18;;25553:26:0;10969:340:1;25472:123:0;25616:16;;;;;;;25611:672;;25653:28;25672:4;25678:2;25653:18;:28::i;:::-;25705:16;;;;;;;25704:17;:41;;;;;25725:20;25736:4;25742:2;25725:10;:20::i;:::-;25700:137;;;25770:47;;-1:-1:-1;;;25770:47:0;;8629:2:1;25770:47:0;;;8611:21:1;8668:2;8648:18;;;8641:30;8707:34;8687:18;;;8680:62;-1:-1:-1;;;8758:18:1;;;8751:35;8803:19;;25770:47:0;8427:401:1;25700:137:0;25611:672;;;25896:1;25881:12;;:16;:55;;;;-1:-1:-1;;;;;;25923:13:0;;;;;;:7;:13;;;;;;;;25881:55;:101;;;;;25962:20;25973:4;25979:2;25962:10;:20::i;:::-;25877:391;;;26059:13;;26044:12;;26029:27;;:12;:27;:::i;:::-;:43;26025:224;;;-1:-1:-1;;;;;26101:26:0;;;;;;:22;:26;;;;;:33;;-1:-1:-1;;26101:33:0;26130:4;26101:33;;;26161:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;26209:16:0;;-1:-1:-1;;;;;4926:32:1;;4908:51;;26209:16:0;;4896:2:1;4881:18;26209:16:0;;;;;;;26025:224;-1:-1:-1;;;;;26306:13:0;;;;;;:7;:13;;;;;:23;;26323:6;;26306:13;:23;;26323:6;;26306:23;:::i;:::-;;;;-1:-1:-1;26340:22:0;;-1:-1:-1;26366:7:0;26365:48;;26407:6;26365:48;;;26377:27;26387:4;26393:2;26397:6;26377:9;:27::i;:::-;-1:-1:-1;;;;;26424:11:0;;;;;;:7;:11;;;;;:29;;26340:73;;-1:-1:-1;26340:73:0;;26424:11;;;:29;;26340:73;;26424:29;:::i;:::-;;;;;;;;26486:2;-1:-1:-1;;;;;26471:34:0;26480:4;-1:-1:-1;;;;;26471:34:0;;26490:14;26471:34;;;;13280:25:1;;13268:2;13253:18;;13134:177;26471:34:0;;;;;;;;-1:-1:-1;26523:4:0;;25319:1216;-1:-1:-1;;;;;25319:1216:0:o;23931:417::-;24022:16;;;24036:1;24022:16;;;;;;;;23998:21;;24022:16;;;;;;;;;;-1:-1:-1;24022:16:0;23998:40;;24067:4;24049;24054:1;24049:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24049:23:0;;;:7;;;;;;;;;;:23;;;;24093:9;;:16;;;-1:-1:-1;;;24093:16:0;;;;:9;;;;;:14;;:16;;;;;24049:7;;24093:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24083:4;24088:1;24083:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24083:26:0;;;:7;;;;;;;;;:26;24122:9;;:218;;-1:-1:-1;;;24122:218:0;;:9;;;:60;;:218;;24197:11;;24122:9;;24267:4;;24294;;24314:15;;24122:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23987:361;23931:417;:::o;24356:332::-;24437:9;;:243;;-1:-1:-1;;;24437:243:0;;24503:4;24437:243;;;5620:34:1;5670:18;;;5663:34;;;24437:9:0;5713:18:1;;;5706:34;;;5756:18;;;5749:34;9859:42:0;5799:19:1;;;5792:44;24654:15:0;5852:19:1;;;5845:35;-1:-1:-1;;;;;24437:9:0;;;;:25;;24470:9;;5554:19:1;;24437:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24356:332;;:::o;24696:615::-;24778:16;;;;;;;24777:17;24769:65;;;;-1:-1:-1;;;24769:65:0;;8225:2:1;24769:65:0;;;8207:21:1;8264:2;8244:18;;;8237:30;8303:34;8283:18;;;8276:62;-1:-1:-1;;;8354:18:1;;;8347:33;8397:19;;24769:65:0;8023:399:1;24769:65:0;24850:20;24861:4;24867:2;24850:10;:20::i;:::-;24849:21;:37;;;;-1:-1:-1;24880:6:0;;-1:-1:-1;;;;;24874:12:0;;;24880:6;;24874:12;24849:37;24845:459;;;24907:13;;24924:1;24907:18;24903:161;;24961:19;:12;24976:4;24961:19;:::i;:::-;24946:12;:34;24903:161;;;25036:12;25021;:27;24903:161;-1:-1:-1;;;;;25080:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;25080:30:0;25106:4;25080:30;;;;;;25125:16;:23;;-1:-1:-1;;25125:23:0;25080:30;25125:23;;;25178:15;25163:12;:30;25210:21;:28;;-1:-1:-1;;;;25210:28:0;-1:-1:-1;;;25210:28:0;;;25258:34;;;;;;6056:14:1;;6049:22;6031:41;;6019:2;6004:18;;5891:187;25258:34:0;;;;;;;;24696:615;;:::o;26543:899::-;26683:6;;26622:7;;;;-1:-1:-1;;;;;26675:14:0;;;26683:6;;26675:14;26671:383;;;26726:1;26710:13;26720:2;26710:9;:13::i;:::-;:17;26706:125;;;26787:11;;-1:-1:-1;;;;;26773:10:0;;;;;;:6;:10;;;;;;26755:28;;:15;:28;:::i;:::-;:43;;26747:68;;;;-1:-1:-1;;;26747:68:0;;7121:2:1;26747:68:0;;;7103:21:1;7160:2;7140:18;;;7133:30;-1:-1:-1;;;7179:18:1;;;7172:42;7231:18;;26747:68:0;6919:336:1;26747:68:0;-1:-1:-1;;;;;;26847:10:0;;;;;;:6;:10;;;;;26860:15;26847:28;;26903:7;;26671:383;;;26940:6;;-1:-1:-1;;;;;26934:12:0;;;26940:6;;26934:12;26930:124;;;-1:-1:-1;26976:8:0;;26930:124;;;-1:-1:-1;27030:12:0;;26930:124;27070:20;27081:4;27087:2;27070:10;:20::i;:::-;27066:156;;;27110:13;;:18;;:56;;;27164:2;27149:14;;:17;;;;:::i;:::-;27132:13;;:34;;27110:56;27106:105;;;27187:8;;;27106:105;27234:17;9448:6;27254:19;27263:10;27254:6;:19;:::i;:::-;:38;;;;:::i;:::-;27321:4;27305:22;;;;:7;:22;;;;;:35;;27234:58;;-1:-1:-1;27234:58:0;;27305:22;;;:35;;27234:58;;27305:35;:::i;:::-;;;;-1:-1:-1;;27356:40:0;;13280:25:1;;;27379:4:0;;-1:-1:-1;;;;;27356:40:0;;;;;13268:2:1;13253:18;27356:40:0;;;;;;;27416:18;27425:9;27416:6;:18;:::i;:::-;27409:25;26543:899;-1:-1:-1;;;;;;26543:899:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:404::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;-1:-1:-1;1013:2:1;998:18;;985:32;1026:33;985:32;1026:33;:::i;:::-;1078:7;1068:17;;;687:404;;;;;:::o;1489:456::-;1566:6;1574;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:52;;;1651:1;1648;1641:12;1603:52;1690:9;1677:23;1709:31;1734:5;1709:31;:::i;:::-;1759:5;-1:-1:-1;1816:2:1;1801:18;;1788:32;1829:33;1788:32;1829:33;:::i;:::-;1489:456;;1881:7;;-1:-1:-1;;;1935:2:1;1920:18;;;;1907:32;;1489:456::o;1950:315::-;2015:6;2023;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2131:9;2118:23;2150:31;2175:5;2150:31;:::i;:::-;2200:5;-1:-1:-1;2224:35:1;2255:2;2240:18;;2224:35;:::i;:::-;2214:45;;1950:315;;;;;:::o;2270:::-;2338:6;2346;2399:2;2387:9;2378:7;2374:23;2370:32;2367:52;;;2415:1;2412;2405:12;2367:52;2454:9;2441:23;2473:31;2498:5;2473:31;:::i;:::-;2523:5;2575:2;2560:18;;;;2547:32;;-1:-1:-1;;;2270:315:1:o;2590:180::-;2646:6;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2738:26;2754:9;2738:26;:::i;2775:248::-;2837:6;2845;2898:2;2886:9;2877:7;2873:23;2869:32;2866:52;;;2914:1;2911;2904:12;2866:52;2937:26;2953:9;2937:26;:::i;3028:180::-;3087:6;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;-1:-1:-1;3179:23:1;;3028:180;-1:-1:-1;3028:180:1:o;3213:248::-;3281:6;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;;3381:23:1;;;3451:2;3436:18;;;3423:32;;-1:-1:-1;3213:248:1:o;3466:316::-;3543:6;3551;3559;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;-1:-1:-1;;3651:23:1;;;3721:2;3706:18;;3693:32;;-1:-1:-1;3772:2:1;3757:18;;;3744:32;;3466:316;-1:-1:-1;3466:316:1:o;3787:306::-;3875:6;3883;3891;3944:2;3932:9;3923:7;3919:23;3915:32;3912:52;;;3960:1;3957;3950:12;3912:52;3989:9;3983:16;3973:26;;4039:2;4028:9;4024:18;4018:25;4008:35;;4083:2;4072:9;4068:18;4062:25;4052:35;;3787:306;;;;;:::o;4098:385::-;4184:6;4192;4200;4208;4261:3;4249:9;4240:7;4236:23;4232:33;4229:53;;;4278:1;4275;4268:12;4229:53;-1:-1:-1;;4301:23:1;;;4371:2;4356:18;;4343:32;;-1:-1:-1;4422:2:1;4407:18;;4394:32;;4473:2;4458:18;4445:32;;-1:-1:-1;4098:385:1;-1:-1:-1;4098:385:1:o;4488:269::-;4545:6;4598:2;4586:9;4577:7;4573:23;4569:32;4566:52;;;4614:1;4611;4604:12;4566:52;4653:9;4640:23;4703:4;4696:5;4692:16;4685:5;4682:27;4672:55;;4723:1;4720;4713:12;6317:597;6429:4;6458:2;6487;6476:9;6469:21;6519:6;6513:13;6562:6;6557:2;6546:9;6542:18;6535:34;6587:1;6597:140;6611:6;6608:1;6605:13;6597:140;;;6706:14;;;6702:23;;6696:30;6672:17;;;6691:2;6668:26;6661:66;6626:10;;6597:140;;;6755:6;6752:1;6749:13;6746:91;;;6825:1;6820:2;6811:6;6800:9;6796:22;6792:31;6785:42;6746:91;-1:-1:-1;6898:2:1;6877:15;-1:-1:-1;;6873:29:1;6858:45;;;;6905:2;6854:54;;6317:597;-1:-1:-1;;;6317:597:1:o;7677:341::-;7879:2;7861:21;;;7918:2;7898:18;;;7891:30;-1:-1:-1;;;7952:2:1;7937:18;;7930:47;8009:2;7994:18;;7677:341::o;9185:399::-;9387:2;9369:21;;;9426:2;9406:18;;;9399:30;9465:34;9460:2;9445:18;;9438:62;-1:-1:-1;;;9531:2:1;9516:18;;9509:33;9574:3;9559:19;;9185:399::o;12704:425::-;12906:2;12888:21;;;12945:2;12925:18;;;12918:30;12984:34;12979:2;12964:18;;12957:62;13055:31;13050:2;13035:18;;13028:59;13119:3;13104:19;;12704:425::o;13316:980::-;13578:4;13626:3;13615:9;13611:19;13657:6;13646:9;13639:25;13683:2;13721:6;13716:2;13705:9;13701:18;13694:34;13764:3;13759:2;13748:9;13744:18;13737:31;13788:6;13823;13817:13;13854:6;13846;13839:22;13892:3;13881:9;13877:19;13870:26;;13931:2;13923:6;13919:15;13905:29;;13952:1;13962:195;13976:6;13973:1;13970:13;13962:195;;;14041:13;;-1:-1:-1;;;;;14037:39:1;14025:52;;14132:15;;;;14097:12;;;;14073:1;13991:9;13962:195;;;-1:-1:-1;;;;;;;14213:32:1;;;;14208:2;14193:18;;14186:60;-1:-1:-1;;;14277:3:1;14262:19;14255:35;14174:3;13316:980;-1:-1:-1;;;13316:980:1:o;14814:128::-;14854:3;14885:1;14881:6;14878:1;14875:13;14872:39;;;14891:18;;:::i;:::-;-1:-1:-1;14927:9:1;;14814:128::o;14947:217::-;14987:1;15013;15003:132;;15057:10;15052:3;15048:20;15045:1;15038:31;15092:4;15089:1;15082:15;15120:4;15117:1;15110:15;15003:132;-1:-1:-1;15149:9:1;;14947:217::o;15169:168::-;15209:7;15275:1;15271;15267:6;15263:14;15260:1;15257:21;15252:1;15245:9;15238:17;15234:45;15231:71;;;15282:18;;:::i;:::-;-1:-1:-1;15322:9:1;;15169:168::o;15342:125::-;15382:4;15410:1;15407;15404:8;15401:34;;;15415:18;;:::i;:::-;-1:-1:-1;15452:9:1;;15342:125::o;15472:380::-;15551:1;15547:12;;;;15594;;;15615:61;;15669:4;15661:6;15657:17;15647:27;;15615:61;15722:2;15714:6;15711:14;15691:18;15688:38;15685:161;;;15768:10;15763:3;15759:20;15756:1;15749:31;15803:4;15800:1;15793:15;15831:4;15828:1;15821:15;15685:161;;15472:380;;;:::o;15857:135::-;15896:3;-1:-1:-1;;15917:17:1;;15914:43;;;15937:18;;:::i;:::-;-1:-1:-1;15984:1:1;15973:13;;15857:135::o;15997:127::-;16058:10;16053:3;16049:20;16046:1;16039:31;16089:4;16086:1;16079:15;16113:4;16110:1;16103:15;16129:127;16190:10;16185:3;16181:20;16178:1;16171:31;16221:4;16218:1;16211:15;16245:4;16242:1;16235:15;16393:131;-1:-1:-1;;;;;16468:31:1;;16458:42;;16448:70;;16514:1;16511;16504:12;16448:70;16393:131;:::o
Swarm Source
ipfs://8dc29c31e30912024d664106f21d58c8c9fa2e777aa8e82aa3825301271b47ac
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.