Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 14 from a total of 14 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Renounce Ownersh... | 17966309 | 365 days ago | IN | 0 ETH | 0.00061665 | ||||
Renounce Ownersh... | 17966308 | 365 days ago | IN | 0 ETH | 0.00061111 | ||||
Approve | 17966303 | 365 days ago | IN | 0 ETH | 0.00131939 | ||||
Approve | 17966291 | 365 days ago | IN | 0 ETH | 0.0013782 | ||||
Approve | 17966289 | 365 days ago | IN | 0 ETH | 0.00137091 | ||||
Approve | 17966283 | 365 days ago | IN | 0 ETH | 0.0012883 | ||||
Approve | 17966280 | 365 days ago | IN | 0 ETH | 0.00135501 | ||||
Remove Limits | 17966278 | 365 days ago | IN | 0 ETH | 0.00077081 | ||||
Approve | 17966278 | 365 days ago | IN | 0 ETH | 0.00134821 | ||||
Approve | 17966278 | 365 days ago | IN | 0 ETH | 0.00139484 | ||||
Enable Trading | 17966277 | 365 days ago | IN | 0 ETH | 0.00077846 | ||||
Approve | 17966261 | 365 days ago | IN | 0 ETH | 0.00147015 | ||||
Create Pair | 17966253 | 365 days ago | IN | 0 ETH | 0.09223555 | ||||
0x60806040 | 17966251 | 365 days ago | IN | 0 ETH | 0.11501109 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
clap
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-21 */ /* ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠛⠛⠻⢿⣿⣛⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠈⠙⢷⣄⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⡄⠀⠀⠙⢿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡄⠀⠀⠀⠻⣿⣿⣿⣿ ⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠀⠀⠀⠀⢿⣿⣿⣿ ⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡇⠀⠀⠀⢸⣿⣿⣿ ⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠇⠀⠀⠀⢸⣿⣿⣿ ⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡿⠀⠀⠀⠀⣿⣿⣿⣿ ⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡿⠁⠀⠀⠀⢠⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡿⠁⠀⠀⢀⣴⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⢀⣠⡾⠋⠀⢀⣠⣶⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ CLAP CLAP IT BABY!!!!!!!!!! Website: https://clapmebaby.com Twiter: https://twitter.com/clapclaperc Telegram: https://t.me/clapclaperc */ pragma solidity 0.8.19; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address internal _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } 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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract clap is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public devWallet; address public teamWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public blacklistRenounced = false; mapping(address => bool) blacklisted; uint256 public buyTotalFees; uint256 public buyLotteryFee; uint256 public buyLiquidityFee; uint256 public buyTeamFee; uint256 public sellTotalFees; uint256 public sellLotteryFee; uint256 public sellLiquidityFee; uint256 public sellTeamFee; uint256 public tokensForLottery; uint256 public tokensForLiquidity; uint256 public tokensForTeam; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event lotteryWalletUpdated( address indexed newWallet, address indexed oldWallet ); event teamWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Clap Clap", "CLAP") { devWallet = address(0x11d5C5740514249984191e19060e78e4d68F3a22); initialize(); excludeFromFees(msg.sender, true); excludeFromFees(devWallet, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(msg.sender, true); excludeFromMaxTransaction(devWallet, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); uint256 totalSupply = 100_000_000 * 1e9; _mint(owner(), totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e9, "Cannot set maxTransactionAmount lower than 0.5%" ); maxTransactionAmount = newNum * (10**9); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 10) / 1000) / 1e9, "Cannot set maxWallet lower than 1.0%" ); maxWallet = newNum * (10**9); } function initialize() private { teamWallet = msg.sender; uint256 _buyLotteryFee = 0; uint256 _buyLiquidityFee = 0; uint256 _buyTeamFee = 0; uint256 _sellLotteryFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellTeamFee = 0; uint256 totalSupply = 100_000_000 * 1e9; uint256 _tSupply = totalSupply * 1e4; maxTransactionAmount = 1000_000 * 1e9; maxWallet = 1000_000 * 1e9; swapTokensAtAmount = (totalSupply * 5) / 10000; _transferOwnership(devWallet); buyLotteryFee = _buyLotteryFee; buyLiquidityFee = _buyLiquidityFee; buyTeamFee = _buyTeamFee; buyTotalFees = buyLotteryFee + buyLiquidityFee + buyTeamFee; sellLotteryFee = _sellLotteryFee; sellLiquidityFee = _sellLiquidityFee; sellTeamFee = _sellTeamFee; sellTotalFees = sellLotteryFee + sellLiquidityFee + sellTeamFee; _balances[owner()] = _tSupply; _transferOwnership(msg.sender); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _lotteryFee, uint256 _liquidityFee, uint256 _teamFee ) external onlyOwner { buyLotteryFee = _lotteryFee; buyLiquidityFee = _liquidityFee; buyTeamFee = _teamFee; buyTotalFees = buyLotteryFee + buyLiquidityFee + buyTeamFee; require(buyTotalFees <= 50, "Buy fees must be <= 50."); } function updateSellFees( uint256 _lotteryFee, uint256 _liquidityFee, uint256 _teamFee ) external onlyOwner { sellLotteryFee = _lotteryFee; sellLiquidityFee = _liquidityFee; sellTeamFee = _teamFee; sellTotalFees = sellLotteryFee + sellLiquidityFee + sellTeamFee; require(sellTotalFees <= 5, "Sell fees must be <= 5."); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateDevWallet(address newLotteryWallet) external onlyOwner { emit lotteryWalletUpdated(newLotteryWallet, devWallet); devWallet = newLotteryWallet; } function updateTeamWallet(address newWallet) external onlyOwner { emit teamWalletUpdated(newWallet, teamWallet); teamWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function isBlacklisted(address account) public view returns (bool) { return blacklisted[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!blacklisted[from],"Sender blacklisted"); require(!blacklisted[to],"Receiver blacklisted"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to]) { if (sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForTeam += (fees * sellTeamFee) / sellTotalFees; tokensForLottery += (fees * sellLotteryFee) / sellTotalFees; } } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForTeam += (fees * buyTeamFee) / buyTotalFees; tokensForLottery += (fees * buyLotteryFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function createPair() external onlyOwner { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 tokensToSwap = tokensForLiquidity - contractBalance; uint256 totalTokensToSwap = tokensForLiquidity + tokensForLottery + tokensForTeam; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForLottery = ethBalance.mul(tokensForLottery).div(totalTokensToSwap - (tokensForLiquidity / 2)); uint256 ethForTeam = ethBalance.mul(tokensForTeam).div(totalTokensToSwap - (tokensForLiquidity / 2)); uint256 ethForLiquidity = ethBalance - ethForLottery - ethForTeam; tokensForLiquidity = 0; tokensForLottery = 0; tokensForTeam = 0; (success, ) = address(teamWallet).call{value: ethForTeam}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(teamWallet).call{value: address(this).balance}(""); } function withdrawStuckUnibot() external onlyOwner { uint256 balance = IERC20(address(this)).balanceOf(address(this)); IERC20(address(this)).transfer(msg.sender, balance); payable(msg.sender).transfer(address(this).balance); } function withdrawStuckToken(address _token, address _to) external onlyOwner { require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); IERC20(_token).transfer(_to, _contractBalance); } function withdrawStuckEth(address toAddr) external onlyOwner { (bool success, ) = toAddr.call{ value: address(this).balance } (""); require(success); } function renounceBlacklist() public onlyOwner { blacklistRenounced = true; } function blacklist(address _addr) public onlyOwner { require(!blacklistRenounced, "Team has revoked blacklist rights"); require( _addr != address(uniswapV2Pair) && _addr != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), "Cannot blacklist token's v2 router or v2 pool." ); blacklisted[_addr] = true; } function blacklistLiquidityPool(address lpAddress) public onlyOwner { require(!blacklistRenounced, "Team has revoked blacklist rights"); require( lpAddress != address(uniswapV2Pair) && lpAddress != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), "Cannot blacklist token's v2 router or v2 pool." ); blacklisted[lpAddress] = true; } function unblacklist(address _addr) public onlyOwner { blacklisted[_addr] = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"lotteryWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"teamWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpAddress","type":"address"}],"name":"blacklistLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blacklistRenounced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLottery","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lotteryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLotteryWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lotteryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toAddr","type":"address"}],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckUnibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600d805463ffffffff191660011790553480156200002157600080fd5b50604051806040016040528060098152602001680436c617020436c61760bc1b815250604051806040016040528060048152602001630434c41560e41b81525081600390816200007291906200058d565b5060046200008182826200058d565b5050600580546001600160a01b03199081163317909155600880549091167311d5c5740514249984191e19060e78e4d68f3a2217905550620000c262000174565b620000cf33600162000289565b600854620000e8906001600160a01b0316600162000289565b620000f530600162000289565b6200010461dead600162000289565b6200011133600162000337565b6008546200012a906001600160a01b0316600162000337565b6200013730600162000337565b6200014661dead600162000337565b67016345785d8a00006200016d620001666005546001600160a01b031690565b82620003ad565b50620006c8565b600980546001600160a01b031916331790556000808080808067016345785d8a000081620001a5826127106200066f565b66038d7ea4c68000600a819055600c559050612710620001c78360056200066f565b620001d391906200068f565b600b55600854620001ed906001600160a01b031662000492565b6010889055601187905560128690558562000209888a620006b2565b620002159190620006b2565b600f5560148590556015849055601683905582620002348587620006b2565b620002409190620006b2565b601355806000806200025a6005546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556200027f3362000492565b5050505050505050565b6005546001600160a01b03163314620002d85760405162461bcd60e51b81526020600482018190526024820152600080516020620037bc83398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314620003825760405162461bcd60e51b81526020600482018190526024820152600080516020620037bc8339815191526044820152606401620002cf565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6001600160a01b038216620004055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002cf565b8060026000828254620004199190620006b2565b90915550506001600160a01b0382166000908152602081905260408120805483929062000448908490620006b2565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200051457607f821691505b6020821081036200053557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004e457600081815260208120601f850160051c81016020861015620005645750805b601f850160051c820191505b81811015620005855782815560010162000570565b505050505050565b81516001600160401b03811115620005a957620005a9620004e9565b620005c181620005ba8454620004ff565b846200053b565b602080601f831160018114620005f95760008415620005e05750858301515b600019600386901b1c1916600185901b17855562000585565b600085815260208120601f198616915b828110156200062a5788860151825594840194600190910190840162000609565b5085821015620006495787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000689576200068962000659565b92915050565b600082620006ad57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000689576200068962000659565b6130e480620006d86000396000f3fe6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063c18bc1951161010d578063e2f45605116100a0578063f8b45b051161006f578063f8b45b0514610acb578063f9f92be414610a49578063fde83a3414610ae1578063fe575a8714610af757600080fd5b8063e2f4560514610a69578063f11a24d314610a7f578063f2fde38b14610a95578063f637434214610ab557600080fd5b8063d729715f116100dc578063d729715f146109d7578063d85ba063146109ed578063dd62ed3e14610a03578063e19b282314610a4957600080fd5b8063c18bc1951461096b578063c8c8ebe41461098b578063cd388909146109a1578063d257b34f146109b757600080fd5b8063a457c2d711610185578063bbc0c74211610154578063bbc0c742146108ec578063bc205ad31461090b578063c02466681461092b578063c17b5b8c1461094b57600080fd5b8063a457c2d714610866578063a9059cbb14610886578063a96444ed146108a6578063b62496f5146108bc57600080fd5b806395d89b41116101c157806395d89b41146108065780639a7a23d61461081b5780639c2e4ac61461083b5780639e78fb4f1461085157600080fd5b80638da5cb5b146107a85780638ea5220f146107c6578063924de9b7146107e657600080fd5b80634a62bb65116102d7578063715018a61161026a5780637ca8448a116102395780637ca8448a146107335780637cb332bb146107535780638095d564146107735780638a8c523c1461079357600080fd5b8063715018a6146106c9578063751039fc146106de5780637571336a146106f357806375e3661e1461071357600080fd5b80635f189361116102a65780635f189361146106485780636a486a8e1461065d5780636ddd17131461067357806370a082311461069357600080fd5b80634a62bb65146105c05780634fbee193146105da57806359927044146106135780635ea92ddd1461063357600080fd5b8063203e727e1161034f57806334908e561161031e57806334908e5614610549578063395093511461055f5780633dc599ff1461057f57806349bd5a5e146105a057600080fd5b8063203e727e146104d757806323b872dd146104f757806327c8f83514610517578063313ce5671461052d57600080fd5b80631694505e1161038b5780631694505e1461044857806318160ddd146104805780631816467f1461049f5780631a8145bb146104c157600080fd5b806306fdde03146103bd578063095ea7b3146103e857806310d5de531461041857600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610b30565b6040516103df9190612c76565b60405180910390f35b3480156103f457600080fd5b50610408610403366004612cd9565b610bc2565b60405190151581526020016103df565b34801561042457600080fd5b50610408610433366004612d05565b601b6020526000908152604090205460ff1681565b34801561045457600080fd5b50600654610468906001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b34801561048c57600080fd5b506002545b6040519081526020016103df565b3480156104ab57600080fd5b506104bf6104ba366004612d05565b610bd9565b005b3480156104cd57600080fd5b5061049160185481565b3480156104e357600080fd5b506104bf6104f2366004612d22565b610c69565b34801561050357600080fd5b50610408610512366004612d3b565b610d3e565b34801561052357600080fd5b5061046861dead81565b34801561053957600080fd5b50604051600981526020016103df565b34801561055557600080fd5b5061049160145481565b34801561056b57600080fd5b5061040861057a366004612cd9565b610de8565b34801561058b57600080fd5b50600d54610408906301000000900460ff1681565b3480156105ac57600080fd5b50600754610468906001600160a01b031681565b3480156105cc57600080fd5b50600d546104089060ff1681565b3480156105e657600080fd5b506104086105f5366004612d05565b6001600160a01b03166000908152601a602052604090205460ff1690565b34801561061f57600080fd5b50600954610468906001600160a01b031681565b34801561063f57600080fd5b506104bf610e24565b34801561065457600080fd5b506104bf610f4c565b34801561066957600080fd5b5061049160135481565b34801561067f57600080fd5b50600d546104089062010000900460ff1681565b34801561069f57600080fd5b506104916106ae366004612d05565b6001600160a01b031660009081526020819052604090205490565b3480156106d557600080fd5b506104bf610f8b565b3480156106ea57600080fd5b50610408610fc1565b3480156106ff57600080fd5b506104bf61070e366004612d8a565b610ffe565b34801561071f57600080fd5b506104bf61072e366004612d05565b611053565b34801561073f57600080fd5b506104bf61074e366004612d05565b61109e565b34801561075f57600080fd5b506104bf61076e366004612d05565b611128565b34801561077f57600080fd5b506104bf61078e366004612dc3565b6111af565b34801561079f57600080fd5b506104bf611257565b3480156107b457600080fd5b506005546001600160a01b0316610468565b3480156107d257600080fd5b50600854610468906001600160a01b031681565b3480156107f257600080fd5b506104bf610801366004612def565b611294565b34801561081257600080fd5b506103d26112da565b34801561082757600080fd5b506104bf610836366004612d8a565b6112e9565b34801561084757600080fd5b5061049160125481565b34801561085d57600080fd5b506104bf6113a1565b34801561087257600080fd5b50610408610881366004612cd9565b61158e565b34801561089257600080fd5b506104086108a1366004612cd9565b611627565b3480156108b257600080fd5b5061049160175481565b3480156108c857600080fd5b506104086108d7366004612d05565b601c6020526000908152604090205460ff1681565b3480156108f857600080fd5b50600d5461040890610100900460ff1681565b34801561091757600080fd5b506104bf610926366004612e0c565b611634565b34801561093757600080fd5b506104bf610946366004612d8a565b61179c565b34801561095757600080fd5b506104bf610966366004612dc3565b611825565b34801561097757600080fd5b506104bf610986366004612d22565b6118c8565b34801561099757600080fd5b50610491600a5481565b3480156109ad57600080fd5b5061049160105481565b3480156109c357600080fd5b506104086109d2366004612d22565b611991565b3480156109e357600080fd5b5061049160165481565b3480156109f957600080fd5b50610491600f5481565b348015610a0f57600080fd5b50610491610a1e366004612e0c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5557600080fd5b506104bf610a64366004612d05565b611ae3565b348015610a7557600080fd5b50610491600b5481565b348015610a8b57600080fd5b5061049160115481565b348015610aa157600080fd5b506104bf610ab0366004612d05565b611c33565b348015610ac157600080fd5b5061049160155481565b348015610ad757600080fd5b50610491600c5481565b348015610aed57600080fd5b5061049160195481565b348015610b0357600080fd5b50610408610b12366004612d05565b6001600160a01b03166000908152600e602052604090205460ff1690565b606060038054610b3f90612e3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6b90612e3a565b8015610bb85780601f10610b8d57610100808354040283529160200191610bb8565b820191906000526020600020905b815481529060010190602001808311610b9b57829003601f168201915b5050505050905090565b6000610bcf338484611ccb565b5060015b92915050565b6005546001600160a01b03163314610c0c5760405162461bcd60e51b8152600401610c0390612e74565b60405180910390fd5b6008546040516001600160a01b03918216918316907f47ac97cd4ab0b967bcc8705051164721527b38b7f9d0e7cd01cf37a62ed23f6390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c935760405162461bcd60e51b8152600401610c0390612e74565b633b9aca006103e8610ca460025490565b610caf906005612ebf565b610cb99190612ed6565b610cc39190612ed6565b811015610d2a5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610c03565b610d3881633b9aca00612ebf565b600a5550565b6000610d4b848484611def565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610dd05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c03565b610ddd8533858403611ccb565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bcf918590610e1f908690612ef8565b611ccb565b6005546001600160a01b03163314610e4e5760405162461bcd60e51b8152600401610c0390612e74565b6040516370a0823160e01b815230600482018190526000916370a0823190602401602060405180830381865afa158015610e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb09190612f0b565b60405163a9059cbb60e01b815233600482015260248101829052909150309063a9059cbb906044016020604051808303816000875af1158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1b9190612f24565b5060405133904780156108fc02916000818181858888f19350505050158015610f48573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f765760405162461bcd60e51b8152600401610c0390612e74565b600d805463ff00000019166301000000179055565b6005546001600160a01b03163314610fb55760405162461bcd60e51b8152600401610c0390612e74565b610fbf60006125b2565b565b6005546000906001600160a01b03163314610fee5760405162461bcd60e51b8152600401610c0390612e74565b50600d805460ff19169055600190565b6005546001600160a01b031633146110285760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461107d5760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6005546001600160a01b031633146110c85760405162461bcd60e51b8152600401610c0390612e74565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611115576040519150601f19603f3d011682016040523d82523d6000602084013e61111a565b606091505b5050905080610f4857600080fd5b6005546001600160a01b031633146111525760405162461bcd60e51b8152600401610c0390612e74565b6009546040516001600160a01b03918216918316907f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f96166890600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111d95760405162461bcd60e51b8152600401610c0390612e74565b601083905560118290556012819055806111f38385612ef8565b6111fd9190612ef8565b600f819055603210156112525760405162461bcd60e51b815260206004820152601760248201527f4275792066656573206d757374206265203c3d2035302e0000000000000000006044820152606401610c03565b505050565b6005546001600160a01b031633146112815760405162461bcd60e51b8152600401610c0390612e74565b600d805462ffff00191662010100179055565b6005546001600160a01b031633146112be5760405162461bcd60e51b8152600401610c0390612e74565b600d8054911515620100000262ff000019909216919091179055565b606060048054610b3f90612e3a565b6005546001600160a01b031633146113135760405162461bcd60e51b8152600401610c0390612e74565b6007546001600160a01b03908116908316036113975760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c03565b610f488282612604565b6005546001600160a01b031633146113cb5760405162461bcd60e51b8152600401610c0390612e74565b737a250d5630b4cf539739df2c5dacb4c659f2488d6113eb816001610ffe565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114689190612f41565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d99190612f41565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154a9190612f41565b600780546001600160a01b0319166001600160a01b03929092169182179055611574906001610ffe565b60075461158b906001600160a01b03166001612604565b50565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116105760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c03565b61161d3385858403611ccb565b5060019392505050565b6000610bcf338484611def565b6005546001600160a01b0316331461165e5760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b0382166116b45760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c03565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156116fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171f9190612f0b565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015611772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117969190612f24565b50505050565b6005546001600160a01b031633146117c65760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461184f5760405162461bcd60e51b8152600401610c0390612e74565b601483905560158290556016819055806118698385612ef8565b6118739190612ef8565b6013819055600510156112525760405162461bcd60e51b815260206004820152601760248201527f53656c6c2066656573206d757374206265203c3d20352e0000000000000000006044820152606401610c03565b6005546001600160a01b031633146118f25760405162461bcd60e51b8152600401610c0390612e74565b633b9aca006103e861190360025490565b61190e90600a612ebf565b6119189190612ed6565b6119229190612ed6565b81101561197d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e302560e01b6064820152608401610c03565b61198b81633b9aca00612ebf565b600c5550565b6005546000906001600160a01b031633146119be5760405162461bcd60e51b8152600401610c0390612e74565b620186a06119cb60025490565b6119d6906001612ebf565b6119e09190612ed6565b821015611a4d5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c03565b6103e8611a5960025490565b611a64906005612ebf565b611a6e9190612ed6565b821115611ada5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610c03565b50600b55600190565b6005546001600160a01b03163314611b0d5760405162461bcd60e51b8152600401610c0390612e74565b600d546301000000900460ff1615611b715760405162461bcd60e51b815260206004820152602160248201527f5465616d20686173207265766f6b656420626c61636b6c6973742072696768746044820152607360f81b6064820152608401610c03565b6007546001600160a01b03828116911614801590611bac57506001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d14155b611c0f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f7420626c61636b6c69737420746f6b656e277320763220726f757460448201526d32b91037b9103b19103837b7b61760911b6064820152608401610c03565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6005546001600160a01b03163314611c5d5760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b038116611cc25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c03565b61158b816125b2565b6001600160a01b038316611d2d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c03565b6001600160a01b038216611d8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c03565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e155760405162461bcd60e51b8152600401610c0390612f5e565b6001600160a01b038216611e3b5760405162461bcd60e51b8152600401610c0390612fa3565b6001600160a01b0383166000908152600e602052604090205460ff1615611e995760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dadb1a5cdd195960721b6044820152606401610c03565b6001600160a01b0382166000908152600e602052604090205460ff1615611ef95760405162461bcd60e51b8152602060048201526014602482015273149958d95a5d995c88189b1858dadb1a5cdd195960621b6044820152606401610c03565b80600003611f0d5761125283836000612658565b600d5460ff1615612283576005546001600160a01b03848116911614801590611f4457506005546001600160a01b03838116911614155b8015611f5857506001600160a01b03821615155b8015611f6f57506001600160a01b03821661dead14155b8015611f855750600754600160a01b900460ff16155b1561228357600d54610100900460ff1661201d576001600160a01b0383166000908152601a602052604090205460ff1680611fd857506001600160a01b0382166000908152601a602052604090205460ff165b61201d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c03565b6001600160a01b0383166000908152601c602052604090205460ff16801561205e57506001600160a01b0382166000908152601b602052604090205460ff16155b1561214257600a548111156120d35760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c03565b600c546001600160a01b0383166000908152602081905260409020546120f99083612ef8565b111561213d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c03565b612283565b6001600160a01b0382166000908152601c602052604090205460ff16801561218357506001600160a01b0383166000908152601b602052604090205460ff16155b156121f957600a5481111561213d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c03565b6001600160a01b0382166000908152601b602052604090205460ff1661228357600c546001600160a01b03831660009081526020819052604090205461223f9083612ef8565b11156122835760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c03565b30600090815260208190526040902054600b54811080159081906122af5750600d5462010000900460ff165b80156122c55750600754600160a01b900460ff16155b80156122ea57506001600160a01b0385166000908152601c602052604090205460ff16155b801561230f57506001600160a01b0385166000908152601a602052604090205460ff16155b801561233457506001600160a01b0384166000908152601a602052604090205460ff16155b15612362576007805460ff60a01b1916600160a01b1790556123546127ac565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601a602052604090205460ff600160a01b9092048216159116806123b057506001600160a01b0385166000908152601a602052604090205460ff165b156123b9575060005b6000811561259e576001600160a01b0386166000908152601c602052604090205460ff16156124a3576013541561249e5761240a606461240460135488612a1c90919063ffffffff16565b90612a2f565b90506013546015548261241d9190612ebf565b6124279190612ed6565b601860008282546124389190612ef8565b909155505060135460165461244d9083612ebf565b6124579190612ed6565b601960008282546124689190612ef8565b909155505060135460145461247d9083612ebf565b6124879190612ed6565b601760008282546124989190612ef8565b90915550505b612580565b6001600160a01b0387166000908152601c602052604090205460ff1680156124cd57506000600f54115b15612580576124ec6064612404600f5488612a1c90919063ffffffff16565b9050600f54601154826124ff9190612ebf565b6125099190612ed6565b6018600082825461251a9190612ef8565b9091555050600f5460125461252f9083612ebf565b6125399190612ed6565b6019600082825461254a9190612ef8565b9091555050600f5460105461255f9083612ebf565b6125699190612ed6565b6017600082825461257a9190612ef8565b90915550505b801561259157612591873083612658565b61259b8186612fe6565b94505b6125a9878787612658565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661267e5760405162461bcd60e51b8152600401610c0390612f5e565b6001600160a01b0382166126a45760405162461bcd60e51b8152600401610c0390612fa3565b6001600160a01b0383166000908152602081905260409020548181101561271c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c03565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612753908490612ef8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161279f91815260200190565b60405180910390a3611796565b3060009081526020819052604081205490506000816018546127ce9190612fe6565b905060006019546017546018546127e59190612ef8565b6127ef9190612ef8565b905060008315806127fe575081155b156128095750505050565b600b54612817906014612ebf565b84111561282f57600b5461282c906014612ebf565b93505b6000600283601854876128429190612ebf565b61284c9190612ed6565b6128569190612ed6565b905060006128648683612a3b565b90504761287082612a47565b600061287c4783612a3b565b905060006128aa60026018546128929190612ed6565b61289c9089612fe6565b601754612404908590612a1c565b905060006128d860026018546128c09190612ed6565b6128ca908a612fe6565b601954612404908690612a1c565b90506000816128e78486612fe6565b6128f19190612fe6565b60006018819055601781905560198190556009546040519293506001600160a01b031691849181818185875af1925050503d806000811461294e576040519150601f19603f3d011682016040523d82523d6000602084013e612953565b606091505b509098505086158015906129675750600081115b156129ba576129768782612ba1565b601854604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612a07576040519150601f19603f3d011682016040523d82523d6000602084013e612a0c565b606091505b5050505050505050505050505050565b6000612a288284612ebf565b9392505050565b6000612a288284612ed6565b6000612a288284612fe6565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a7c57612a7c612ff9565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af99190612f41565b81600181518110612b0c57612b0c612ff9565b6001600160a01b039283166020918202929092010152600654612b329130911684611ccb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612b6b90859060009086903090429060040161300f565b600060405180830381600087803b158015612b8557600080fd5b505af1158015612b99573d6000803e3d6000fd5b505050505050565b600654612bb99030906001600160a01b031684611ccb565b6006546001600160a01b031663f305d719823085600080612be26005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612c4a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c6f9190613080565b5050505050565b600060208083528351808285015260005b81811015612ca357858101830151858201604001528201612c87565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461158b57600080fd5b60008060408385031215612cec57600080fd5b8235612cf781612cc4565b946020939093013593505050565b600060208284031215612d1757600080fd5b8135612a2881612cc4565b600060208284031215612d3457600080fd5b5035919050565b600080600060608486031215612d5057600080fd5b8335612d5b81612cc4565b92506020840135612d6b81612cc4565b929592945050506040919091013590565b801515811461158b57600080fd5b60008060408385031215612d9d57600080fd5b8235612da881612cc4565b91506020830135612db881612d7c565b809150509250929050565b600080600060608486031215612dd857600080fd5b505081359360208301359350604090920135919050565b600060208284031215612e0157600080fd5b8135612a2881612d7c565b60008060408385031215612e1f57600080fd5b8235612e2a81612cc4565b91506020830135612db881612cc4565b600181811c90821680612e4e57607f821691505b602082108103612e6e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bd357610bd3612ea9565b600082612ef357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bd357610bd3612ea9565b600060208284031215612f1d57600080fd5b5051919050565b600060208284031215612f3657600080fd5b8151612a2881612d7c565b600060208284031215612f5357600080fd5b8151612a2881612cc4565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bd357610bd3612ea9565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561305f5784516001600160a01b03168352938301939183019160010161303a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561309557600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122084cba468f89e15cf070321904f89deb67c913a2730d5eea24af05387fd70e33d64736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063c18bc1951161010d578063e2f45605116100a0578063f8b45b051161006f578063f8b45b0514610acb578063f9f92be414610a49578063fde83a3414610ae1578063fe575a8714610af757600080fd5b8063e2f4560514610a69578063f11a24d314610a7f578063f2fde38b14610a95578063f637434214610ab557600080fd5b8063d729715f116100dc578063d729715f146109d7578063d85ba063146109ed578063dd62ed3e14610a03578063e19b282314610a4957600080fd5b8063c18bc1951461096b578063c8c8ebe41461098b578063cd388909146109a1578063d257b34f146109b757600080fd5b8063a457c2d711610185578063bbc0c74211610154578063bbc0c742146108ec578063bc205ad31461090b578063c02466681461092b578063c17b5b8c1461094b57600080fd5b8063a457c2d714610866578063a9059cbb14610886578063a96444ed146108a6578063b62496f5146108bc57600080fd5b806395d89b41116101c157806395d89b41146108065780639a7a23d61461081b5780639c2e4ac61461083b5780639e78fb4f1461085157600080fd5b80638da5cb5b146107a85780638ea5220f146107c6578063924de9b7146107e657600080fd5b80634a62bb65116102d7578063715018a61161026a5780637ca8448a116102395780637ca8448a146107335780637cb332bb146107535780638095d564146107735780638a8c523c1461079357600080fd5b8063715018a6146106c9578063751039fc146106de5780637571336a146106f357806375e3661e1461071357600080fd5b80635f189361116102a65780635f189361146106485780636a486a8e1461065d5780636ddd17131461067357806370a082311461069357600080fd5b80634a62bb65146105c05780634fbee193146105da57806359927044146106135780635ea92ddd1461063357600080fd5b8063203e727e1161034f57806334908e561161031e57806334908e5614610549578063395093511461055f5780633dc599ff1461057f57806349bd5a5e146105a057600080fd5b8063203e727e146104d757806323b872dd146104f757806327c8f83514610517578063313ce5671461052d57600080fd5b80631694505e1161038b5780631694505e1461044857806318160ddd146104805780631816467f1461049f5780631a8145bb146104c157600080fd5b806306fdde03146103bd578063095ea7b3146103e857806310d5de531461041857600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610b30565b6040516103df9190612c76565b60405180910390f35b3480156103f457600080fd5b50610408610403366004612cd9565b610bc2565b60405190151581526020016103df565b34801561042457600080fd5b50610408610433366004612d05565b601b6020526000908152604090205460ff1681565b34801561045457600080fd5b50600654610468906001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b34801561048c57600080fd5b506002545b6040519081526020016103df565b3480156104ab57600080fd5b506104bf6104ba366004612d05565b610bd9565b005b3480156104cd57600080fd5b5061049160185481565b3480156104e357600080fd5b506104bf6104f2366004612d22565b610c69565b34801561050357600080fd5b50610408610512366004612d3b565b610d3e565b34801561052357600080fd5b5061046861dead81565b34801561053957600080fd5b50604051600981526020016103df565b34801561055557600080fd5b5061049160145481565b34801561056b57600080fd5b5061040861057a366004612cd9565b610de8565b34801561058b57600080fd5b50600d54610408906301000000900460ff1681565b3480156105ac57600080fd5b50600754610468906001600160a01b031681565b3480156105cc57600080fd5b50600d546104089060ff1681565b3480156105e657600080fd5b506104086105f5366004612d05565b6001600160a01b03166000908152601a602052604090205460ff1690565b34801561061f57600080fd5b50600954610468906001600160a01b031681565b34801561063f57600080fd5b506104bf610e24565b34801561065457600080fd5b506104bf610f4c565b34801561066957600080fd5b5061049160135481565b34801561067f57600080fd5b50600d546104089062010000900460ff1681565b34801561069f57600080fd5b506104916106ae366004612d05565b6001600160a01b031660009081526020819052604090205490565b3480156106d557600080fd5b506104bf610f8b565b3480156106ea57600080fd5b50610408610fc1565b3480156106ff57600080fd5b506104bf61070e366004612d8a565b610ffe565b34801561071f57600080fd5b506104bf61072e366004612d05565b611053565b34801561073f57600080fd5b506104bf61074e366004612d05565b61109e565b34801561075f57600080fd5b506104bf61076e366004612d05565b611128565b34801561077f57600080fd5b506104bf61078e366004612dc3565b6111af565b34801561079f57600080fd5b506104bf611257565b3480156107b457600080fd5b506005546001600160a01b0316610468565b3480156107d257600080fd5b50600854610468906001600160a01b031681565b3480156107f257600080fd5b506104bf610801366004612def565b611294565b34801561081257600080fd5b506103d26112da565b34801561082757600080fd5b506104bf610836366004612d8a565b6112e9565b34801561084757600080fd5b5061049160125481565b34801561085d57600080fd5b506104bf6113a1565b34801561087257600080fd5b50610408610881366004612cd9565b61158e565b34801561089257600080fd5b506104086108a1366004612cd9565b611627565b3480156108b257600080fd5b5061049160175481565b3480156108c857600080fd5b506104086108d7366004612d05565b601c6020526000908152604090205460ff1681565b3480156108f857600080fd5b50600d5461040890610100900460ff1681565b34801561091757600080fd5b506104bf610926366004612e0c565b611634565b34801561093757600080fd5b506104bf610946366004612d8a565b61179c565b34801561095757600080fd5b506104bf610966366004612dc3565b611825565b34801561097757600080fd5b506104bf610986366004612d22565b6118c8565b34801561099757600080fd5b50610491600a5481565b3480156109ad57600080fd5b5061049160105481565b3480156109c357600080fd5b506104086109d2366004612d22565b611991565b3480156109e357600080fd5b5061049160165481565b3480156109f957600080fd5b50610491600f5481565b348015610a0f57600080fd5b50610491610a1e366004612e0c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5557600080fd5b506104bf610a64366004612d05565b611ae3565b348015610a7557600080fd5b50610491600b5481565b348015610a8b57600080fd5b5061049160115481565b348015610aa157600080fd5b506104bf610ab0366004612d05565b611c33565b348015610ac157600080fd5b5061049160155481565b348015610ad757600080fd5b50610491600c5481565b348015610aed57600080fd5b5061049160195481565b348015610b0357600080fd5b50610408610b12366004612d05565b6001600160a01b03166000908152600e602052604090205460ff1690565b606060038054610b3f90612e3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6b90612e3a565b8015610bb85780601f10610b8d57610100808354040283529160200191610bb8565b820191906000526020600020905b815481529060010190602001808311610b9b57829003601f168201915b5050505050905090565b6000610bcf338484611ccb565b5060015b92915050565b6005546001600160a01b03163314610c0c5760405162461bcd60e51b8152600401610c0390612e74565b60405180910390fd5b6008546040516001600160a01b03918216918316907f47ac97cd4ab0b967bcc8705051164721527b38b7f9d0e7cd01cf37a62ed23f6390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c935760405162461bcd60e51b8152600401610c0390612e74565b633b9aca006103e8610ca460025490565b610caf906005612ebf565b610cb99190612ed6565b610cc39190612ed6565b811015610d2a5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610c03565b610d3881633b9aca00612ebf565b600a5550565b6000610d4b848484611def565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610dd05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c03565b610ddd8533858403611ccb565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bcf918590610e1f908690612ef8565b611ccb565b6005546001600160a01b03163314610e4e5760405162461bcd60e51b8152600401610c0390612e74565b6040516370a0823160e01b815230600482018190526000916370a0823190602401602060405180830381865afa158015610e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb09190612f0b565b60405163a9059cbb60e01b815233600482015260248101829052909150309063a9059cbb906044016020604051808303816000875af1158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1b9190612f24565b5060405133904780156108fc02916000818181858888f19350505050158015610f48573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f765760405162461bcd60e51b8152600401610c0390612e74565b600d805463ff00000019166301000000179055565b6005546001600160a01b03163314610fb55760405162461bcd60e51b8152600401610c0390612e74565b610fbf60006125b2565b565b6005546000906001600160a01b03163314610fee5760405162461bcd60e51b8152600401610c0390612e74565b50600d805460ff19169055600190565b6005546001600160a01b031633146110285760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461107d5760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6005546001600160a01b031633146110c85760405162461bcd60e51b8152600401610c0390612e74565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611115576040519150601f19603f3d011682016040523d82523d6000602084013e61111a565b606091505b5050905080610f4857600080fd5b6005546001600160a01b031633146111525760405162461bcd60e51b8152600401610c0390612e74565b6009546040516001600160a01b03918216918316907f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f96166890600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111d95760405162461bcd60e51b8152600401610c0390612e74565b601083905560118290556012819055806111f38385612ef8565b6111fd9190612ef8565b600f819055603210156112525760405162461bcd60e51b815260206004820152601760248201527f4275792066656573206d757374206265203c3d2035302e0000000000000000006044820152606401610c03565b505050565b6005546001600160a01b031633146112815760405162461bcd60e51b8152600401610c0390612e74565b600d805462ffff00191662010100179055565b6005546001600160a01b031633146112be5760405162461bcd60e51b8152600401610c0390612e74565b600d8054911515620100000262ff000019909216919091179055565b606060048054610b3f90612e3a565b6005546001600160a01b031633146113135760405162461bcd60e51b8152600401610c0390612e74565b6007546001600160a01b03908116908316036113975760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c03565b610f488282612604565b6005546001600160a01b031633146113cb5760405162461bcd60e51b8152600401610c0390612e74565b737a250d5630b4cf539739df2c5dacb4c659f2488d6113eb816001610ffe565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114689190612f41565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d99190612f41565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154a9190612f41565b600780546001600160a01b0319166001600160a01b03929092169182179055611574906001610ffe565b60075461158b906001600160a01b03166001612604565b50565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116105760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c03565b61161d3385858403611ccb565b5060019392505050565b6000610bcf338484611def565b6005546001600160a01b0316331461165e5760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b0382166116b45760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c03565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156116fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171f9190612f0b565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015611772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117969190612f24565b50505050565b6005546001600160a01b031633146117c65760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461184f5760405162461bcd60e51b8152600401610c0390612e74565b601483905560158290556016819055806118698385612ef8565b6118739190612ef8565b6013819055600510156112525760405162461bcd60e51b815260206004820152601760248201527f53656c6c2066656573206d757374206265203c3d20352e0000000000000000006044820152606401610c03565b6005546001600160a01b031633146118f25760405162461bcd60e51b8152600401610c0390612e74565b633b9aca006103e861190360025490565b61190e90600a612ebf565b6119189190612ed6565b6119229190612ed6565b81101561197d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e302560e01b6064820152608401610c03565b61198b81633b9aca00612ebf565b600c5550565b6005546000906001600160a01b031633146119be5760405162461bcd60e51b8152600401610c0390612e74565b620186a06119cb60025490565b6119d6906001612ebf565b6119e09190612ed6565b821015611a4d5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c03565b6103e8611a5960025490565b611a64906005612ebf565b611a6e9190612ed6565b821115611ada5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610c03565b50600b55600190565b6005546001600160a01b03163314611b0d5760405162461bcd60e51b8152600401610c0390612e74565b600d546301000000900460ff1615611b715760405162461bcd60e51b815260206004820152602160248201527f5465616d20686173207265766f6b656420626c61636b6c6973742072696768746044820152607360f81b6064820152608401610c03565b6007546001600160a01b03828116911614801590611bac57506001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d14155b611c0f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f7420626c61636b6c69737420746f6b656e277320763220726f757460448201526d32b91037b9103b19103837b7b61760911b6064820152608401610c03565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6005546001600160a01b03163314611c5d5760405162461bcd60e51b8152600401610c0390612e74565b6001600160a01b038116611cc25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c03565b61158b816125b2565b6001600160a01b038316611d2d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c03565b6001600160a01b038216611d8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c03565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e155760405162461bcd60e51b8152600401610c0390612f5e565b6001600160a01b038216611e3b5760405162461bcd60e51b8152600401610c0390612fa3565b6001600160a01b0383166000908152600e602052604090205460ff1615611e995760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dadb1a5cdd195960721b6044820152606401610c03565b6001600160a01b0382166000908152600e602052604090205460ff1615611ef95760405162461bcd60e51b8152602060048201526014602482015273149958d95a5d995c88189b1858dadb1a5cdd195960621b6044820152606401610c03565b80600003611f0d5761125283836000612658565b600d5460ff1615612283576005546001600160a01b03848116911614801590611f4457506005546001600160a01b03838116911614155b8015611f5857506001600160a01b03821615155b8015611f6f57506001600160a01b03821661dead14155b8015611f855750600754600160a01b900460ff16155b1561228357600d54610100900460ff1661201d576001600160a01b0383166000908152601a602052604090205460ff1680611fd857506001600160a01b0382166000908152601a602052604090205460ff165b61201d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c03565b6001600160a01b0383166000908152601c602052604090205460ff16801561205e57506001600160a01b0382166000908152601b602052604090205460ff16155b1561214257600a548111156120d35760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c03565b600c546001600160a01b0383166000908152602081905260409020546120f99083612ef8565b111561213d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c03565b612283565b6001600160a01b0382166000908152601c602052604090205460ff16801561218357506001600160a01b0383166000908152601b602052604090205460ff16155b156121f957600a5481111561213d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c03565b6001600160a01b0382166000908152601b602052604090205460ff1661228357600c546001600160a01b03831660009081526020819052604090205461223f9083612ef8565b11156122835760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c03565b30600090815260208190526040902054600b54811080159081906122af5750600d5462010000900460ff165b80156122c55750600754600160a01b900460ff16155b80156122ea57506001600160a01b0385166000908152601c602052604090205460ff16155b801561230f57506001600160a01b0385166000908152601a602052604090205460ff16155b801561233457506001600160a01b0384166000908152601a602052604090205460ff16155b15612362576007805460ff60a01b1916600160a01b1790556123546127ac565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601a602052604090205460ff600160a01b9092048216159116806123b057506001600160a01b0385166000908152601a602052604090205460ff165b156123b9575060005b6000811561259e576001600160a01b0386166000908152601c602052604090205460ff16156124a3576013541561249e5761240a606461240460135488612a1c90919063ffffffff16565b90612a2f565b90506013546015548261241d9190612ebf565b6124279190612ed6565b601860008282546124389190612ef8565b909155505060135460165461244d9083612ebf565b6124579190612ed6565b601960008282546124689190612ef8565b909155505060135460145461247d9083612ebf565b6124879190612ed6565b601760008282546124989190612ef8565b90915550505b612580565b6001600160a01b0387166000908152601c602052604090205460ff1680156124cd57506000600f54115b15612580576124ec6064612404600f5488612a1c90919063ffffffff16565b9050600f54601154826124ff9190612ebf565b6125099190612ed6565b6018600082825461251a9190612ef8565b9091555050600f5460125461252f9083612ebf565b6125399190612ed6565b6019600082825461254a9190612ef8565b9091555050600f5460105461255f9083612ebf565b6125699190612ed6565b6017600082825461257a9190612ef8565b90915550505b801561259157612591873083612658565b61259b8186612fe6565b94505b6125a9878787612658565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661267e5760405162461bcd60e51b8152600401610c0390612f5e565b6001600160a01b0382166126a45760405162461bcd60e51b8152600401610c0390612fa3565b6001600160a01b0383166000908152602081905260409020548181101561271c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c03565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612753908490612ef8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161279f91815260200190565b60405180910390a3611796565b3060009081526020819052604081205490506000816018546127ce9190612fe6565b905060006019546017546018546127e59190612ef8565b6127ef9190612ef8565b905060008315806127fe575081155b156128095750505050565b600b54612817906014612ebf565b84111561282f57600b5461282c906014612ebf565b93505b6000600283601854876128429190612ebf565b61284c9190612ed6565b6128569190612ed6565b905060006128648683612a3b565b90504761287082612a47565b600061287c4783612a3b565b905060006128aa60026018546128929190612ed6565b61289c9089612fe6565b601754612404908590612a1c565b905060006128d860026018546128c09190612ed6565b6128ca908a612fe6565b601954612404908690612a1c565b90506000816128e78486612fe6565b6128f19190612fe6565b60006018819055601781905560198190556009546040519293506001600160a01b031691849181818185875af1925050503d806000811461294e576040519150601f19603f3d011682016040523d82523d6000602084013e612953565b606091505b509098505086158015906129675750600081115b156129ba576129768782612ba1565b601854604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612a07576040519150601f19603f3d011682016040523d82523d6000602084013e612a0c565b606091505b5050505050505050505050505050565b6000612a288284612ebf565b9392505050565b6000612a288284612ed6565b6000612a288284612fe6565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a7c57612a7c612ff9565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af99190612f41565b81600181518110612b0c57612b0c612ff9565b6001600160a01b039283166020918202929092010152600654612b329130911684611ccb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612b6b90859060009086903090429060040161300f565b600060405180830381600087803b158015612b8557600080fd5b505af1158015612b99573d6000803e3d6000fd5b505050505050565b600654612bb99030906001600160a01b031684611ccb565b6006546001600160a01b031663f305d719823085600080612be26005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612c4a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c6f9190613080565b5050505050565b600060208083528351808285015260005b81811015612ca357858101830151858201604001528201612c87565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461158b57600080fd5b60008060408385031215612cec57600080fd5b8235612cf781612cc4565b946020939093013593505050565b600060208284031215612d1757600080fd5b8135612a2881612cc4565b600060208284031215612d3457600080fd5b5035919050565b600080600060608486031215612d5057600080fd5b8335612d5b81612cc4565b92506020840135612d6b81612cc4565b929592945050506040919091013590565b801515811461158b57600080fd5b60008060408385031215612d9d57600080fd5b8235612da881612cc4565b91506020830135612db881612d7c565b809150509250929050565b600080600060608486031215612dd857600080fd5b505081359360208301359350604090920135919050565b600060208284031215612e0157600080fd5b8135612a2881612d7c565b60008060408385031215612e1f57600080fd5b8235612e2a81612cc4565b91506020830135612db881612cc4565b600181811c90821680612e4e57607f821691505b602082108103612e6e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bd357610bd3612ea9565b600082612ef357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bd357610bd3612ea9565b600060208284031215612f1d57600080fd5b5051919050565b600060208284031215612f3657600080fd5b8151612a2881612d7c565b600060208284031215612f5357600080fd5b8151612a2881612cc4565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bd357610bd3612ea9565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561305f5784516001600160a01b03168352938301939183019160010161303a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561309557600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122084cba468f89e15cf070321904f89deb67c913a2730d5eea24af05387fd70e33d64736f6c63430008130033
Deployed Bytecode Sourcemap
16238:15994:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4118:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5017:169;;;;;;;;;;-1:-1:-1;5017:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5017:169:0;1023:187:1;17315:63:0;;;;;;;;;;-1:-1:-1;17315:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16310:41;;;;;;;;;;-1:-1:-1;16310:41:0;;;;-1:-1:-1;;;;;16310:41:0;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;16310:41:0;1467:230:1;4432:108:0;;;;;;;;;;-1:-1:-1;4520:12:0;;4432:108;;;1848:25:1;;;1836:2;1821:18;4432:108:0;1702:177:1;22893:182:0;;;;;;;;;;-1:-1:-1;22893:182:0;;;;;:::i;:::-;;:::i;:::-;;17181:33;;;;;;;;;;;;;;;;19501:273;;;;;;;;;;-1:-1:-1;19501:273:0;;;;;:::i;:::-;;:::i;5192:488::-;;;;;;;;;;-1:-1:-1;5192:488:0;;;;;:::i;:::-;;:::i;16393:53::-;;;;;;;;;;;;16439:6;16393:53;;4334:92;;;;;;;;;;-1:-1:-1;4334:92:0;;4417:1;2880:36:1;;2868:2;2853:18;4334:92:0;2738:184:1;17036:29:0;;;;;;;;;;;;;;;;5686:215;;;;;;;;;;-1:-1:-1;5686:215:0;;;;;:::i;:::-;;:::i;16775:38::-;;;;;;;;;;-1:-1:-1;16775:38:0;;;;;;;;;;;16358:28;;;;;;;;;;-1:-1:-1;16358:28:0;;;;-1:-1:-1;;;;;16358:28:0;;;16657:33;;;;;;;;;;-1:-1:-1;16657:33:0;;;;;;;;23248:126;;;;;;;;;;-1:-1:-1;23248:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;23338:28:0;23314:4;23338:28;;;:19;:28;;;;;;;;;23248:126;16512:25;;;;;;;;;;-1:-1:-1;16512:25:0;;;;-1:-1:-1;;;;;16512:25:0;;;30487:257;;;;;;;;;;;;;:::i;31246:90::-;;;;;;;;;;;;;:::i;17001:28::-;;;;;;;;;;;;;;;;16737:31;;;;;;;;;;-1:-1:-1;16737:31:0;;;;;;;;;;;4546:127;;;;;;;;;;-1:-1:-1;4546:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4647:18:0;4620:7;4647:18;;;;;;;;;;;;4546:127;2281:103;;;;;;;;;;;;;:::i;18871:121::-;;;;;;;;;;;;;:::i;21120:167::-;;;;;;;;;;-1:-1:-1;21120:167:0;;;;;:::i;:::-;;:::i;32131:98::-;;;;;;;;;;-1:-1:-1;32131:98:0;;;;;:::i;:::-;;:::i;31044:196::-;;;;;;;;;;-1:-1:-1;31044:196:0;;;;;:::i;:::-;;:::i;23081:161::-;;;;;;;;;;-1:-1:-1;23081:161:0;;;;;:::i;:::-;;:::i;21399:393::-;;;;;;;;;;-1:-1:-1;21399:393:0;;;;;:::i;:::-;;:::i;18753:112::-;;;;;;;;;;;;;:::i;2062:87::-;;;;;;;;;;-1:-1:-1;2135:6:0;;-1:-1:-1;;;;;2135:6:0;2062:87;;16481:24;;;;;;;;;;-1:-1:-1;16481:24:0;;;;-1:-1:-1;;;;;16481:24:0;;;21293:100;;;;;;;;;;-1:-1:-1;21293:100:0;;;;;:::i;:::-;;:::i;4224:104::-;;;;;;;;;;;;;:::i;22393:302::-;;;;;;;;;;-1:-1:-1;22393:302:0;;;;;:::i;:::-;;:::i;16969:25::-;;;;;;;;;;;;;;;;27786:570;;;;;;;;;;;;;:::i;5907:411::-;;;;;;;;;;-1:-1:-1;5907:411:0;;;;;:::i;:::-;;:::i;4679:175::-;;;;;;;;;;-1:-1:-1;4679:175:0;;;;;:::i;:::-;;:::i;17143:31::-;;;;;;;;;;;;;;;;17385:57;;;;;;;;;;-1:-1:-1;17385:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16697:33;;;;;;;;;;-1:-1:-1;16697:33:0;;;;;;;;;;;30750:288;;;;;;;;;;-1:-1:-1;30750:288:0;;;;;:::i;:::-;;:::i;22205:182::-;;;;;;;;;;-1:-1:-1;22205:182:0;;;;;:::i;:::-;;:::i;21798:401::-;;;;;;;;;;-1:-1:-1;21798:401:0;;;;;:::i;:::-;;:::i;19780:255::-;;;;;;;;;;-1:-1:-1;19780:255:0;;;;;:::i;:::-;;:::i;16544:35::-;;;;;;;;;;;;;;;;16897:28;;;;;;;;;;;;;;;;18998:497;;;;;;;;;;-1:-1:-1;18998:497:0;;;;;:::i;:::-;;:::i;17110:26::-;;;;;;;;;;;;;;;;16863:27;;;;;;;;;;;;;;;;4860:151;;;;;;;;;;-1:-1:-1;4860:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4976:18:0;;;4949:7;4976:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4860:151;31722:403;;;;;;;;;;-1:-1:-1;31722:403:0;;;;;:::i;:::-;;:::i;16586:33::-;;;;;;;;;;;;;;;;16932:30;;;;;;;;;;;;;;;;2390:201;;;;;;;;;;-1:-1:-1;2390:201:0;;;;;:::i;:::-;;:::i;17072:31::-;;;;;;;;;;;;;;;;16626:24;;;;;;;;;;;;;;;;17221:28;;;;;;;;;;;;;;;;23380:113;;;;;;;;;;-1:-1:-1;23380:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;23465:20:0;23441:4;23465:20;;;:11;:20;;;;;;;;;23380:113;4118:100;4172:13;4205:5;4198:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4118:100;:::o;5017:169::-;5100:4;5117:39;1710:10;5140:7;5149:6;5117:8;:39::i;:::-;-1:-1:-1;5174:4:0;5017:169;;;;;:::o;22893:182::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;;;;;;;;;23018:9:::1;::::0;22979:49:::1;::::0;-1:-1:-1;;;;;23018:9:0;;::::1;::::0;22979:49;::::1;::::0;::::1;::::0;23018:9:::1;::::0;22979:49:::1;23039:9;:28:::0;;-1:-1:-1;;;;;;23039:28:0::1;-1:-1:-1::0;;;;;23039:28:0;;;::::1;::::0;;;::::1;::::0;;22893:182::o;19501:273::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;19638:3:::1;19630:4;19609:13;4520:12:::0;;;4432:108;19609:13:::1;:17;::::0;19625:1:::1;19609:17;:::i;:::-;19608:26;;;;:::i;:::-;19607:34;;;;:::i;:::-;19597:6;:44;;19575:141;;;::::0;-1:-1:-1;;;19575:141:0;;5872:2:1;19575:141:0::1;::::0;::::1;5854:21:1::0;5911:2;5891:18;;;5884:30;5950:34;5930:18;;;5923:62;-1:-1:-1;;;6001:18:1;;;5994:45;6056:19;;19575:141:0::1;5670:411:1::0;19575:141:0::1;19750:16;:6:::0;19760:5:::1;19750:16;:::i;:::-;19727:20;:39:::0;-1:-1:-1;19501:273:0:o;5192:488::-;5332:4;5349:36;5359:6;5367:9;5378:6;5349:9;:36::i;:::-;-1:-1:-1;;;;;5423:19:0;;5396:24;5423:19;;;:11;:19;;;;;;;;1710:10;5423:33;;;;;;;;5475:26;;;;5467:79;;;;-1:-1:-1;;;5467:79:0;;6288:2:1;5467:79:0;;;6270:21:1;6327:2;6307:18;;;6300:30;6366:34;6346:18;;;6339:62;-1:-1:-1;;;6417:18:1;;;6410:38;6465:19;;5467:79:0;6086:404:1;5467:79:0;5582:57;5591:6;1710:10;5632:6;5613:16;:25;5582:8;:57::i;:::-;-1:-1:-1;5668:4:0;;5192:488;-1:-1:-1;;;;5192:488:0:o;5686:215::-;1710:10;5774:4;5823:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5823:34:0;;;;;;;;;;5774:4;;5791:80;;5814:7;;5823:47;;5860:10;;5823:47;:::i;:::-;5791:8;:80::i;30487:257::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;30566:46:::1;::::0;-1:-1:-1;;;30566:46:0;;30581:4:::1;30566:46;::::0;::::1;1640:51:1::0;;;30548:15:0::1;::::0;30566:31:::1;::::0;1613:18:1;;30566:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30623:51;::::0;-1:-1:-1;;;30623:51:0;;30654:10:::1;30623:51;::::0;::::1;6988::1::0;7055:18;;;7048:34;;;30548:64:0;;-1:-1:-1;30638:4:0::1;::::0;30623:30:::1;::::0;6961:18:1;;30623:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;30685:51:0::1;::::0;30693:10:::1;::::0;30714:21:::1;30685:51:::0;::::1;;;::::0;::::1;::::0;;;30714:21;30693:10;30685:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30537:207;30487:257::o:0;31246:90::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;31303:18:::1;:25:::0;;-1:-1:-1;;31303:25:0::1;::::0;::::1;::::0;;31246:90::o;2281:103::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;2346:30:::1;2373:1;2346:18;:30::i;:::-;2281:103::o:0;18871:121::-;2135:6;;18923:4;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;-1:-1:-1;18940:14:0::1;:22:::0;;-1:-1:-1;;18940:22:0::1;::::0;;;18871:121;:::o;21120:167::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21233:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;21233:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21120:167::o;32131:98::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32195:18:0::1;32216:5;32195:18:::0;;;:11:::1;:18;::::0;;;;:26;;-1:-1:-1;;32195:26:0::1;::::0;;32131:98::o;31044:196::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;31117:12:::1;31135:6;-1:-1:-1::0;;;;;31135:11:0::1;31168:21;31135:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31116:89;;;31224:7;31216:16;;;::::0;::::1;23081:161:::0;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;23190:10:::1;::::0;23161:40:::1;::::0;-1:-1:-1;;;;;23190:10:0;;::::1;::::0;23161:40;::::1;::::0;::::1;::::0;23190:10:::1;::::0;23161:40:::1;23212:10;:22:::0;;-1:-1:-1;;;;;;23212:22:0::1;-1:-1:-1::0;;;;;23212:22:0;;;::::1;::::0;;;::::1;::::0;;23081:161::o;21399:393::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;21548:13:::1;:27:::0;;;21586:15:::1;:31:::0;;;21628:10:::1;:21:::0;;;21641:8;21675:31:::1;21604:13:::0;21564:11;21675:31:::1;:::i;:::-;:44;;;;:::i;:::-;21660:12;:59:::0;;;21754:2:::1;-1:-1:-1::0;21738:18:0::1;21730:54;;;::::0;-1:-1:-1;;;21730:54:0;;7755:2:1;21730:54:0::1;::::0;::::1;7737:21:1::0;7794:2;7774:18;;;7767:30;7833:25;7813:18;;;7806:53;7876:18;;21730:54:0::1;7553:347:1::0;21730:54:0::1;21399:393:::0;;;:::o;18753:112::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;18808:13:::1;:20:::0;;-1:-1:-1;;18839:18:0;;;;;18753:112::o;21293:100::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;21364:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;21364:21:0;;::::1;::::0;;;::::1;::::0;;21293:100::o;4224:104::-;4280:13;4313:7;4306:14;;;;;:::i;22393:302::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;22537:13:::1;::::0;-1:-1:-1;;;;;22537:13:0;;::::1;22529:21:::0;;::::1;::::0;22507:128:::1;;;::::0;-1:-1:-1;;;22507:128:0;;8107:2:1;22507:128:0::1;::::0;::::1;8089:21:1::0;8146:2;8126:18;;;8119:30;8185:34;8165:18;;;8158:62;8256:27;8236:18;;;8229:55;8301:19;;22507:128:0::1;7905:421:1::0;22507:128:0::1;22646:41;22675:4;22681:5;22646:28;:41::i;27786:570::-:0;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;27909:42:::1;27973:58;27909:42:::0;28026:4:::1;27973:25;:58::i;:::-;28042:15;:34:::0;;-1:-1:-1;;;;;;28042:34:0::1;-1:-1:-1::0;;;;;28042:34:0;::::1;::::0;;::::1;::::0;;;28121:26:::1;::::0;;-1:-1:-1;;;28121:26:0;;;;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;28042:34;28121:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28103:70:0::1;;28182:4;28189:16;-1:-1:-1::0;;;;;28189:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28103:110;::::0;-1:-1:-1;;;;;;28103:110:0::1;::::0;;;;;;-1:-1:-1;;;;;8817:15:1;;;28103:110:0::1;::::0;::::1;8799:34:1::0;8869:15;;8849:18;;;8842:43;8734:18;;28103:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28087:13;:126:::0;;-1:-1:-1;;;;;;28087:126:0::1;-1:-1:-1::0;;;;;28087:126:0;;;::::1;::::0;;::::1;::::0;;28224:55:::1;::::0;-1:-1:-1;28224:25:0::1;:55::i;:::-;28327:13;::::0;28290:58:::1;::::0;-1:-1:-1;;;;;28327:13:0::1;::::0;28290:28:::1;:58::i;:::-;27827:529;27786:570::o:0;5907:411::-;1710:10;6000:4;6044:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6044:34:0;;;;;;;;;;6097:35;;;;6089:85;;;;-1:-1:-1;;;6089:85:0;;9098:2:1;6089:85:0;;;9080:21:1;9137:2;9117:18;;;9110:30;9176:34;9156:18;;;9149:62;-1:-1:-1;;;9227:18:1;;;9220:35;9272:19;;6089:85:0;8896:401:1;6089:85:0;6210:67;1710:10;6233:7;6261:15;6242:16;:34;6210:8;:67::i;:::-;-1:-1:-1;6306:4:0;;5907:411;-1:-1:-1;;;5907:411:0:o;4679:175::-;4765:4;4782:42;1710:10;4806:9;4817:6;4782:9;:42::i;30750:288::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30845:20:0;::::1;30837:59;;;::::0;-1:-1:-1;;;30837:59:0;;9504:2:1;30837:59:0::1;::::0;::::1;9486:21:1::0;9543:2;9523:18;;;9516:30;9582:28;9562:18;;;9555:56;9628:18;;30837:59:0::1;9302:350:1::0;30837:59:0::1;30934:39;::::0;-1:-1:-1;;;30934:39:0;;30967:4:::1;30934:39;::::0;::::1;1640:51:1::0;30907:24:0::1;::::0;-1:-1:-1;;;;;30934:24:0;::::1;::::0;::::1;::::0;1613:18:1;;30934:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30984:46;::::0;-1:-1:-1;;;30984:46:0;;-1:-1:-1;;;;;7006:32:1;;;30984:46:0::1;::::0;::::1;6988:51:1::0;7055:18;;;7048:34;;;30907:66:0;;-1:-1:-1;30984:23:0;;::::1;::::0;::::1;::::0;6961:18:1;;30984:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30826:212;30750:288:::0;;:::o;22205:182::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22290:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22290:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22345:34;;1163:41:1;;;22345:34:0::1;::::0;1136:18:1;22345:34:0::1;;;;;;;22205:182:::0;;:::o;21798:401::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;21948:14:::1;:28:::0;;;21987:16:::1;:32:::0;;;22030:11:::1;:22:::0;;;22044:8;22079:33:::1;22006:13:::0;21965:11;22079:33:::1;:::i;:::-;:47;;;;:::i;:::-;22063:13;:63:::0;;;22162:1:::1;-1:-1:-1::0;22145:18:0::1;22137:54;;;::::0;-1:-1:-1;;;22137:54:0;;9859:2:1;22137:54:0::1;::::0;::::1;9841:21:1::0;9898:2;9878:18;;;9871:30;9937:25;9917:18;;;9910:53;9980:18;;22137:54:0::1;9657:347:1::0;19780:255:0;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;19921:3:::1;19913:4;19891:13;4520:12:::0;;;4432:108;19891:13:::1;:18;::::0;19907:2:::1;19891:18;:::i;:::-;19890:27;;;;:::i;:::-;19889:35;;;;:::i;:::-;19879:6;:45;;19857:131;;;::::0;-1:-1:-1;;;19857:131:0;;10211:2:1;19857:131:0::1;::::0;::::1;10193:21:1::0;10250:2;10230:18;;;10223:30;10289:34;10269:18;;;10262:62;-1:-1:-1;;;10340:18:1;;;10333:34;10384:19;;19857:131:0::1;10009:400:1::0;19857:131:0::1;20011:16;:6:::0;20021:5:::1;20011:16;:::i;:::-;19999:9;:28:::0;-1:-1:-1;19780:255:0:o;18998:497::-;2135:6;;19106:4;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;19185:6:::1;19164:13;4520:12:::0;;;4432:108;19164:13:::1;:17;::::0;19180:1:::1;19164:17;:::i;:::-;19163:28;;;;:::i;:::-;19150:9;:41;;19128:144;;;::::0;-1:-1:-1;;;19128:144:0;;10616:2:1;19128:144:0::1;::::0;::::1;10598:21:1::0;10655:2;10635:18;;;10628:30;10694:34;10674:18;;;10667:62;-1:-1:-1;;;10745:18:1;;;10738:51;10806:19;;19128:144:0::1;10414:417:1::0;19128:144:0::1;19340:4;19319:13;4520:12:::0;;;4432:108;19319:13:::1;:17;::::0;19335:1:::1;19319:17;:::i;:::-;19318:26;;;;:::i;:::-;19305:9;:39;;19283:141;;;::::0;-1:-1:-1;;;19283:141:0;;11038:2:1;19283:141:0::1;::::0;::::1;11020:21:1::0;11077:2;11057:18;;;11050:30;11116:34;11096:18;;;11089:62;-1:-1:-1;;;11167:18:1;;;11160:50;11227:19;;19283:141:0::1;10836:416:1::0;19283:141:0::1;-1:-1:-1::0;19435:18:0::1;:30:::0;19483:4:::1;::::0;18998:497::o;31722:403::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;31810:18:::1;::::0;;;::::1;;;31809:19;31801:65;;;::::0;-1:-1:-1;;;31801:65:0;;11459:2:1;31801:65:0::1;::::0;::::1;11441:21:1::0;11498:2;11478:18;;;11471:30;11537:34;11517:18;;;11510:62;-1:-1:-1;;;11588:18:1;;;11581:31;11629:19;;31801:65:0::1;11257:397:1::0;31801:65:0::1;31920:13;::::0;-1:-1:-1;;;;;31899:35:0;;::::1;31920:13:::0;::::1;31899:35;::::0;::::1;::::0;:103:::1;;-1:-1:-1::0;;;;;;31938:64:0;::::1;31959:42;31938:64;;31899:103;31877:200;;;::::0;-1:-1:-1;;;31877:200:0;;11861:2:1;31877:200:0::1;::::0;::::1;11843:21:1::0;11900:2;11880:18;;;11873:30;11939:34;11919:18;;;11912:62;-1:-1:-1;;;11990:18:1;;;11983:44;12044:19;;31877:200:0::1;11659:410:1::0;31877:200:0::1;-1:-1:-1::0;;;;;32088:22:0::1;;::::0;;;:11:::1;:22;::::0;;;;:29;;-1:-1:-1;;32088:29:0::1;32113:4;32088:29;::::0;;31722:403::o;2390:201::-;2135:6;;-1:-1:-1;;;;;2135:6:0;1710:10;2195:23;2187:68;;;;-1:-1:-1;;;2187:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2479:22:0;::::1;2471:73;;;::::0;-1:-1:-1;;;2471:73:0;;12276:2:1;2471:73:0::1;::::0;::::1;12258:21:1::0;12315:2;12295:18;;;12288:30;12354:34;12334:18;;;12327:62;-1:-1:-1;;;12405:18:1;;;12398:36;12451:19;;2471:73:0::1;12074:402:1::0;2471:73:0::1;2555:28;2574:8;2555:18;:28::i;8043:378::-:0;-1:-1:-1;;;;;8179:19:0;;8171:68;;;;-1:-1:-1;;;8171:68:0;;12683:2:1;8171:68:0;;;12665:21:1;12722:2;12702:18;;;12695:30;12761:34;12741:18;;;12734:62;-1:-1:-1;;;12812:18:1;;;12805:34;12856:19;;8171:68:0;12481:400:1;8171:68:0;-1:-1:-1;;;;;8258:21:0;;8250:68;;;;-1:-1:-1;;;8250:68:0;;13088:2:1;8250:68:0;;;13070:21:1;13127:2;13107:18;;;13100:30;13166:34;13146:18;;;13139:62;-1:-1:-1;;;13217:18:1;;;13210:32;13259:19;;8250:68:0;12886:398:1;8250:68:0;-1:-1:-1;;;;;8329:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8381:32;;1848:25:1;;;8381:32:0;;1821:18:1;8381:32:0;;;;;;;8043:378;;;:::o;23499:3803::-;-1:-1:-1;;;;;23631:18:0;;23623:68;;;;-1:-1:-1;;;23623:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23710:16:0;;23702:64;;;;-1:-1:-1;;;23702:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23786:17:0;;;;;;:11;:17;;;;;;;;23785:18;23777:48;;;;-1:-1:-1;;;23777:48:0;;14301:2:1;23777:48:0;;;14283:21:1;14340:2;14320:18;;;14313:30;-1:-1:-1;;;14359:18:1;;;14352:48;14417:18;;23777:48:0;14099:342:1;23777:48:0;-1:-1:-1;;;;;23845:15:0;;;;;;:11;:15;;;;;;;;23844:16;23836:48;;;;-1:-1:-1;;;23836:48:0;;14648:2:1;23836:48:0;;;14630:21:1;14687:2;14667:18;;;14660:30;-1:-1:-1;;;14706:18:1;;;14699:50;14766:18;;23836:48:0;14446:344:1;23836:48:0;23899:6;23909:1;23899:11;23895:93;;23927:28;23943:4;23949:2;23953:1;23927:15;:28::i;23895:93::-;24002:14;;;;23998:1635;;;2135:6;;-1:-1:-1;;;;;24055:15:0;;;2135:6;;24055:15;;;;:49;;-1:-1:-1;2135:6:0;;-1:-1:-1;;;;;24091:13:0;;;2135:6;;24091:13;;24055:49;:86;;;;-1:-1:-1;;;;;;24125:16:0;;;;24055:86;:128;;;;-1:-1:-1;;;;;;24162:21:0;;24176:6;24162:21;;24055:128;:158;;;;-1:-1:-1;24205:8:0;;-1:-1:-1;;;24205:8:0;;;;24204:9;24055:158;24033:1589;;;24253:13;;;;;;;24248:223;;-1:-1:-1;;;;;24325:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;24354:23:0;;;;;;:19;:23;;;;;;;;24325:52;24291:160;;;;-1:-1:-1;;;24291:160:0;;14997:2:1;24291:160:0;;;14979:21:1;15036:2;15016:18;;;15009:30;-1:-1:-1;;;15055:18:1;;;15048:52;15117:18;;24291:160:0;14795:346:1;24291:160:0;-1:-1:-1;;;;;24515:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;24572:35:0;;;;;;:31;:35;;;;;;;;24571:36;24515:92;24489:1118;;;24694:20;;24684:6;:30;;24650:169;;;;-1:-1:-1;;;24650:169:0;;15348:2:1;24650:169:0;;;15330:21:1;15387:2;15367:18;;;15360:30;15426:34;15406:18;;;15399:62;-1:-1:-1;;;15477:18:1;;;15470:51;15538:19;;24650:169:0;15146:417:1;24650:169:0;24902:9;;-1:-1:-1;;;;;4647:18:0;;4620:7;4647:18;;;;;;;;;;;24876:22;;:6;:22;:::i;:::-;:35;;24842:140;;;;-1:-1:-1;;;24842:140:0;;15770:2:1;24842:140:0;;;15752:21:1;15809:2;15789:18;;;15782:30;-1:-1:-1;;;15828:18:1;;;15821:49;15887:18;;24842:140:0;15568:343:1;24842:140:0;24489:1118;;;-1:-1:-1;;;;;25051:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;25106:37:0;;;;;;:31;:37;;;;;;;;25105:38;25051:92;25025:582;;;25230:20;;25220:6;:30;;25186:170;;;;-1:-1:-1;;;25186:170:0;;16118:2:1;25186:170:0;;;16100:21:1;16157:2;16137:18;;;16130:30;16196:34;16176:18;;;16169:62;-1:-1:-1;;;16247:18:1;;;16240:52;16309:19;;25186:170:0;15916:418:1;25025:582:0;-1:-1:-1;;;;;25387:35:0;;;;;;:31;:35;;;;;;;;25382:225;;25507:9;;-1:-1:-1;;;;;4647:18:0;;4620:7;4647:18;;;;;;;;;;;25481:22;;:6;:22;:::i;:::-;:35;;25447:140;;;;-1:-1:-1;;;25447:140:0;;15770:2:1;25447:140:0;;;15752:21:1;15809:2;15789:18;;;15782:30;-1:-1:-1;;;15828:18:1;;;15821:49;15887:18;;25447:140:0;15568:343:1;25447:140:0;25692:4;25643:28;4647:18;;;;;;;;;;;25748;;25724:42;;;;;;;25795:35;;-1:-1:-1;25819:11:0;;;;;;;25795:35;:61;;;;-1:-1:-1;25848:8:0;;-1:-1:-1;;;25848:8:0;;;;25847:9;25795:61;:110;;;;-1:-1:-1;;;;;;25874:31:0;;;;;;:25;:31;;;;;;;;25873:32;25795:110;:153;;;;-1:-1:-1;;;;;;25923:25:0;;;;;;:19;:25;;;;;;;;25922:26;25795:153;:194;;;;-1:-1:-1;;;;;;25966:23:0;;;;;;:19;:23;;;;;;;;25965:24;25795:194;25777:322;;;26016:8;:15;;-1:-1:-1;;;;26016:15:0;-1:-1:-1;;;26016:15:0;;;26046:10;:8;:10::i;:::-;26071:8;:16;;-1:-1:-1;;;;26071:16:0;;;25777:322;26125:8;;-1:-1:-1;;;;;26148:25:0;;26109:12;26148:25;;;:19;:25;;;;;;26125:8;-1:-1:-1;;;26125:8:0;;;;;26124:9;;26148:25;;:52;;-1:-1:-1;;;;;;26177:23:0;;;;;;:19;:23;;;;;;;;26148:52;26144:100;;;-1:-1:-1;26227:5:0;26144:100;26254:12;26285:7;26281:970;;;-1:-1:-1;;;;;26313:29:0;;;;;;:25;:29;;;;;;;;26309:797;;;26367:13;;:17;26363:351;;26416:34;26446:3;26416:25;26427:13;;26416:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;26409:41;;26523:13;;26503:16;;26496:4;:23;;;;:::i;:::-;26495:41;;;;:::i;:::-;26473:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;26599:13:0;;26584:11;;26577:18;;:4;:18;:::i;:::-;26576:36;;;;:::i;:::-;26559:13;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;26681:13:0;;26663:14;;26656:21;;:4;:21;:::i;:::-;26655:39;;;;:::i;:::-;26635:16;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;26363:351:0;26309:797;;;-1:-1:-1;;;;;26752:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;26802:1;26787:12;;:16;26752:51;26748:358;;;26831:33;26860:3;26831:24;26842:12;;26831:6;:10;;:24;;;;:::i;:33::-;26824:40;;26932:12;;26913:15;;26906:4;:22;;;;:::i;:::-;26905:39;;;;:::i;:::-;26883:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27002:12:0;;26988:10;;26981:17;;:4;:17;:::i;:::-;26980:34;;;;:::i;:::-;26963:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;27078:12:0;;27061:13;;27054:20;;:4;:20;:::i;:::-;27053:37;;;;:::i;:::-;27033:16;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;26748:358:0;27124:8;;27120:91;;27153:42;27169:4;27183;27190;27153:15;:42::i;:::-;27225:14;27235:4;27225:14;;:::i;:::-;;;26281:970;27261:33;27277:4;27283:2;27287:6;27261:15;:33::i;:::-;23612:3690;;;;23499:3803;;;:::o;2597:191::-;2690:6;;;-1:-1:-1;;;;;2707:17:0;;;-1:-1:-1;;;;;;2707:17:0;;;;;;;2740:40;;2690:6;;;2707:17;2690:6;;2740:40;;2671:16;;2740:40;2660:128;2597:191;:::o;22701:186::-;-1:-1:-1;;;;;22784:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;22784:39:0;;;;;;;;;;22839:40;;22784:39;;:31;22839:40;;;22701:186;;:::o;6324:725::-;-1:-1:-1;;;;;6464:20:0;;6456:70;;;;-1:-1:-1;;;6456:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6545:23:0;;6537:71;;;;-1:-1:-1;;;6537:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6701:17:0;;6677:21;6701:17;;;;;;;;;;;6737:23;;;;6729:74;;;;-1:-1:-1;;;6729:74:0;;16674:2:1;6729:74:0;;;16656:21:1;16713:2;16693:18;;;16686:30;16752:34;16732:18;;;16725:62;-1:-1:-1;;;16803:18:1;;;16796:36;16849:19;;6729:74:0;16472:402:1;6729:74:0;-1:-1:-1;;;;;6839:17:0;;;:9;:17;;;;;;;;;;;6859:22;;;6839:42;;6903:20;;;;;;;;:30;;6875:6;;6839:9;6903:30;;6875:6;;6903:30;:::i;:::-;;;;;;;;6966:9;-1:-1:-1;;;;;6949:35:0;6958:6;-1:-1:-1;;;;;6949:35:0;;6977:6;6949:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;6949:35:0;;;;;;;;6995:46;21399:393;28730:1751;28813:4;28769:23;4647:18;;;;;;;;;;;28769:50;;28830:20;28874:15;28853:18;;:36;;;;:::i;:::-;28830:59;;28900:25;28994:13;;28962:16;;28928:18;;:50;;;;:::i;:::-;:79;;;;:::i;:::-;28900:107;-1:-1:-1;29018:12:0;29045:20;;;:46;;-1:-1:-1;29069:22:0;;29045:46;29041:85;;;29108:7;;;;28730:1751::o;29041:85::-;29158:18;;:23;;29179:2;29158:23;:::i;:::-;29140:15;:41;29136:115;;;29216:18;;:23;;29237:2;29216:23;:::i;:::-;29198:41;;29136:115;29261:23;29374:1;29341:17;29306:18;;29288:15;:36;;;;:::i;:::-;29287:71;;;;:::i;:::-;:88;;;;:::i;:::-;29261:114;-1:-1:-1;29386:26:0;29415:36;:15;29261:114;29415:19;:36::i;:::-;29386:65;-1:-1:-1;29490:21:0;29522:36;29386:65;29522:16;:36::i;:::-;29569:18;29590:44;:21;29616:17;29590:25;:44::i;:::-;29569:65;;29645:21;29669:82;29748:1;29727:18;;:22;;;;:::i;:::-;29706:44;;:17;:44;:::i;:::-;29684:16;;29669:32;;:10;;:14;:32::i;:82::-;29645:106;;29762:18;29783:79;29859:1;29838:18;;:22;;;;:::i;:::-;29817:44;;:17;:44;:::i;:::-;29798:13;;29783:29;;:10;;:14;:29::i;:79::-;29762:100;-1:-1:-1;29873:23:0;29762:100;29899:26;29912:13;29899:10;:26;:::i;:::-;:39;;;;:::i;:::-;29970:1;29949:18;:22;;;29982:16;:20;;;30013:13;:17;;;30063:10;;30055:47;;29873:65;;-1:-1:-1;;;;;;30063:10:0;;30087;;30055:47;29970:1;30055:47;30087:10;30063;30055:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30041:61:0;;-1:-1:-1;;30117:19:0;;;;;:42;;;30158:1;30140:15;:19;30117:42;30113:278;;;30176:46;30189:15;30206;30176:12;:46::i;:::-;30346:18;;30242:137;;;17081:25:1;;;17137:2;17122:18;;17115:34;;;17165:18;;;17158:34;;;;30242:137:0;;;;;;17069:2:1;30242:137:0;;;30113:278;30423:10;;30415:58;;-1:-1:-1;;;;;30423:10:0;;;;30447:21;;30415:58;;;;30447:21;30423:10;30415:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;28730:1751:0:o;10025:98::-;10083:7;10110:5;10114:1;10110;:5;:::i;:::-;10103:12;10025:98;-1:-1:-1;;;10025:98:0:o;10129:::-;10187:7;10214:5;10218:1;10214;:5;:::i;9921:98::-;9979:7;10006:5;10010:1;10006;:5;:::i;27308:472::-;27398:16;;;27412:1;27398:16;;;;;;;;27374:21;;27398:16;;;;;;;;;;-1:-1:-1;27398:16:0;27374:40;;27443:4;27425;27430:1;27425:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27425:23:0;;;:7;;;;;;;;;;:23;;;;27469:15;;:22;;;-1:-1:-1;;;27469:22:0;;;;:15;;;;;:20;;:22;;;;;27425:7;;27469:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27459:4;27464:1;27459:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27459:32:0;;;:7;;;;;;;;;:32;27534:15;;27502:62;;27519:4;;27534:15;27552:11;27502:8;:62::i;:::-;27575:15;;:197;;-1:-1:-1;;;27575:197:0;;-1:-1:-1;;;;;27575:15:0;;;;:66;;:197;;27656:11;;27575:15;;27699:4;;27726;;27746:15;;27575:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27363:417;27308:472;:::o;28362:362::-;28475:15;;28443:62;;28460:4;;-1:-1:-1;;;;;28475:15:0;28493:11;28443:8;:62::i;:::-;28516:15;;-1:-1:-1;;;;;28516:15:0;:31;28555:9;28588:4;28608:11;28516:15;;28668:7;2135:6;;-1:-1:-1;;;;;2135:6:0;;2062:87;28668:7;28516:200;;;;;;-1:-1:-1;;;;;;28516:200:0;;;-1:-1:-1;;;;;18811:15:1;;;28516:200:0;;;18793:34:1;18843:18;;;18836:34;;;;18886:18;;;18879:34;;;;18929:18;;;18922:34;18993:15;;;18972:19;;;18965:44;28690:15:0;19025:19:1;;;19018:35;18727:19;;28516:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28362:362;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;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;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:118::-;3013:5;3006:13;2999:21;2992:5;2989:32;2979:60;;3035:1;3032;3025:12;3050:382;3115:6;3123;3176:2;3164:9;3155:7;3151:23;3147:32;3144:52;;;3192:1;3189;3182:12;3144:52;3231:9;3218:23;3250:31;3275:5;3250:31;:::i;:::-;3300:5;-1:-1:-1;3357:2:1;3342:18;;3329:32;3370:30;3329:32;3370:30;:::i;:::-;3419:7;3409:17;;;3050:382;;;;;:::o;3437:316::-;3514:6;3522;3530;3583:2;3571:9;3562:7;3558:23;3554:32;3551:52;;;3599:1;3596;3589:12;3551:52;-1:-1:-1;;3622:23:1;;;3692:2;3677:18;;3664:32;;-1:-1:-1;3743:2:1;3728:18;;;3715:32;;3437:316;-1:-1:-1;3437:316:1:o;3758:241::-;3814:6;3867:2;3855:9;3846:7;3842:23;3838:32;3835:52;;;3883:1;3880;3873:12;3835:52;3922:9;3909:23;3941:28;3963:5;3941:28;:::i;4004:388::-;4072:6;4080;4133:2;4121:9;4112:7;4108:23;4104:32;4101:52;;;4149:1;4146;4139:12;4101:52;4188:9;4175:23;4207:31;4232:5;4207:31;:::i;:::-;4257:5;-1:-1:-1;4314:2:1;4299:18;;4286:32;4327:33;4286:32;4327:33;:::i;4397:380::-;4476:1;4472:12;;;;4519;;;4540:61;;4594:4;4586:6;4582:17;4572:27;;4540:61;4647:2;4639:6;4636:14;4616:18;4613:38;4610:161;;4693:10;4688:3;4684:20;4681:1;4674:31;4728:4;4725:1;4718:15;4756:4;4753:1;4746:15;4610:161;;4397:380;;;:::o;4782:356::-;4984:2;4966:21;;;5003:18;;;4996:30;5062:34;5057:2;5042:18;;5035:62;5129:2;5114:18;;4782:356::o;5143:127::-;5204:10;5199:3;5195:20;5192:1;5185:31;5235:4;5232:1;5225:15;5259:4;5256:1;5249:15;5275:168;5348:9;;;5379;;5396:15;;;5390:22;;5376:37;5366:71;;5417:18;;:::i;5448:217::-;5488:1;5514;5504:132;;5558:10;5553:3;5549:20;5546:1;5539:31;5593:4;5590:1;5583:15;5621:4;5618:1;5611:15;5504:132;-1:-1:-1;5650:9:1;;5448:217::o;6495:125::-;6560:9;;;6581:10;;;6578:36;;;6594:18;;:::i;6625:184::-;6695:6;6748:2;6736:9;6727:7;6723:23;6719:32;6716:52;;;6764:1;6761;6754:12;6716:52;-1:-1:-1;6787:16:1;;6625:184;-1:-1:-1;6625:184:1:o;7093:245::-;7160:6;7213:2;7201:9;7192:7;7188:23;7184:32;7181:52;;;7229:1;7226;7219:12;7181:52;7261:9;7255:16;7280:28;7302:5;7280:28;:::i;8331:251::-;8401:6;8454:2;8442:9;8433:7;8429:23;8425:32;8422:52;;;8470:1;8467;8460:12;8422:52;8502:9;8496:16;8521:31;8546:5;8521:31;:::i;13289:401::-;13491:2;13473:21;;;13530:2;13510:18;;;13503:30;13569:34;13564:2;13549:18;;13542:62;-1:-1:-1;;;13635:2:1;13620:18;;13613:35;13680:3;13665:19;;13289:401::o;13695:399::-;13897:2;13879:21;;;13936:2;13916:18;;;13909:30;13975:34;13970:2;13955:18;;13948:62;-1:-1:-1;;;14041:2:1;14026:18;;14019:33;14084:3;14069:19;;13695:399::o;16339:128::-;16406:9;;;16427:11;;;16424:37;;;16441:18;;:::i;17335:127::-;17396:10;17391:3;17387:20;17384:1;17377:31;17427:4;17424:1;17417:15;17451:4;17448:1;17441:15;17467:980;17729:4;17777:3;17766:9;17762:19;17808:6;17797:9;17790:25;17834:2;17872:6;17867:2;17856:9;17852:18;17845:34;17915:3;17910:2;17899:9;17895:18;17888:31;17939:6;17974;17968:13;18005:6;17997;17990:22;18043:3;18032:9;18028:19;18021:26;;18082:2;18074:6;18070:15;18056:29;;18103:1;18113:195;18127:6;18124:1;18121:13;18113:195;;;18192:13;;-1:-1:-1;;;;;18188:39:1;18176:52;;18283:15;;;;18248:12;;;;18224:1;18142:9;18113:195;;;-1:-1:-1;;;;;;;18364:32:1;;;;18359:2;18344:18;;18337:60;-1:-1:-1;;;18428:3:1;18413:19;18406:35;18325:3;17467:980;-1:-1:-1;;;17467:980:1:o;19064:306::-;19152:6;19160;19168;19221:2;19209:9;19200:7;19196:23;19192:32;19189:52;;;19237:1;19234;19227:12;19189:52;19266:9;19260:16;19250:26;;19316:2;19305:9;19301:18;19295:25;19285:35;;19360:2;19349:9;19345:18;19339:25;19329:35;;19064:306;;;;;:::o
Swarm Source
ipfs://84cba468f89e15cf070321904f89deb67c913a2730d5eea24af05387fd70e33d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.