Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000 MATOS
Holders
42
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,227.5 MATOSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MATOS
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-25 */ /* telegram: https://t.me/matosportal https://www.youtube.com/watch?v=e5nyQmaq4k4&ab_channel=DylanLocke */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } 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) private _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 18; } 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"); 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); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, 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); } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership(bool confirmRenounce) external virtual onlyOwner { require(confirmRenounce, "Please confirm renounce!"); emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface ILpPair { function sync() external; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( 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 addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract MATOS is ERC20, Ownable { uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWallet; IDexRouter public dexRouter; address public lpPair; bool private swapping; uint256 public swapTokensAtAmount; address public operationsAddress; uint256 public tradingActiveBlock = 0; uint256 public blockForPenaltyEnd; mapping(address => bool) public boughtEarly; address[] public earlyBuyers; uint256 public botsCaught; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public sellingEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyOperationsFee; uint256 public buyLiquidityFee; uint256 private originalOperationsFee; uint256 private originalLiquidityFee; uint256 public sellTotalFees; uint256 public sellOperationsFee; uint256 public sellLiquidityFee; uint256 public tokensForOperations; uint256 public tokensForLiquidity; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event EnabledSellingForever(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxBuyAmount(uint256 newAmount); event UpdatedMaxSellAmount(uint256 newAmount); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedOperationsAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event OwnerForcedSwapBack(uint256 timestamp); event CaughtEarlyBuyer(address sniper); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() payable ERC20("Matos Coin", "MATOS") { address newOwner = msg.sender; address _dexRouter; if (block.chainid == 1) { _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2 MAINNET } else if (block.chainid == 4) { _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2 RINKEBY } else { revert("Chain not configured"); } // initialize router dexRouter = IDexRouter(_dexRouter); // create pair lpPair = IDexFactory(dexRouter.factory()).createPair( address(this), dexRouter.WETH() ); _excludeFromMaxTransaction(address(lpPair), true); _setAutomatedMarketMakerPair(address(lpPair), true); uint256 totalSupply = 1 * 1e6 * 1e18; maxBuyAmount = (totalSupply * 1) / 100; // 1% maxSellAmount = (totalSupply * 5) / 1000; // 0.5% maxWallet = (totalSupply * 2) / 100; // 2% swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 % buyOperationsFee = 8; buyLiquidityFee = 2; buyTotalFees = buyOperationsFee + buyLiquidityFee; originalOperationsFee = 4; originalLiquidityFee = 1; sellOperationsFee = 8; sellLiquidityFee = 2; sellTotalFees = sellOperationsFee + sellLiquidityFee; operationsAddress = address(0xc5E7f0C88715c47F5bC9C74AA1245b0dE88d26f3); _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); _excludeFromMaxTransaction(address(operationsAddress), true); _excludeFromMaxTransaction(address(dexRouter), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(operationsAddress), true); excludeFromFees(address(dexRouter), true); _createInitialSupply(address(this), totalSupply); transferOwnership(newOwner); } receive() external payable {} function getEarlyBuyers() external view returns (address[] memory) { return earlyBuyers; } function removeBoughtEarly(address wallet) external onlyOwner { require(boughtEarly[wallet], "Wallet is already not flagged."); boughtEarly[wallet] = false; } function markBoughtEarly(address wallet) external onlyOwner { require(!boughtEarly[wallet], "Wallet is already flagged."); boughtEarly[wallet] = true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; } function updateMaxBuyAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 10000) / 1e18, "Cannot set max buy amount lower than 0.01%" ); maxBuyAmount = newNum * (10**18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxSellAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 10000) / 1e18, "Cannot set max sell amount lower than 0.01%" ); maxSellAmount = newNum * (10**18); emit UpdatedMaxSellAmount(maxSellAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set max sell amount lower than 0.5%" ); maxWallet = newNum * (10**18); emit UpdatedMaxWalletAmount(maxWallet); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 1) / 1000, "Swap amount cannot be higher than 0.1% total supply." ); swapTokensAtAmount = newAmount; } function _excludeFromMaxTransaction(address updAds, bool isExcluded) private { _isExcludedMaxTransactionAmount[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner { if (!isEx) { require( updAds != lpPair, "Cannot remove uniswap pair from max txn" ); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require( pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner { buyOperationsFee = _operationsFee; buyLiquidityFee = _liquidityFee; buyTotalFees = buyOperationsFee + buyLiquidityFee; require(buyTotalFees <= 10, "Must keep fees at 10% or less"); } function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner { sellOperationsFee = _operationsFee; sellLiquidityFee = _liquidityFee; sellTotalFees = sellOperationsFee + sellLiquidityFee; require(sellTotalFees <= 10, "Must keep fees at 10% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } 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(amount > 0, "amount must be greater than 0"); if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (!earlyBuyPenaltyInEffect() && tradingActive) { require( !boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address." ); } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { if (transferDelayEnabled) { if (to != address(dexRouter) && to != address(lpPair)) { require( _holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled. Try again later." ); _holderLastTransferTimestamp[tx.origin] = block.number; _holderLastTransferTimestamp[to] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy." ); require( amount + balanceOf(to) <= maxWallet, "Max Wallet Exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require(sellingEnabled, "Selling disabled"); require( amount <= maxSellAmount, "Sell transfer amount exceeds the max sell." ); } 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[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // bot/sniper penalty. if ( (earlyBuyPenaltyInEffect() || (amount >= maxBuyAmount - .9 ether && blockForPenaltyEnd + 8 >= block.number)) && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && !_isExcludedFromFees[to] && buyTotalFees > 0 ) { if (!earlyBuyPenaltyInEffect()) { // reduce by 1 wei per max buy over what Uniswap will allow to revert bots as best as possible to limit erroneously blacklisted wallets. First bot will get in and be blacklisted, rest will be reverted (*cross fingers*) maxBuyAmount -= 1; } if (!boughtEarly[to]) { boughtEarly[to] = true; botsCaught += 1; earlyBuyers.push(to); emit CaughtEarlyBuyer(to); } fees = (amount * 99) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForOperations += (fees * buyOperationsFee) / buyTotalFees; } // on sell else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 100; tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForOperations += (fees * sellOperationsFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForOperations += (fees * buyOperationsFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function earlyBuyPenaltyInEffect() public view returns (bool) { return block.number < blockForPenaltyEnd; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(dexRouter), tokenAmount); // add the liquidity dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable msg.sender, block.timestamp ); } function removeLP(uint256 percent) external onlyOwner { uint256 lpBalance = IERC20(lpPair).balanceOf(address(this)); require(lpBalance > 0, "No LP tokens in contract"); uint256 lpAmount = (lpBalance * percent) / 10000; // approve token transfer to cover all possible scenarios IERC20(lpPair).approve(address(dexRouter), lpAmount); // remove the liquidity dexRouter.removeLiquidityETH( address(this), lpAmount, 1, 1, msg.sender, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 10) { contractBalance = swapTokensAtAmount * 10; } bool success; // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForOperations = (ethBalance * tokensForOperations) / (totalTokensToSwap - (tokensForLiquidity / 2)); ethForLiquidity -= ethForOperations; tokensForLiquidity = 0; tokensForOperations = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); } (success, ) = address(operationsAddress).call{ value: address(this).balance }(""); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require( _token != address(this) || !tradingActive, "Can't withdraw native tokens while trading is active" ); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } function withdrawStuckETH() external onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}( "" ); } function setOperationsAddress(address _operationsAddress) external onlyOwner { require( _operationsAddress != address(0), "_operationsAddress address cannot be 0" ); operationsAddress = payable(_operationsAddress); emit UpdatedOperationsAddress(_operationsAddress); } // remove limits after token is stable function removeLimits() external onlyOwner { limitsInEffect = false; } function restoreLimits() external onlyOwner { limitsInEffect = true; } // Enable selling - cannot be turned off! function setSellingEnabled(bool confirmSellingEnabled) external onlyOwner { require(confirmSellingEnabled, "Confirm selling enabled!"); require(!sellingEnabled, "Selling already enabled!"); sellingEnabled = true; emit EnabledSellingForever(); } function resetTaxes() external onlyOwner { buyOperationsFee = originalOperationsFee; buyLiquidityFee = originalLiquidityFee; buyTotalFees = buyOperationsFee + buyLiquidityFee; sellOperationsFee = originalOperationsFee; sellLiquidityFee = originalLiquidityFee; sellTotalFees = sellOperationsFee + sellLiquidityFee; } function instantiateLP() external onlyOwner { require(!tradingActive, "Trading is already active, cannot relaunch."); // add the liquidity require( address(this).balance > 0, "Must have ETH on contract to launch" ); require( balanceOf(address(this)) > 0, "Must have Tokens on contract to launch" ); _approve(address(this), address(dexRouter), balanceOf(address(this))); dexRouter.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, msg.sender, block.timestamp ); } function enableTrading(uint256 blocksForPenalty) external onlyOwner { require(!tradingActive, "Cannot reenable trading"); require( blocksForPenalty <= 10, "Cannot make penalty blocks more than 10" ); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; blockForPenaltyEnd = tradingActiveBlock + blocksForPenalty; emit EnabledTrading(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledSellingForever","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","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":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","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":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","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":"buyOperationsFee","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":"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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"earlyBuyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocksForPenalty","type":"uint256"}],"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":[],"name":"getEarlyBuyers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"instantiateLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"markBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","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":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"removeBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"removeLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmRenounce","type":"bool"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restoreLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmSellingEnabled","type":"bool"}],"name":"setSellingEnabled","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6000600d556012805463ffffffff191660019081179091556014805460ff19169091179055600a60809081526926b0ba37b99021b7b4b760b11b60a052610100604052600560c0908152644d41544f5360d81b60e0526003620000638382620008e5565b506004620000728282620008e5565b505050600062000087620004e360201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620044de833981519152908290a35033600046600103620000ec5750737a250d5630b4cf539739df2c5dacb4c659f2488d6200015e565b46600403620001115750737a250d5630b4cf539739df2c5dacb4c659f2488d6200015e565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b600980546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001de9190620009b1565b6001600160a01b031663c9c6539630600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000241573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002679190620009b1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db9190620009b1565b600a80546001600160a01b0319166001600160a01b0392909216918217905562000307906001620004e7565b600a5462000320906001600160a01b0316600162000548565b69d3c21bcecceda100000060646200033a826001620009f9565b62000346919062000a19565b6006556103e862000359826005620009f9565b62000365919062000a19565b600755606462000377826002620009f9565b62000383919062000a19565b60085561271062000396826005620009f9565b620003a2919062000a19565b600b556008601681905560026017819055620003be9162000a3c565b601555600460185560016019556008601b8190556002601c819055620003e49162000a3c565b601a55600c80546001600160a01b03191673c5e7f0c88715c47f5bc9c74aa1245b0de88d26f31790556200041a836001620004e7565b62000427306001620004e7565b6200043661dead6001620004e7565b600c546200044f906001600160a01b03166001620004e7565b60095462000468906001600160a01b03166001620004e7565b62000475836001620005b4565b62000482306001620005b4565b6200049161dead6001620005b4565b600c54620004aa906001600160a01b03166001620005b4565b600954620004c3906001600160a01b03166001620005b4565b620004cf30826200065e565b620004da8362000743565b50505062000a52565b3390565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602160205260409020805460ff1916821515179055620005788282620004e7565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005ff5760405162461bcd60e51b81526020600482018190526024820152600080516020620044be833981519152604482015260640162000155565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006b65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000155565b8060026000828254620006ca919062000a3c565b90915550506001600160a01b03821660009081526020819052604081208054839290620006f990849062000a3c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200078e5760405162461bcd60e51b81526020600482018190526024820152600080516020620044be833981519152604482015260640162000155565b6001600160a01b038116620007f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000155565b6005546040516001600160a01b03808416921690600080516020620044de83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200086b57607f821691505b6020821081036200088c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008e057600081815260208120601f850160051c81016020861015620008bb5750805b601f850160051c820191505b81811015620008dc57828155600101620008c7565b5050505b505050565b81516001600160401b0381111562000901576200090162000840565b620009198162000912845462000856565b8462000892565b602080601f831160018114620009515760008415620009385750858301515b600019600386901b1c1916600185901b178555620008dc565b600085815260208120601f198616915b82811015620009825788860151825594840194600190910190840162000961565b5085821015620009a15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009c457600080fd5b81516001600160a01b0381168114620009dc57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000a135762000a13620009e3565b92915050565b60008262000a3757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000a135762000a13620009e3565b613a5c8062000a626000396000f3fe6080604052600436106103d25760003560e01c80638da5cb5b116101fd578063d85ba06311610118578063ee40166e116100ab578063f5648a4f1161007a578063f5648a4f14610b13578063f637434214610b28578063f771cb6514610b3e578063f8b45b0514610b5f578063fb002c9714610b7557600080fd5b8063ee40166e14610aa7578063efda116514610abd578063f11a24d314610add578063f2fde38b14610af357600080fd5b8063e7b71ce2116100e7578063e7b71ce214610a3d578063e884f26014610a52578063ea4cfe1214610a67578063eb472fc414610a8757600080fd5b8063d85ba063146109ab578063dc3f0d0f146109c1578063dd62ed3e146109e1578063e2f4560514610a2757600080fd5b8063b16d78cf11610190578063c02466681161015f578063c024666814610931578063c18bc19514610951578063c876d0b914610971578063d257b34f1461098b57600080fd5b8063b16d78cf146108ad578063b62496f5146108cd578063b822d566146108fd578063bbc0c7421461091257600080fd5b8063a28e86d3116101cc578063a28e86d314610842578063a457c2d714610857578063a62068ce14610877578063a9059cbb1461088d57600080fd5b80638da5cb5b146107cd57806395d89b41146107eb5780639a5bd2dd146108005780639a7a23d61461082257600080fd5b806358a6d531116102ed57806370a082311161028057806382aa7c681161024f57806382aa7c68146107475780638366e79a1461076757806385ecfd281461078757806388e765ff146107b757600080fd5b806370a08231146106d2578063751039fc146106f25780637571336a146107075780637e926b4b1461072757600080fd5b806366d602ae116102bc57806366d602ae146106705780636a486a8e146106865780636b0a894c1461069c5780636ddd1713146106b257600080fd5b806358a6d531146106035780635a139dd41461061a5780635bb988c91461063057806366ca9b831461065057600080fd5b806323b872dd11610365578063452ed4f111610334578063452ed4f114610593578063499b8394146105b35780634a62bb65146105d35780634f77f6c0146105ed57600080fd5b806323b872dd146105175780632be32b6114610537578063313ce56714610557578063395093511461057357600080fd5b806310d5de53116103a157806310d5de531461049357806318160ddd146104c25780631a8145bb146104e15780631d5915f3146104f757600080fd5b806302dbd8f8146103de57806306fdde03146104005780630758d9241461042b578063095ea7b31461046357600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103fe6103f936600461356d565b610b8b565b005b34801561040c57600080fd5b50610415610c2b565b604051610422919061358f565b60405180910390f35b34801561043757600080fd5b5060095461044b906001600160a01b031681565b6040516001600160a01b039091168152602001610422565b34801561046f57600080fd5b5061048361047e3660046135f5565b610cbd565b6040519015158152602001610422565b34801561049f57600080fd5b506104836104ae366004613621565b602080526000908152604090205460ff1681565b3480156104ce57600080fd5b506002545b604051908152602001610422565b3480156104ed57600080fd5b506104d3601e5481565b34801561050357600080fd5b506103fe610512366004613621565b610cd4565b34801561052357600080fd5b50610483610532366004613645565b610d8b565b34801561054357600080fd5b506103fe610552366004613686565b610e35565b34801561056357600080fd5b5060405160128152602001610422565b34801561057f57600080fd5b5061048361058e3660046135f5565b610f43565b34801561059f57600080fd5b50600a5461044b906001600160a01b031681565b3480156105bf57600080fd5b506103fe6105ce366004613621565b610f7f565b3480156105df57600080fd5b506012546104839060ff1681565b3480156105f957600080fd5b506104d3601b5481565b34801561060f57600080fd5b50600e544310610483565b34801561062657600080fd5b506104d360165481565b34801561063c57600080fd5b506103fe61064b366004613621565b611058565b34801561065c57600080fd5b506103fe61066b36600461356d565b61110b565b34801561067c57600080fd5b506104d360075481565b34801561069257600080fd5b506104d3601a5481565b3480156106a857600080fd5b506104d360115481565b3480156106be57600080fd5b506012546104839062010000900460ff1681565b3480156106de57600080fd5b506104d36106ed366004613621565b61119e565b3480156106fe57600080fd5b506103fe6111b9565b34801561071357600080fd5b506103fe6107223660046136ad565b6111ef565b34801561073357600080fd5b506103fe6107423660046136e6565b6112b6565b34801561075357600080fd5b506103fe610762366004613686565b611378565b34801561077357600080fd5b50610483610782366004613703565b6114ac565b34801561079357600080fd5b506104836107a2366004613621565b600f6020526000908152604090205460ff1681565b3480156107c357600080fd5b506104d360065481565b3480156107d957600080fd5b506005546001600160a01b031661044b565b3480156107f757600080fd5b506104156116e6565b34801561080c57600080fd5b506108156116f5565b6040516104229190613775565b34801561082e57600080fd5b506103fe61083d3660046136ad565b611756565b34801561084e57600080fd5b506103fe61184a565b34801561086357600080fd5b506104836108723660046135f5565b611883565b34801561088357600080fd5b506104d3600e5481565b34801561089957600080fd5b506104836108a83660046135f5565b61191c565b3480156108b957600080fd5b506103fe6108c83660046136e6565b611929565b3480156108d957600080fd5b506104836108e8366004613621565b60216020526000908152604090205460ff1681565b34801561090957600080fd5b506103fe611a39565b34801561091e57600080fd5b5060125461048390610100900460ff1681565b34801561093d57600080fd5b506103fe61094c3660046136ad565b611c37565b34801561095d57600080fd5b506103fe61096c366004613686565b611cc0565b34801561097d57600080fd5b506014546104839060ff1681565b34801561099757600080fd5b506103fe6109a6366004613686565b611dc7565b3480156109b757600080fd5b506104d360155481565b3480156109cd57600080fd5b506103fe6109dc366004613686565b611f12565b3480156109ed57600080fd5b506104d36109fc366004613703565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a3357600080fd5b506104d3600b5481565b348015610a4957600080fd5b506103fe61201a565b348015610a5e57600080fd5b506103fe61207e565b348015610a7357600080fd5b50600c5461044b906001600160a01b031681565b348015610a9357600080fd5b5061044b610aa2366004613686565b6120b4565b348015610ab357600080fd5b506104d3600d5481565b348015610ac957600080fd5b506103fe610ad8366004613686565b6120de565b348015610ae957600080fd5b506104d360175481565b348015610aff57600080fd5b506103fe610b0e366004613621565b6122df565b348015610b1f57600080fd5b506103fe6123ca565b348015610b3457600080fd5b506104d3601c5481565b348015610b4a57600080fd5b50601254610483906301000000900460ff1681565b348015610b6b57600080fd5b506104d360085481565b348015610b8157600080fd5b506104d3601d5481565b6005546001600160a01b03163314610bbe5760405162461bcd60e51b8152600401610bb590613788565b60405180910390fd5b601b829055601c819055610bd281836137d3565b601a819055600a1015610c275760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610bb5565b5050565b606060038054610c3a906137e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c66906137e6565b8015610cb35780601f10610c8857610100808354040283529160200191610cb3565b820191906000526020600020905b815481529060010190602001808311610c9657829003601f168201915b5050505050905090565b6000610cca338484612441565b5060015b92915050565b6005546001600160a01b03163314610cfe5760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b0381166000908152600f602052604090205460ff1615610d675760405162461bcd60e51b815260206004820152601a60248201527f57616c6c657420697320616c726561647920666c61676765642e0000000000006044820152606401610bb5565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000610d98848484612565565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e1d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bb5565b610e2a8533858403612441565b506001949350505050565b6005546001600160a01b03163314610e5f5760405162461bcd60e51b8152600401610bb590613788565b670de0b6b3a7640000612710610e7460025490565b610e7f906001613820565b610e899190613837565b610e939190613837565b811015610ef55760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152697468616e20302e30312560b01b6064820152608401610bb5565b610f0781670de0b6b3a7640000613820565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cca918590610f7a9086906137d3565b612441565b6005546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b03811661100e5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610bb5565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b0381166000908152600f602052604090205460ff166110ea5760405162461bcd60e51b815260206004820152601e60248201527f57616c6c657420697320616c7265616479206e6f7420666c61676765642e00006044820152606401610bb5565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6005546001600160a01b031633146111355760405162461bcd60e51b8152600401610bb590613788565b6016829055601781905561114981836137d3565b6015819055600a1015610c275760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610bb5565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146111e35760405162461bcd60e51b8152600401610bb590613788565b6012805460ff19169055565b6005546001600160a01b031633146112195760405162461bcd60e51b8152600401610bb590613788565b8061128c57600a546001600160a01b039081169083160361128c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610bb5565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112e05760405162461bcd60e51b8152600401610bb590613788565b8061132d5760405162461bcd60e51b815260206004820152601860248201527f506c6561736520636f6e6669726d2072656e6f756e63652100000000000000006044820152606401610bb5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350600580546001600160a01b0319169055565b6005546001600160a01b031633146113a25760405162461bcd60e51b8152600401610bb590613788565b601254610100900460ff16156113fa5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610bb5565b600a81111561145b5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060448201526607468616e2031360cc1b6064820152608401610bb5565b6012805462ffff0019166201010017905543600d81905561147d9082906137d3565b600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546000906001600160a01b031633146114d95760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b03831661152f5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610bb5565b6001600160a01b0383163014158061154f5750601254610100900460ff16155b6115b85760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610bb5565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156115ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116239190613859565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190613872565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b606060048054610c3a906137e6565b60606010805480602002602001604051908101604052809291908181526020018280548015610cb357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161172f575050505050905090565b6005546001600160a01b031633146117805760405162461bcd60e51b8152600401610bb590613788565b600a546001600160a01b03908116908316036118045760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610bb5565b61180e8282613035565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146118745760405162461bcd60e51b8152600401610bb590613788565b6012805460ff19166001179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156119055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bb5565b6119123385858403612441565b5060019392505050565b6000610cca338484612565565b6005546001600160a01b031633146119535760405162461bcd60e51b8152600401610bb590613788565b806119a05760405162461bcd60e51b815260206004820152601860248201527f436f6e6669726d2073656c6c696e6720656e61626c65642100000000000000006044820152606401610bb5565b6012546301000000900460ff16156119fa5760405162461bcd60e51b815260206004820152601860248201527f53656c6c696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bb5565b6012805463ff000000191663010000001790556040517f9392259d24d71f51fdce621059e3218b1271b2a2781a380c58fff224548c193c90600090a150565b6005546001600160a01b03163314611a635760405162461bcd60e51b8152600401610bb590613788565b601254610100900460ff1615611acf5760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610bb5565b60004711611b2b5760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610bb5565b6000611b363061119e565b11611b925760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610bb5565b600954611bad9030906001600160a01b0316610f7a8261119e565b6009546001600160a01b031663f305d7194730611bc98161119e565b60008033426040518863ffffffff1660e01b8152600401611bef9695949392919061388f565b60606040518083038185885af1158015611c0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c3291906138ca565b505050565b6005546001600160a01b03163314611c615760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611cea5760405162461bcd60e51b8152600401610bb590613788565b670de0b6b3a76400006103e8611cff60025490565b611d0a906005613820565b611d149190613837565b611d1e9190613837565b811015611d805760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e352560b01b6064820152608401610bb5565b611d9281670de0b6b3a7640000613820565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610f38565b6005546001600160a01b03163314611df15760405162461bcd60e51b8152600401610bb590613788565b620186a0611dfe60025490565b611e09906001613820565b611e139190613837565b811015611e805760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610bb5565b6103e8611e8c60025490565b611e97906001613820565b611ea19190613837565b811115611f0d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610bb5565b600b55565b6005546001600160a01b03163314611f3c5760405162461bcd60e51b8152600401610bb590613788565b670de0b6b3a7640000612710611f5160025490565b611f5c906001613820565b611f669190613837565b611f709190613837565b811015611fd35760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260448201526a207468616e20302e30312560a81b6064820152608401610bb5565b611fe581670de0b6b3a7640000613820565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f38565b6005546001600160a01b031633146120445760405162461bcd60e51b8152600401610bb590613788565b6018546016819055601954601781905561205d916137d3565b601555601854601b819055601954601c819055612079916137d3565b601a55565b6005546001600160a01b031633146120a85760405162461bcd60e51b8152600401610bb590613788565b6014805460ff19169055565b601081815481106120c457600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146121085760405162461bcd60e51b8152600401610bb590613788565b600a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121759190613859565b9050600081116121c75760405162461bcd60e51b815260206004820152601860248201527f4e6f204c5020746f6b656e7320696e20636f6e747261637400000000000000006044820152606401610bb5565b60006127106121d68484613820565b6121e09190613837565b600a5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190613872565b50600954604051629d473b60e21b81526001600160a01b03909116906302751cec90612296903090859060019081903390429060040161388f565b60408051808303816000875af11580156122b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d891906138f8565b5050505050565b6005546001600160a01b031633146123095760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b03811661236e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146123f45760405162461bcd60e51b8152600401610bb590613788565b604051600090339047908381818185875af1925050503d8060008114612436576040519150601f19603f3d011682016040523d82523d6000602084013e61243b565b606091505b50505050565b6001600160a01b0383166124a35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bb5565b6001600160a01b0382166125045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bb5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661258b5760405162461bcd60e51b8152600401610bb59061391c565b6001600160a01b0382166125b15760405162461bcd60e51b8152600401610bb590613961565b600081116126015760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610bb5565b601254610100900460ff16612694576001600160a01b0383166000908152601f602052604090205460ff168061264f57506001600160a01b0382166000908152601f602052604090205460ff165b6126945760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610bb5565b600e5443101580156126ad5750601254610100900460ff165b1561277d576001600160a01b0383166000908152600f602052604090205460ff1615806126e757506005546001600160a01b038381169116145b806126fc57506001600160a01b03821661dead145b61277d5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610bb5565b60125460ff1615612ba4576005546001600160a01b038481169116148015906127b457506005546001600160a01b03838116911614155b80156127cb57506001600160a01b03821661dead14155b80156127f057506001600160a01b0383166000908152601f602052604090205460ff16155b801561281557506001600160a01b0382166000908152601f602052604090205460ff16155b15612ba45760145460ff161561292e576009546001600160a01b038381169116148015906128515750600a546001600160a01b03838116911614155b1561292e576128616002436139a4565b3260009081526013602052604090205410801561289f57506128846002436139a4565b6001600160a01b038316600090815260136020526040902054105b6129095760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610bb5565b3260009081526013602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526021602052604090205460ff16801561296e57506001600160a01b038216600090815260208052604090205460ff16155b15612a35576006548111156129d65760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610bb5565b6008546129e28361119e565b6129ec90836137d3565b1115612a305760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610bb5565b612ba4565b6001600160a01b03821660009081526021602052604090205460ff168015612a7557506001600160a01b038316600090815260208052604090205460ff16155b15612b2b576012546301000000900460ff16612ac65760405162461bcd60e51b815260206004820152601060248201526f14d95b1b1a5b99c8191a5cd8589b195960821b6044820152606401610bb5565b600754811115612a305760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610bb5565b6001600160a01b038216600090815260208052604090205460ff16612ba457600854612b568361119e565b612b6090836137d3565b1115612ba45760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610bb5565b6000612baf3061119e565b600b5490915081108015908190612bce575060125462010000900460ff165b8015612be45750600a54600160a01b900460ff16155b8015612c0857506001600160a01b03841660009081526021602052604090205460ff165b15612c3657600a805460ff60a01b1916600160a01b179055612c28613063565b600a805460ff60a01b191690555b6001600160a01b0385166000908152601f602052604090205460019060ff1680612c7857506001600160a01b0385166000908152601f602052604090205460ff165b15612c81575060005b6000811561302157600e54431080612cc75750670c7d713b49da0000600654612caa91906139a4565b8510158015612cc7575043600e546008612cc491906137d3565b10155b8015612ceb57506001600160a01b03871660009081526021602052604090205460ff165b8015612d1057506001600160a01b03861660009081526021602052604090205460ff16155b8015612d3557506001600160a01b0386166000908152601f602052604090205460ff16155b8015612d4357506000601554115b15612eca57600e544310612d6a57600160066000828254612d6491906139a4565b90915550505b6001600160a01b0386166000908152600f602052604090205460ff16612e4a576001600160a01b0386166000908152600f60205260408120805460ff191660019081179091556011805491929091612dc39084906137d3565b9091555050601080546001810182556000919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319166001600160a01b0388169081179091556040519081527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064612e57866063613820565b612e619190613837565b905060155460175482612e749190613820565b612e7e9190613837565b601e6000828254612e8f91906137d3565b9091555050601554601654612ea49083613820565b612eae9190613837565b601d6000828254612ebf91906137d3565b909155506130039050565b6001600160a01b03861660009081526021602052604090205460ff168015612ef457506000601a54115b15612f56576064601a5486612f099190613820565b612f139190613837565b9050601a54601c5482612f269190613820565b612f309190613837565b601e6000828254612f4191906137d3565b9091555050601a54601b54612ea49083613820565b6001600160a01b03871660009081526021602052604090205460ff168015612f8057506000601554115b1561300357606460155486612f959190613820565b612f9f9190613837565b905060155460175482612fb29190613820565b612fbc9190613837565b601e6000828254612fcd91906137d3565b9091555050601554601654612fe29083613820565b612fec9190613837565b601d6000828254612ffd91906137d3565b90915550505b8015613014576130148730836131c5565b61301e81866139a4565b94505b61302c8787876131c5565b50505050505050565b6001600160a01b0382166000908152602160205260409020805460ff191682151517905561180e828261331a565b600061306e3061119e565b90506000601d54601e5461308291906137d3565b905081158061308f575080155b15613098575050565b600b546130a690600a613820565b8211156130be57600b546130bb90600a613820565b91505b600080600283601e54866130d29190613820565b6130dc9190613837565b6130e69190613837565b90506130fa6130f582866139a4565b61337b565b601e544790819060009061311090600290613837565b61311a90876139a4565b601d546131279085613820565b6131319190613837565b905061313d81836139a4565b6000601e819055601d55915083158015906131585750600082115b156131675761316784836134d5565b600c546040516001600160a01b03909116904790600081818185875af1925050503d80600081146131b4576040519150601f19603f3d011682016040523d82523d6000602084013e6131b9565b606091505b50505050505050505050565b6001600160a01b0383166131eb5760405162461bcd60e51b8152600401610bb59061391c565b6001600160a01b0382166132115760405162461bcd60e51b8152600401610bb590613961565b6001600160a01b038316600090815260208190526040902054818110156132895760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bb5565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906132c09084906137d3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161330c91815260200190565b60405180910390a350505050565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106133b0576133b06139b7565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342d91906139cd565b81600181518110613440576134406139b7565b6001600160a01b0392831660209182029290920101526009546134669130911684612441565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061349f9085906000908690309042906004016139ea565b600060405180830381600087803b1580156134b957600080fd5b505af11580156134cd573d6000803e3d6000fd5b505050505050565b6009546134ed9030906001600160a01b031684612441565b60095460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061352a903090879060009081903390429060040161388f565b60606040518083038185885af1158015613548573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122d891906138ca565b6000806040838503121561358057600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156135bc578581018301518582016040015282016135a0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146135f257600080fd5b50565b6000806040838503121561360857600080fd5b8235613613816135dd565b946020939093013593505050565b60006020828403121561363357600080fd5b813561363e816135dd565b9392505050565b60008060006060848603121561365a57600080fd5b8335613665816135dd565b92506020840135613675816135dd565b929592945050506040919091013590565b60006020828403121561369857600080fd5b5035919050565b80151581146135f257600080fd5b600080604083850312156136c057600080fd5b82356136cb816135dd565b915060208301356136db8161369f565b809150509250929050565b6000602082840312156136f857600080fd5b813561363e8161369f565b6000806040838503121561371657600080fd5b8235613721816135dd565b915060208301356136db816135dd565b600081518084526020808501945080840160005b8381101561376a5781516001600160a01b031687529582019590820190600101613745565b509495945050505050565b60208152600061363e6020830184613731565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610cce57610cce6137bd565b600181811c908216806137fa57607f821691505b60208210810361381a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082028115828204841417610cce57610cce6137bd565b60008261385457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561386b57600080fd5b5051919050565b60006020828403121561388457600080fd5b815161363e8161369f565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156138df57600080fd5b8351925060208401519150604084015190509250925092565b6000806040838503121561390b57600080fd5b505080516020909101519092909150565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610cce57610cce6137bd565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156139df57600080fd5b815161363e816135dd565b85815284602082015260a060408201526000613a0960a0830186613731565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212207395437e7afdf4c96d61ca95a880d0b7e70a363f18cc40b81757ed6b202a15d564736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106103d25760003560e01c80638da5cb5b116101fd578063d85ba06311610118578063ee40166e116100ab578063f5648a4f1161007a578063f5648a4f14610b13578063f637434214610b28578063f771cb6514610b3e578063f8b45b0514610b5f578063fb002c9714610b7557600080fd5b8063ee40166e14610aa7578063efda116514610abd578063f11a24d314610add578063f2fde38b14610af357600080fd5b8063e7b71ce2116100e7578063e7b71ce214610a3d578063e884f26014610a52578063ea4cfe1214610a67578063eb472fc414610a8757600080fd5b8063d85ba063146109ab578063dc3f0d0f146109c1578063dd62ed3e146109e1578063e2f4560514610a2757600080fd5b8063b16d78cf11610190578063c02466681161015f578063c024666814610931578063c18bc19514610951578063c876d0b914610971578063d257b34f1461098b57600080fd5b8063b16d78cf146108ad578063b62496f5146108cd578063b822d566146108fd578063bbc0c7421461091257600080fd5b8063a28e86d3116101cc578063a28e86d314610842578063a457c2d714610857578063a62068ce14610877578063a9059cbb1461088d57600080fd5b80638da5cb5b146107cd57806395d89b41146107eb5780639a5bd2dd146108005780639a7a23d61461082257600080fd5b806358a6d531116102ed57806370a082311161028057806382aa7c681161024f57806382aa7c68146107475780638366e79a1461076757806385ecfd281461078757806388e765ff146107b757600080fd5b806370a08231146106d2578063751039fc146106f25780637571336a146107075780637e926b4b1461072757600080fd5b806366d602ae116102bc57806366d602ae146106705780636a486a8e146106865780636b0a894c1461069c5780636ddd1713146106b257600080fd5b806358a6d531146106035780635a139dd41461061a5780635bb988c91461063057806366ca9b831461065057600080fd5b806323b872dd11610365578063452ed4f111610334578063452ed4f114610593578063499b8394146105b35780634a62bb65146105d35780634f77f6c0146105ed57600080fd5b806323b872dd146105175780632be32b6114610537578063313ce56714610557578063395093511461057357600080fd5b806310d5de53116103a157806310d5de531461049357806318160ddd146104c25780631a8145bb146104e15780631d5915f3146104f757600080fd5b806302dbd8f8146103de57806306fdde03146104005780630758d9241461042b578063095ea7b31461046357600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103fe6103f936600461356d565b610b8b565b005b34801561040c57600080fd5b50610415610c2b565b604051610422919061358f565b60405180910390f35b34801561043757600080fd5b5060095461044b906001600160a01b031681565b6040516001600160a01b039091168152602001610422565b34801561046f57600080fd5b5061048361047e3660046135f5565b610cbd565b6040519015158152602001610422565b34801561049f57600080fd5b506104836104ae366004613621565b602080526000908152604090205460ff1681565b3480156104ce57600080fd5b506002545b604051908152602001610422565b3480156104ed57600080fd5b506104d3601e5481565b34801561050357600080fd5b506103fe610512366004613621565b610cd4565b34801561052357600080fd5b50610483610532366004613645565b610d8b565b34801561054357600080fd5b506103fe610552366004613686565b610e35565b34801561056357600080fd5b5060405160128152602001610422565b34801561057f57600080fd5b5061048361058e3660046135f5565b610f43565b34801561059f57600080fd5b50600a5461044b906001600160a01b031681565b3480156105bf57600080fd5b506103fe6105ce366004613621565b610f7f565b3480156105df57600080fd5b506012546104839060ff1681565b3480156105f957600080fd5b506104d3601b5481565b34801561060f57600080fd5b50600e544310610483565b34801561062657600080fd5b506104d360165481565b34801561063c57600080fd5b506103fe61064b366004613621565b611058565b34801561065c57600080fd5b506103fe61066b36600461356d565b61110b565b34801561067c57600080fd5b506104d360075481565b34801561069257600080fd5b506104d3601a5481565b3480156106a857600080fd5b506104d360115481565b3480156106be57600080fd5b506012546104839062010000900460ff1681565b3480156106de57600080fd5b506104d36106ed366004613621565b61119e565b3480156106fe57600080fd5b506103fe6111b9565b34801561071357600080fd5b506103fe6107223660046136ad565b6111ef565b34801561073357600080fd5b506103fe6107423660046136e6565b6112b6565b34801561075357600080fd5b506103fe610762366004613686565b611378565b34801561077357600080fd5b50610483610782366004613703565b6114ac565b34801561079357600080fd5b506104836107a2366004613621565b600f6020526000908152604090205460ff1681565b3480156107c357600080fd5b506104d360065481565b3480156107d957600080fd5b506005546001600160a01b031661044b565b3480156107f757600080fd5b506104156116e6565b34801561080c57600080fd5b506108156116f5565b6040516104229190613775565b34801561082e57600080fd5b506103fe61083d3660046136ad565b611756565b34801561084e57600080fd5b506103fe61184a565b34801561086357600080fd5b506104836108723660046135f5565b611883565b34801561088357600080fd5b506104d3600e5481565b34801561089957600080fd5b506104836108a83660046135f5565b61191c565b3480156108b957600080fd5b506103fe6108c83660046136e6565b611929565b3480156108d957600080fd5b506104836108e8366004613621565b60216020526000908152604090205460ff1681565b34801561090957600080fd5b506103fe611a39565b34801561091e57600080fd5b5060125461048390610100900460ff1681565b34801561093d57600080fd5b506103fe61094c3660046136ad565b611c37565b34801561095d57600080fd5b506103fe61096c366004613686565b611cc0565b34801561097d57600080fd5b506014546104839060ff1681565b34801561099757600080fd5b506103fe6109a6366004613686565b611dc7565b3480156109b757600080fd5b506104d360155481565b3480156109cd57600080fd5b506103fe6109dc366004613686565b611f12565b3480156109ed57600080fd5b506104d36109fc366004613703565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a3357600080fd5b506104d3600b5481565b348015610a4957600080fd5b506103fe61201a565b348015610a5e57600080fd5b506103fe61207e565b348015610a7357600080fd5b50600c5461044b906001600160a01b031681565b348015610a9357600080fd5b5061044b610aa2366004613686565b6120b4565b348015610ab357600080fd5b506104d3600d5481565b348015610ac957600080fd5b506103fe610ad8366004613686565b6120de565b348015610ae957600080fd5b506104d360175481565b348015610aff57600080fd5b506103fe610b0e366004613621565b6122df565b348015610b1f57600080fd5b506103fe6123ca565b348015610b3457600080fd5b506104d3601c5481565b348015610b4a57600080fd5b50601254610483906301000000900460ff1681565b348015610b6b57600080fd5b506104d360085481565b348015610b8157600080fd5b506104d3601d5481565b6005546001600160a01b03163314610bbe5760405162461bcd60e51b8152600401610bb590613788565b60405180910390fd5b601b829055601c819055610bd281836137d3565b601a819055600a1015610c275760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610bb5565b5050565b606060038054610c3a906137e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c66906137e6565b8015610cb35780601f10610c8857610100808354040283529160200191610cb3565b820191906000526020600020905b815481529060010190602001808311610c9657829003601f168201915b5050505050905090565b6000610cca338484612441565b5060015b92915050565b6005546001600160a01b03163314610cfe5760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b0381166000908152600f602052604090205460ff1615610d675760405162461bcd60e51b815260206004820152601a60248201527f57616c6c657420697320616c726561647920666c61676765642e0000000000006044820152606401610bb5565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000610d98848484612565565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e1d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bb5565b610e2a8533858403612441565b506001949350505050565b6005546001600160a01b03163314610e5f5760405162461bcd60e51b8152600401610bb590613788565b670de0b6b3a7640000612710610e7460025490565b610e7f906001613820565b610e899190613837565b610e939190613837565b811015610ef55760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152697468616e20302e30312560b01b6064820152608401610bb5565b610f0781670de0b6b3a7640000613820565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cca918590610f7a9086906137d3565b612441565b6005546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b03811661100e5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610bb5565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b0381166000908152600f602052604090205460ff166110ea5760405162461bcd60e51b815260206004820152601e60248201527f57616c6c657420697320616c7265616479206e6f7420666c61676765642e00006044820152606401610bb5565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6005546001600160a01b031633146111355760405162461bcd60e51b8152600401610bb590613788565b6016829055601781905561114981836137d3565b6015819055600a1015610c275760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610bb5565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146111e35760405162461bcd60e51b8152600401610bb590613788565b6012805460ff19169055565b6005546001600160a01b031633146112195760405162461bcd60e51b8152600401610bb590613788565b8061128c57600a546001600160a01b039081169083160361128c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610bb5565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112e05760405162461bcd60e51b8152600401610bb590613788565b8061132d5760405162461bcd60e51b815260206004820152601860248201527f506c6561736520636f6e6669726d2072656e6f756e63652100000000000000006044820152606401610bb5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350600580546001600160a01b0319169055565b6005546001600160a01b031633146113a25760405162461bcd60e51b8152600401610bb590613788565b601254610100900460ff16156113fa5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610bb5565b600a81111561145b5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060448201526607468616e2031360cc1b6064820152608401610bb5565b6012805462ffff0019166201010017905543600d81905561147d9082906137d3565b600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546000906001600160a01b031633146114d95760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b03831661152f5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610bb5565b6001600160a01b0383163014158061154f5750601254610100900460ff16155b6115b85760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610bb5565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156115ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116239190613859565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190613872565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b606060048054610c3a906137e6565b60606010805480602002602001604051908101604052809291908181526020018280548015610cb357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161172f575050505050905090565b6005546001600160a01b031633146117805760405162461bcd60e51b8152600401610bb590613788565b600a546001600160a01b03908116908316036118045760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610bb5565b61180e8282613035565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146118745760405162461bcd60e51b8152600401610bb590613788565b6012805460ff19166001179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156119055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bb5565b6119123385858403612441565b5060019392505050565b6000610cca338484612565565b6005546001600160a01b031633146119535760405162461bcd60e51b8152600401610bb590613788565b806119a05760405162461bcd60e51b815260206004820152601860248201527f436f6e6669726d2073656c6c696e6720656e61626c65642100000000000000006044820152606401610bb5565b6012546301000000900460ff16156119fa5760405162461bcd60e51b815260206004820152601860248201527f53656c6c696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bb5565b6012805463ff000000191663010000001790556040517f9392259d24d71f51fdce621059e3218b1271b2a2781a380c58fff224548c193c90600090a150565b6005546001600160a01b03163314611a635760405162461bcd60e51b8152600401610bb590613788565b601254610100900460ff1615611acf5760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610bb5565b60004711611b2b5760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610bb5565b6000611b363061119e565b11611b925760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610bb5565b600954611bad9030906001600160a01b0316610f7a8261119e565b6009546001600160a01b031663f305d7194730611bc98161119e565b60008033426040518863ffffffff1660e01b8152600401611bef9695949392919061388f565b60606040518083038185885af1158015611c0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c3291906138ca565b505050565b6005546001600160a01b03163314611c615760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611cea5760405162461bcd60e51b8152600401610bb590613788565b670de0b6b3a76400006103e8611cff60025490565b611d0a906005613820565b611d149190613837565b611d1e9190613837565b811015611d805760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e352560b01b6064820152608401610bb5565b611d9281670de0b6b3a7640000613820565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610f38565b6005546001600160a01b03163314611df15760405162461bcd60e51b8152600401610bb590613788565b620186a0611dfe60025490565b611e09906001613820565b611e139190613837565b811015611e805760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610bb5565b6103e8611e8c60025490565b611e97906001613820565b611ea19190613837565b811115611f0d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610bb5565b600b55565b6005546001600160a01b03163314611f3c5760405162461bcd60e51b8152600401610bb590613788565b670de0b6b3a7640000612710611f5160025490565b611f5c906001613820565b611f669190613837565b611f709190613837565b811015611fd35760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260448201526a207468616e20302e30312560a81b6064820152608401610bb5565b611fe581670de0b6b3a7640000613820565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f38565b6005546001600160a01b031633146120445760405162461bcd60e51b8152600401610bb590613788565b6018546016819055601954601781905561205d916137d3565b601555601854601b819055601954601c819055612079916137d3565b601a55565b6005546001600160a01b031633146120a85760405162461bcd60e51b8152600401610bb590613788565b6014805460ff19169055565b601081815481106120c457600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146121085760405162461bcd60e51b8152600401610bb590613788565b600a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121759190613859565b9050600081116121c75760405162461bcd60e51b815260206004820152601860248201527f4e6f204c5020746f6b656e7320696e20636f6e747261637400000000000000006044820152606401610bb5565b60006127106121d68484613820565b6121e09190613837565b600a5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190613872565b50600954604051629d473b60e21b81526001600160a01b03909116906302751cec90612296903090859060019081903390429060040161388f565b60408051808303816000875af11580156122b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d891906138f8565b5050505050565b6005546001600160a01b031633146123095760405162461bcd60e51b8152600401610bb590613788565b6001600160a01b03811661236e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146123f45760405162461bcd60e51b8152600401610bb590613788565b604051600090339047908381818185875af1925050503d8060008114612436576040519150601f19603f3d011682016040523d82523d6000602084013e61243b565b606091505b50505050565b6001600160a01b0383166124a35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bb5565b6001600160a01b0382166125045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bb5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661258b5760405162461bcd60e51b8152600401610bb59061391c565b6001600160a01b0382166125b15760405162461bcd60e51b8152600401610bb590613961565b600081116126015760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610bb5565b601254610100900460ff16612694576001600160a01b0383166000908152601f602052604090205460ff168061264f57506001600160a01b0382166000908152601f602052604090205460ff165b6126945760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610bb5565b600e5443101580156126ad5750601254610100900460ff165b1561277d576001600160a01b0383166000908152600f602052604090205460ff1615806126e757506005546001600160a01b038381169116145b806126fc57506001600160a01b03821661dead145b61277d5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610bb5565b60125460ff1615612ba4576005546001600160a01b038481169116148015906127b457506005546001600160a01b03838116911614155b80156127cb57506001600160a01b03821661dead14155b80156127f057506001600160a01b0383166000908152601f602052604090205460ff16155b801561281557506001600160a01b0382166000908152601f602052604090205460ff16155b15612ba45760145460ff161561292e576009546001600160a01b038381169116148015906128515750600a546001600160a01b03838116911614155b1561292e576128616002436139a4565b3260009081526013602052604090205410801561289f57506128846002436139a4565b6001600160a01b038316600090815260136020526040902054105b6129095760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610bb5565b3260009081526013602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526021602052604090205460ff16801561296e57506001600160a01b038216600090815260208052604090205460ff16155b15612a35576006548111156129d65760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610bb5565b6008546129e28361119e565b6129ec90836137d3565b1115612a305760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610bb5565b612ba4565b6001600160a01b03821660009081526021602052604090205460ff168015612a7557506001600160a01b038316600090815260208052604090205460ff16155b15612b2b576012546301000000900460ff16612ac65760405162461bcd60e51b815260206004820152601060248201526f14d95b1b1a5b99c8191a5cd8589b195960821b6044820152606401610bb5565b600754811115612a305760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610bb5565b6001600160a01b038216600090815260208052604090205460ff16612ba457600854612b568361119e565b612b6090836137d3565b1115612ba45760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610bb5565b6000612baf3061119e565b600b5490915081108015908190612bce575060125462010000900460ff165b8015612be45750600a54600160a01b900460ff16155b8015612c0857506001600160a01b03841660009081526021602052604090205460ff165b15612c3657600a805460ff60a01b1916600160a01b179055612c28613063565b600a805460ff60a01b191690555b6001600160a01b0385166000908152601f602052604090205460019060ff1680612c7857506001600160a01b0385166000908152601f602052604090205460ff165b15612c81575060005b6000811561302157600e54431080612cc75750670c7d713b49da0000600654612caa91906139a4565b8510158015612cc7575043600e546008612cc491906137d3565b10155b8015612ceb57506001600160a01b03871660009081526021602052604090205460ff165b8015612d1057506001600160a01b03861660009081526021602052604090205460ff16155b8015612d3557506001600160a01b0386166000908152601f602052604090205460ff16155b8015612d4357506000601554115b15612eca57600e544310612d6a57600160066000828254612d6491906139a4565b90915550505b6001600160a01b0386166000908152600f602052604090205460ff16612e4a576001600160a01b0386166000908152600f60205260408120805460ff191660019081179091556011805491929091612dc39084906137d3565b9091555050601080546001810182556000919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319166001600160a01b0388169081179091556040519081527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064612e57866063613820565b612e619190613837565b905060155460175482612e749190613820565b612e7e9190613837565b601e6000828254612e8f91906137d3565b9091555050601554601654612ea49083613820565b612eae9190613837565b601d6000828254612ebf91906137d3565b909155506130039050565b6001600160a01b03861660009081526021602052604090205460ff168015612ef457506000601a54115b15612f56576064601a5486612f099190613820565b612f139190613837565b9050601a54601c5482612f269190613820565b612f309190613837565b601e6000828254612f4191906137d3565b9091555050601a54601b54612ea49083613820565b6001600160a01b03871660009081526021602052604090205460ff168015612f8057506000601554115b1561300357606460155486612f959190613820565b612f9f9190613837565b905060155460175482612fb29190613820565b612fbc9190613837565b601e6000828254612fcd91906137d3565b9091555050601554601654612fe29083613820565b612fec9190613837565b601d6000828254612ffd91906137d3565b90915550505b8015613014576130148730836131c5565b61301e81866139a4565b94505b61302c8787876131c5565b50505050505050565b6001600160a01b0382166000908152602160205260409020805460ff191682151517905561180e828261331a565b600061306e3061119e565b90506000601d54601e5461308291906137d3565b905081158061308f575080155b15613098575050565b600b546130a690600a613820565b8211156130be57600b546130bb90600a613820565b91505b600080600283601e54866130d29190613820565b6130dc9190613837565b6130e69190613837565b90506130fa6130f582866139a4565b61337b565b601e544790819060009061311090600290613837565b61311a90876139a4565b601d546131279085613820565b6131319190613837565b905061313d81836139a4565b6000601e819055601d55915083158015906131585750600082115b156131675761316784836134d5565b600c546040516001600160a01b03909116904790600081818185875af1925050503d80600081146131b4576040519150601f19603f3d011682016040523d82523d6000602084013e6131b9565b606091505b50505050505050505050565b6001600160a01b0383166131eb5760405162461bcd60e51b8152600401610bb59061391c565b6001600160a01b0382166132115760405162461bcd60e51b8152600401610bb590613961565b6001600160a01b038316600090815260208190526040902054818110156132895760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bb5565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906132c09084906137d3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161330c91815260200190565b60405180910390a350505050565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106133b0576133b06139b7565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342d91906139cd565b81600181518110613440576134406139b7565b6001600160a01b0392831660209182029290920101526009546134669130911684612441565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061349f9085906000908690309042906004016139ea565b600060405180830381600087803b1580156134b957600080fd5b505af11580156134cd573d6000803e3d6000fd5b505050505050565b6009546134ed9030906001600160a01b031684612441565b60095460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061352a903090879060009081903390429060040161388f565b60606040518083038185885af1158015613548573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122d891906138ca565b6000806040838503121561358057600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156135bc578581018301518582016040015282016135a0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146135f257600080fd5b50565b6000806040838503121561360857600080fd5b8235613613816135dd565b946020939093013593505050565b60006020828403121561363357600080fd5b813561363e816135dd565b9392505050565b60008060006060848603121561365a57600080fd5b8335613665816135dd565b92506020840135613675816135dd565b929592945050506040919091013590565b60006020828403121561369857600080fd5b5035919050565b80151581146135f257600080fd5b600080604083850312156136c057600080fd5b82356136cb816135dd565b915060208301356136db8161369f565b809150509250929050565b6000602082840312156136f857600080fd5b813561363e8161369f565b6000806040838503121561371657600080fd5b8235613721816135dd565b915060208301356136db816135dd565b600081518084526020808501945080840160005b8381101561376a5781516001600160a01b031687529582019590820190600101613745565b509495945050505050565b60208152600061363e6020830184613731565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610cce57610cce6137bd565b600181811c908216806137fa57607f821691505b60208210810361381a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082028115828204841417610cce57610cce6137bd565b60008261385457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561386b57600080fd5b5051919050565b60006020828403121561388457600080fd5b815161363e8161369f565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156138df57600080fd5b8351925060208401519150604084015190509250925092565b6000806040838503121561390b57600080fd5b505080516020909101519092909150565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610cce57610cce6137bd565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156139df57600080fd5b815161363e816135dd565b85815284602082015260a060408201526000613a0960a0830186613731565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212207395437e7afdf4c96d61ca95a880d0b7e70a363f18cc40b81757ed6b202a15d564736f6c63430008110033
Deployed Bytecode Sourcemap
8637:21039:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16832:344;;;;;;;;;;-1:-1:-1;16832:344:0;;;;;:::i;:::-;;:::i;:::-;;1989:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8780:27;;;;;;;;;;-1:-1:-1;8780:27:0;;;;-1:-1:-1;;;;;8780:27:0;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;8780:27:0;820:221:1;3044:210:0;;;;;;;;;;-1:-1:-1;3044:210:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;3044:210:0;1502:187:1;10002:63:0;;;;;;;;;;-1:-1:-1;10002:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2310:108;;;;;;;;;;-1:-1:-1;2398:12:0;;2310:108;;;2092:25:1;;;2080:2;2065:18;2310:108:0;1946:177:1;9901:33:0;;;;;;;;;;;;;;;;13505:175;;;;;;;;;;-1:-1:-1;13505:175:0;;;;;:::i;:::-;;:::i;3262:529::-;;;;;;;;;;-1:-1:-1;3262:529:0;;;;;:::i;:::-;;:::i;13847:312::-;;;;;;;;;;-1:-1:-1;13847:312:0;;;;;:::i;:::-;;:::i;2209:93::-;;;;;;;;;;-1:-1:-1;2209:93:0;;2292:2;2916:36:1;;2904:2;2889:18;2209:93:0;2774:184:1;3799:297:0;;;;;;;;;;-1:-1:-1;3799:297:0;;;;;:::i;:::-;;:::i;8814:21::-;;;;;;;;;;-1:-1:-1;8814:21:0;;;;-1:-1:-1;;;;;8814:21:0;;;27151:357;;;;;;;;;;-1:-1:-1;27151:357:0;;;;;:::i;:::-;;:::i;9159:33::-;;;;;;;;;;-1:-1:-1;9159:33:0;;;;;;;;9781:32;;;;;;;;;;;;;;;;23265:121;;;;;;;;;;-1:-1:-1;23360:18:0;;23345:12;:33;23265:121;;9580:31;;;;;;;;;;;;;;;;13316:181;;;;;;;;;;-1:-1:-1;13316:181:0;;;;;:::i;:::-;;:::i;16485:339::-;;;;;;;;;;-1:-1:-1;16485:339:0;;;;;:::i;:::-;;:::i;8712:28::-;;;;;;;;;;;;;;;;9746;;;;;;;;;;;;;;;;9125:25;;;;;;;;;;;;;;;;9239:31;;;;;;;;;;-1:-1:-1;9239:31:0;;;;;;;;;;;2426:177;;;;;;;;;;-1:-1:-1;2426:177:0;;;;;:::i;:::-;;:::i;27560:84::-;;;;;;;;;;;;;:::i;15538:334::-;;;;;;;;;;-1:-1:-1;15538:334:0;;;;;:::i;:::-;;:::i;6520:265::-;;;;;;;;;;-1:-1:-1;6520:265:0;;;;;:::i;:::-;;:::i;29209:464::-;;;;;;;;;;-1:-1:-1;29209:464:0;;;;;:::i;:::-;;:::i;26383:567::-;;;;;;;;;;-1:-1:-1;26383:567:0;;;;;:::i;:::-;;:::i;9040:43::-;;;;;;;;;;-1:-1:-1;9040:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8678:27;;;;;;;;;;;;;;;;6306:79;;;;;;;;;;-1:-1:-1;6371:6:0;;-1:-1:-1;;;;;6371:6:0;6306:79;;2097:104;;;;;;;;;;;;;:::i;13204:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15880:353::-;;;;;;;;;;-1:-1:-1;15880:353:0;;;;;:::i;:::-;;:::i;27652:84::-;;;;;;;;;;;;;:::i;4104:482::-;;;;;;;;;;-1:-1:-1;4104:482:0;;;;;:::i;:::-;;:::i;9000:33::-;;;;;;;;;;;;;;;;2611:216;;;;;;;;;;-1:-1:-1;2611:216:0;;;;;:::i;:::-;;:::i;27791:287::-;;;;;;;;;;-1:-1:-1;27791:287:0;;;;;:::i;:::-;;:::i;10074:57::-;;;;;;;;;;-1:-1:-1;10074:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28470:731;;;;;;;;;;;;;:::i;9199:33::-;;;;;;;;;;-1:-1:-1;9199:33:0;;;;;;;;;;;17184:182;;;;;;;;;;-1:-1:-1;17184:182:0;;;;;:::i;:::-;;:::i;14492:311::-;;;;;;;;;;-1:-1:-1;14492:311:0;;;;;:::i;:::-;;:::i;9498:39::-;;;;;;;;;;-1:-1:-1;9498:39:0;;;;;;;;14873:428;;;;;;;;;;-1:-1:-1;14873:428:0;;;;;:::i;:::-;;:::i;9546:27::-;;;;;;;;;;;;;;;;14167:317;;;;;;;;;;-1:-1:-1;14167:317:0;;;;;:::i;:::-;;:::i;2835:201::-;;;;;;;;;;-1:-1:-1;2835:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3001:18:0;;;2969:7;3001:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2835:201;8872:33;;;;;;;;;;;;;;;;28086:376;;;;;;;;;;;;;:::i;13741:98::-;;;;;;;;;;;;;:::i;8914:32::-;;;;;;;;;;-1:-1:-1;8914:32:0;;;;-1:-1:-1;;;;;8914:32:0;;;9090:28;;;;;;;;;;-1:-1:-1;9090:28:0;;;;;:::i;:::-;;:::i;8955:37::-;;;;;;;;;;;;;;;;24485:613;;;;;;;;;;-1:-1:-1;24485:613:0;;;;;:::i;:::-;;:::i;9618:30::-;;;;;;;;;;;;;;;;6793:281;;;;;;;;;;-1:-1:-1;6793:281:0;;;;;:::i;:::-;;:::i;26958:185::-;;;;;;;;;;;;;:::i;9820:31::-;;;;;;;;;;;;;;;;9277:34;;;;;;;;;;-1:-1:-1;9277:34:0;;;;;;;;;;;8747:24;;;;;;;;;;;;;;;;9860:34;;;;;;;;;;;;;;;;16832:344;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;;;;;;;;;16956:17:::1;:34:::0;;;17001:16:::1;:32:::0;;;17060:36:::1;17020:13:::0;16976:14;17060:36:::1;:::i;:::-;17044:13;:52:::0;;;17132:2:::1;-1:-1:-1::0;17115:19:0::1;17107:61;;;::::0;-1:-1:-1;;;17107:61:0;;5877:2:1;17107:61:0::1;::::0;::::1;5859:21:1::0;5916:2;5896:18;;;5889:30;5955:31;5935:18;;;5928:59;6004:18;;17107:61:0::1;5675:353:1::0;17107:61:0::1;16832:344:::0;;:::o;1989:100::-;2043:13;2076:5;2069:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1989:100;:::o;3044:210::-;3163:4;3185:39;290:10;3208:7;3217:6;3185:8;:39::i;:::-;-1:-1:-1;3242:4:0;3044:210;;;;;:::o;13505:175::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13585:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;::::1;;13584:20;13576:59;;;::::0;-1:-1:-1;;;13576:59:0;;6620:2:1;13576:59:0::1;::::0;::::1;6602:21:1::0;6659:2;6639:18;;;6632:30;6698:28;6678:18;;;6671:56;6744:18;;13576:59:0::1;6418:350:1::0;13576:59:0::1;-1:-1:-1::0;;;;;13646:19:0::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;13646:26:0::1;13668:4;13646:26;::::0;;13505:175::o;3262:529::-;3402:4;3419:36;3429:6;3437:9;3448:6;3419:9;:36::i;:::-;-1:-1:-1;;;;;3495:19:0;;3468:24;3495:19;;;:11;:19;;;;;;;;290:10;3495:33;;;;;;;;3561:26;;;;3539:116;;;;-1:-1:-1;;;3539:116:0;;6975:2:1;3539:116:0;;;6957:21:1;7014:2;6994:18;;;6987:30;7053:34;7033:18;;;7026:62;-1:-1:-1;;;7104:18:1;;;7097:38;7152:19;;3539:116:0;6773:404:1;3539:116:0;3691:57;3700:6;290:10;3741:6;3722:16;:25;3691:8;:57::i;:::-;-1:-1:-1;3779:4:0;;3262:529;-1:-1:-1;;;;3262:529:0:o;13847:312::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;13985:4:::1;13976:5;13955:13;2398:12:::0;;;2310:108;13955:13:::1;:17;::::0;13971:1:::1;13955:17;:::i;:::-;13954:27;;;;:::i;:::-;13953:36;;;;:::i;:::-;13943:6;:46;;13921:138;;;::::0;-1:-1:-1;;;13921:138:0;;7779:2:1;13921:138:0::1;::::0;::::1;7761:21:1::0;7818:2;7798:18;;;7791:30;7857:34;7837:18;;;7830:62;-1:-1:-1;;;7908:18:1;;;7901:40;7958:19;;13921:138:0::1;7577:406:1::0;13921:138:0::1;14085:17;:6:::0;14095::::1;14085:17;:::i;:::-;14070:12;:32:::0;;;14118:33:::1;::::0;2092:25:1;;;14118:33:0::1;::::0;2080:2:1;2065:18;14118:33:0::1;;;;;;;;13847:312:::0;:::o;3799:297::-;290:10;3914:4;4008:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4008:34:0;;;;;;;;;;3914:4;;3936:130;;3986:7;;4008:47;;4045:10;;4008:47;:::i;:::-;3936:8;:130::i;27151:357::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27284:32:0;::::1;27262:120;;;::::0;-1:-1:-1;;;27262:120:0;;8190:2:1;27262:120:0::1;::::0;::::1;8172:21:1::0;8229:2;8209:18;;;8202:30;8268:34;8248:18;;;8241:62;-1:-1:-1;;;8319:18:1;;;8312:36;8365:19;;27262:120:0::1;7988:402:1::0;27262:120:0::1;27393:17;:47:::0;;-1:-1:-1;;;;;;27393:47:0::1;-1:-1:-1::0;;;;;27393:47:0;::::1;::::0;;::::1;::::0;;;27456:44:::1;::::0;::::1;::::0;-1:-1:-1;;27456:44:0::1;27151:357:::0;:::o;13316:181::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13397:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;::::1;;13389:62;;;::::0;-1:-1:-1;;;13389:62:0;;8597:2:1;13389:62:0::1;::::0;::::1;8579:21:1::0;8636:2;8616:18;;;8609:30;8675:32;8655:18;;;8648:60;8725:18;;13389:62:0::1;8395:354:1::0;13389:62:0::1;-1:-1:-1::0;;;;;13462:19:0::1;13484:5;13462:19:::0;;;:11:::1;:19;::::0;;;;:27;;-1:-1:-1;;13462:27:0::1;::::0;;13316:181::o;16485:339::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;16609:16:::1;:33:::0;;;16653:15:::1;:31:::0;;;16710:34:::1;16671:13:::0;16628:14;16710:34:::1;:::i;:::-;16695:12;:49:::0;;;16779:2:::1;-1:-1:-1::0;16763:18:0::1;16755:60;;;::::0;-1:-1:-1;;;16755:60:0;;5877:2:1;16755:60:0::1;::::0;::::1;5859:21:1::0;5916:2;5896:18;;;5889:30;5955:31;5935:18;;;5928:59;6004:18;;16755:60:0::1;5675:353:1::0;2426:177:0;-1:-1:-1;;;;;2577:18:0;2545:7;2577:18;;;;;;;;;;;;2426:177::o;27560:84::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;27614:14:::1;:22:::0;;-1:-1:-1;;27614:22:0::1;::::0;;27560:84::o;15538:334::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;15658:4:::1;15653:155;;15715:6;::::0;-1:-1:-1;;;;;15715:6:0;;::::1;15705:16:::0;;::::1;::::0;15679:117:::1;;;::::0;-1:-1:-1;;;15679:117:0;;8956:2:1;15679:117:0::1;::::0;::::1;8938:21:1::0;8995:2;8975:18;;;8968:30;9034:34;9014:18;;;9007:62;-1:-1:-1;;;9085:18:1;;;9078:37;9132:19;;15679:117:0::1;8754:403:1::0;15679:117:0::1;-1:-1:-1::0;;;;;15818:39:0;;;::::1;;::::0;;;:31:::1;:39:::0;;;;;:46;;-1:-1:-1;;15818:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15538:334::o;6520:265::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;6647:15:::1;6639:52;;;::::0;-1:-1:-1;;;6639:52:0;;9364:2:1;6639:52:0::1;::::0;::::1;9346:21:1::0;9403:2;9383:18;;;9376:30;9442:26;9422:18;;;9415:54;9486:18;;6639:52:0::1;9162:348:1::0;6639:52:0::1;6728:6;::::0;6707:40:::1;::::0;6744:1:::1;::::0;-1:-1:-1;;;;;6728:6:0::1;::::0;6707:40:::1;::::0;6744:1;;6707:40:::1;-1:-1:-1::0;6758:6:0::1;:19:::0;;-1:-1:-1;;;;;;6758:19:0::1;::::0;;6520:265::o;29209:464::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;29297:13:::1;::::0;::::1;::::0;::::1;;;29296:14;29288:50;;;::::0;-1:-1:-1;;;29288:50:0;;9717:2:1;29288:50:0::1;::::0;::::1;9699:21:1::0;9756:2;9736:18;;;9729:30;9795:25;9775:18;;;9768:53;9838:18;;29288:50:0::1;9515:347:1::0;29288:50:0::1;29391:2;29371:16;:22;;29349:111;;;::::0;-1:-1:-1;;;29349:111:0;;10069:2:1;29349:111:0::1;::::0;::::1;10051:21:1::0;10108:2;10088:18;;;10081:30;10147:34;10127:18;;;10120:62;-1:-1:-1;;;10198:18:1;;;10191:37;10245:19;;29349:111:0::1;9867:403:1::0;29349:111:0::1;29471:13;:20:::0;;-1:-1:-1;;29502:18:0;;;;;29552:12:::1;29531:18;:33:::0;;;29596:37:::1;::::0;29617:16;;29596:37:::1;:::i;:::-;29575:18;:58:::0;29649:16:::1;::::0;::::1;::::0;;;::::1;29209:464:::0;:::o;26383:567::-;6433:6;;26497:10;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26533:20:0;::::1;26525:59;;;::::0;-1:-1:-1;;;26525:59:0;;10477:2:1;26525:59:0::1;::::0;::::1;10459:21:1::0;10516:2;10496:18;;;10489:30;10555:28;10535:18;;;10528:56;10601:18;;26525:59:0::1;10275:350:1::0;26525:59:0::1;-1:-1:-1::0;;;;;26617:23:0;::::1;26635:4;26617:23;;::::0;:41:::1;;-1:-1:-1::0;26645:13:0::1;::::0;::::1;::::0;::::1;;;26644:14;26617:41;26595:143;;;::::0;-1:-1:-1;;;26595:143:0;;10832:2:1;26595:143:0::1;::::0;::::1;10814:21:1::0;10871:2;10851:18;;;10844:30;10910:34;10890:18;;;10883:62;-1:-1:-1;;;10961:18:1;;;10954:50;11021:19;;26595:143:0::1;10630:416:1::0;26595:143:0::1;26776:39;::::0;-1:-1:-1;;;26776:39:0;;26809:4:::1;26776:39;::::0;::::1;984:51:1::0;26749:24:0::1;::::0;-1:-1:-1;;;;;26776:24:0;::::1;::::0;::::1;::::0;957:18:1;;26776:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26834:46;::::0;-1:-1:-1;;;26834:46:0;;-1:-1:-1;;;;;11432:32:1;;;26834:46:0::1;::::0;::::1;11414:51:1::0;11481:18;;;11474:34;;;26749:66:0;;-1:-1:-1;26834:23:0;;::::1;::::0;::::1;::::0;11387:18:1;;26834:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26896;::::0;;-1:-1:-1;;;;;11432:32:1;;11414:51;;11496:2;11481:18;;11474:34;;;26826:54:0;;-1:-1:-1;26896:46:0::1;::::0;11387:18:1;26896:46:0::1;;;;;;;26514:436;26383:567:::0;;;;:::o;2097:104::-;2153:13;2186:7;2179:14;;;;;:::i;13204:104::-;13253:16;13289:11;13282:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13282:18:0;;;;;;;;;;;;;;;;;;;;;;13204:104;:::o;15880:353::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;16026:6:::1;::::0;-1:-1:-1;;;;;16026:6:0;;::::1;16018:14:::0;;::::1;::::0;15996:121:::1;;;::::0;-1:-1:-1;;;15996:121:0;;11971:2:1;15996:121:0::1;::::0;::::1;11953:21:1::0;12010:2;11990:18;;;11983:30;12049:34;12029:18;;;12022:62;12120:27;12100:18;;;12093:55;12165:19;;15996:121:0::1;11769:421:1::0;15996:121:0::1;16128:41;16157:4;16163:5;16128:28;:41::i;:::-;16185:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16185:40:0;::::1;::::0;::::1;::::0;;;::::1;15880:353:::0;;:::o;27652:84::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;27707:14:::1;:21:::0;;-1:-1:-1;;27707:21:0::1;27724:4;27707:21;::::0;;27652:84::o;4104:482::-;290:10;4224:4;4273:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4273:34:0;;;;;;;;;;4340:35;;;;4318:122;;;;-1:-1:-1;;;4318:122:0;;12397:2:1;4318:122:0;;;12379:21:1;12436:2;12416:18;;;12409:30;12475:34;12455:18;;;12448:62;-1:-1:-1;;;12526:18:1;;;12519:35;12571:19;;4318:122:0;12195:401:1;4318:122:0;4476:67;290:10;4499:7;4527:15;4508:16;:34;4476:8;:67::i;:::-;-1:-1:-1;4574:4:0;;4104:482;-1:-1:-1;;;4104:482:0:o;2611:216::-;2733:4;2755:42;290:10;2779:9;2790:6;2755:9;:42::i;27791:287::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;27884:21:::1;27876:58;;;::::0;-1:-1:-1;;;27876:58:0;;12803:2:1;27876:58:0::1;::::0;::::1;12785:21:1::0;12842:2;12822:18;;;12815:30;12881:26;12861:18;;;12854:54;12925:18;;27876:58:0::1;12601:348:1::0;27876:58:0::1;27954:14;::::0;;;::::1;;;27953:15;27945:52;;;::::0;-1:-1:-1;;;27945:52:0;;13156:2:1;27945:52:0::1;::::0;::::1;13138:21:1::0;13195:2;13175:18;;;13168:30;13234:26;13214:18;;;13207:54;13278:18;;27945:52:0::1;12954:348:1::0;27945:52:0::1;28010:14;:21:::0;;-1:-1:-1;;28010:21:0::1;::::0;::::1;::::0;;28047:23:::1;::::0;::::1;::::0;28010:21;;28047:23:::1;27791:287:::0;:::o;28470:731::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;28534:13:::1;::::0;::::1;::::0;::::1;;;28533:14;28525:70;;;::::0;-1:-1:-1;;;28525:70:0;;13509:2:1;28525:70:0::1;::::0;::::1;13491:21:1::0;13548:2;13528:18;;;13521:30;13587:34;13567:18;;;13560:62;-1:-1:-1;;;13638:18:1;;;13631:41;13689:19;;28525:70:0::1;13307:407:1::0;28525:70:0::1;28684:1;28660:21;:25;28638:110;;;::::0;-1:-1:-1;;;28638:110:0;;13921:2:1;28638:110:0::1;::::0;::::1;13903:21:1::0;13960:2;13940:18;;;13933:30;13999:34;13979:18;;;13972:62;-1:-1:-1;;;14050:18:1;;;14043:33;14093:19;;28638:110:0::1;13719:399:1::0;28638:110:0::1;28808:1;28781:24;28799:4;28781:9;:24::i;:::-;:28;28759:116;;;::::0;-1:-1:-1;;;28759:116:0;;14325:2:1;28759:116:0::1;::::0;::::1;14307:21:1::0;14364:2;14344:18;;;14337:30;14403:34;14383:18;;;14376:62;-1:-1:-1;;;14454:18:1;;;14447:36;14500:19;;28759:116:0::1;14123:402:1::0;28759:116:0::1;28920:9;::::0;28888:69:::1;::::0;28905:4:::1;::::0;-1:-1:-1;;;;;28920:9:0::1;28932:24;28905:4:::0;28932:9:::1;:24::i;28888:69::-;28970:9;::::0;-1:-1:-1;;;;;28970:9:0::1;:25;29003:21;29048:4;29068:24;29048:4:::0;29068:9:::1;:24::i;:::-;29107:1;29124::::0;29141:10:::1;29167:15;28970:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28470:731::o:0;17184:182::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17269:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17269:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17324:34;;1642:41:1;;;17324:34:0::1;::::0;1615:18:1;17324:34:0::1;;;;;;;17184:182:::0;;:::o;14492:311::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;14632:4:::1;14624;14603:13;2398:12:::0;;;2310:108;14603:13:::1;:17;::::0;14619:1:::1;14603:17;:::i;:::-;14602:26;;;;:::i;:::-;14601:35;;;;:::i;:::-;14591:6;:45;;14569:137;;;::::0;-1:-1:-1;;;14569:137:0;;15655:2:1;14569:137:0::1;::::0;::::1;15637:21:1::0;15694:2;15674:18;;;15667:30;15733:34;15713:18;;;15706:62;-1:-1:-1;;;15784:18:1;;;15777:40;15834:19;;14569:137:0::1;15453:406:1::0;14569:137:0::1;14729:17;:6:::0;14739::::1;14729:17;:::i;:::-;14717:9;:29:::0;;;14762:33:::1;::::0;2092:25:1;;;14762:33:0::1;::::0;2080:2:1;2065:18;14762:33:0::1;1946:177:1::0;14873:428:0;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;15013:6:::1;14992:13;2398:12:::0;;;2310:108;14992:13:::1;:17;::::0;15008:1:::1;14992:17;:::i;:::-;14991:28;;;;:::i;:::-;14978:9;:41;;14956:144;;;::::0;-1:-1:-1;;;14956:144:0;;16066:2:1;14956:144:0::1;::::0;::::1;16048:21:1::0;16105:2;16085:18;;;16078:30;16144:34;16124:18;;;16117:62;-1:-1:-1;;;16195:18:1;;;16188:51;16256:19;;14956:144:0::1;15864:417:1::0;14956:144:0::1;15168:4;15147:13;2398:12:::0;;;2310:108;15147:13:::1;:17;::::0;15163:1:::1;15147:17;:::i;:::-;15146:26;;;;:::i;:::-;15133:9;:39;;15111:141;;;::::0;-1:-1:-1;;;15111:141:0;;16488:2:1;15111:141:0::1;::::0;::::1;16470:21:1::0;16527:2;16507:18;;;16500:30;16566:34;16546:18;;;16539:62;-1:-1:-1;;;16617:18:1;;;16610:50;16677:19;;15111:141:0::1;16286:416:1::0;15111:141:0::1;15263:18;:30:::0;14873:428::o;14167:317::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;14306:4:::1;14297:5;14276:13;2398:12:::0;;;2310:108;14276:13:::1;:17;::::0;14292:1:::1;14276:17;:::i;:::-;14275:27;;;;:::i;:::-;14274:36;;;;:::i;:::-;14264:6;:46;;14242:139;;;::::0;-1:-1:-1;;;14242:139:0;;16909:2:1;14242:139:0::1;::::0;::::1;16891:21:1::0;16948:2;16928:18;;;16921:30;16987:34;16967:18;;;16960:62;-1:-1:-1;;;17038:18:1;;;17031:41;17089:19;;14242:139:0::1;16707:407:1::0;14242:139:0::1;14408:17;:6:::0;14418::::1;14408:17;:::i;:::-;14392:13;:33:::0;;;14441:35:::1;::::0;2092:25:1;;;14441:35:0::1;::::0;2080:2:1;2065:18;14441:35:0::1;1946:177:1::0;28086:376:0;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;28157:21:::1;::::0;28138:16:::1;:40:::0;;;28207:20:::1;::::0;28189:15:::1;:38:::0;;;28253:34:::1;::::0;::::1;:::i;:::-;28238:12;:49:::0;28320:21:::1;::::0;28300:17:::1;:41:::0;;;28371:20:::1;::::0;28352:16:::1;:39:::0;;;28418:36:::1;::::0;::::1;:::i;:::-;28402:13;:52:::0;28086:376::o;13741:98::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;13803:20:::1;:28:::0;;-1:-1:-1;;13803:28:0::1;::::0;;13741:98::o;9090:28::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9090:28:0;;-1:-1:-1;9090:28:0;:::o;24485:613::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;24577:6:::1;::::0;24570:39:::1;::::0;-1:-1:-1;;;24570:39:0;;24603:4:::1;24570:39;::::0;::::1;984:51:1::0;24550:17:0::1;::::0;-1:-1:-1;;;;;24577:6:0::1;::::0;24570:24:::1;::::0;957:18:1;;24570:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24550:59;;24642:1;24630:9;:13;24622:50;;;::::0;-1:-1:-1;;;24622:50:0;;17321:2:1;24622:50:0::1;::::0;::::1;17303:21:1::0;17360:2;17340:18;;;17333:30;17399:26;17379:18;;;17372:54;17443:18;;24622:50:0::1;17119:348:1::0;24622:50:0::1;24685:16;24728:5;24705:19;24717:7:::0;24705:9;:19:::1;:::i;:::-;24704:29;;;;:::i;:::-;24820:6;::::0;24844:9:::1;::::0;24813:52:::1;::::0;-1:-1:-1;;;24813:52:0;;-1:-1:-1;;;;;24844:9:0;;::::1;24813:52;::::0;::::1;11414:51:1::0;11481:18;;;11474:34;;;24685:48:0;;-1:-1:-1;24820:6:0::1;::::0;24813:22:::1;::::0;11387:18:1;;24813:52:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;24911:9:0::1;::::0;:179:::1;::::0;-1:-1:-1;;;24911:179:0;;-1:-1:-1;;;;;24911:9:0;;::::1;::::0;:28:::1;::::0;:179:::1;::::0;24962:4:::1;::::0;24982:8;;24911:9;;;;25039:10:::1;::::0;25064:15:::1;::::0;24911:179:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;24539:559;;24485:613:::0;:::o;6793:281::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6896:22:0;::::1;6874:110;;;::::0;-1:-1:-1;;;6874:110:0;;18536:2:1;6874:110:0::1;::::0;::::1;18518:21:1::0;18575:2;18555:18;;;18548:30;18614:34;18594:18;;;18587:62;-1:-1:-1;;;18665:18:1;;;18658:36;18711:19;;6874:110:0::1;18334:402:1::0;6874:110:0::1;7021:6;::::0;7000:38:::1;::::0;-1:-1:-1;;;;;7000:38:0;;::::1;::::0;7021:6:::1;::::0;7000:38:::1;::::0;7021:6:::1;::::0;7000:38:::1;7049:6;:17:::0;;-1:-1:-1;;;;;;7049:17:0::1;-1:-1:-1::0;;;;;7049:17:0;;;::::1;::::0;;;::::1;::::0;;6793:281::o;26958:185::-;6433:6;;-1:-1:-1;;;;;6433:6:0;290:10;6433:22;6425:67;;;;-1:-1:-1;;;6425:67:0;;;;;;;:::i;:::-;27053:82:::1;::::0;27016:12:::1;::::0;27061:10:::1;::::0;27085:21:::1;::::0;27016:12;27053:82;27016:12;27053:82;27085:21;27061:10;27053:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;26958:185:0:o;5575:380::-;-1:-1:-1;;;;;5711:19:0;;5703:68;;;;-1:-1:-1;;;5703:68:0;;19153:2:1;5703:68:0;;;19135:21:1;19192:2;19172:18;;;19165:30;19231:34;19211:18;;;19204:62;-1:-1:-1;;;19282:18:1;;;19275:34;19326:19;;5703:68:0;18951:400:1;5703:68:0;-1:-1:-1;;;;;5790:21:0;;5782:68;;;;-1:-1:-1;;;5782:68:0;;19558:2:1;5782:68:0;;;19540:21:1;19597:2;19577:18;;;19570:30;19636:34;19616:18;;;19609:62;-1:-1:-1;;;19687:18:1;;;19680:32;19729:19;;5782:68:0;19356:398:1;5782:68:0;-1:-1:-1;;;;;5863:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5915:32;;2092:25:1;;;5915:32:0;;2065:18:1;5915:32:0;;;;;;;5575:380;;;:::o;17374:5883::-;-1:-1:-1;;;;;17506:18:0;;17498:68;;;;-1:-1:-1;;;17498:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17585:16:0;;17577:64;;;;-1:-1:-1;;;17577:64:0;;;;;;;:::i;:::-;17669:1;17660:6;:10;17652:52;;;;-1:-1:-1;;;17652:52:0;;20771:2:1;17652:52:0;;;20753:21:1;20810:2;20790:18;;;20783:30;20849:31;20829:18;;;20822:59;20898:18;;17652:52:0;20569:353:1;17652:52:0;17722:13;;;;;;;17717:183;;-1:-1:-1;;;;;17778:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17807:23:0;;;;;;:19;:23;;;;;;;;17778:52;17752:136;;;;-1:-1:-1;;;17752:136:0;;21129:2:1;17752:136:0;;;21111:21:1;21168:2;21148:18;;;21141:30;-1:-1:-1;;;21187:18:1;;;21180:52;21249:18;;17752:136:0;20927:346:1;17752:136:0;23360:18;;23345:12;:33;17916:26;:43;;;;-1:-1:-1;17946:13:0;;;;;;;17916:43;17912:268;;;-1:-1:-1;;;;;18003:17:0;;;;;;:11;:17;;;;;;;;18002:18;;:35;;-1:-1:-1;6371:6:0;;-1:-1:-1;;;;;18024:13:0;;;6371:6;;18024:13;18002:35;:60;;;-1:-1:-1;;;;;;18041:21:0;;18055:6;18041:21;18002:60;17976:192;;;;-1:-1:-1;;;17976:192:0;;21480:2:1;17976:192:0;;;21462:21:1;21519:2;21499:18;;;21492:30;21558:34;21538:18;;;21531:62;21629:34;21609:18;;;21602:62;-1:-1:-1;;;21680:19:1;;;21673:37;21727:19;;17976:192:0;21278:474:1;17976:192:0;18196:14;;;;18192:2214;;;6371:6;;-1:-1:-1;;;;;18249:15:0;;;6371:6;;18249:15;;;;:49;;-1:-1:-1;6371:6:0;;-1:-1:-1;;;;;18285:13:0;;;6371:6;;18285:13;;18249:49;:91;;;;-1:-1:-1;;;;;;18319:21:0;;18333:6;18319:21;;18249:91;:138;;;;-1:-1:-1;;;;;;18362:25:0;;;;;;:19;:25;;;;;;;;18361:26;18249:138;:183;;;;-1:-1:-1;;;;;;18409:23:0;;;;;;:19;:23;;;;;;;;18408:24;18249:183;18227:2168;;;18471:20;;;;18467:692;;;18534:9;;-1:-1:-1;;;;;18520:24:0;;;18534:9;;18520:24;;;;:49;;-1:-1:-1;18562:6:0;;-1:-1:-1;;;;;18548:21:0;;;18562:6;;18548:21;;18520:49;18516:624;;;18711:16;18726:1;18711:12;:16;:::i;:::-;18665:9;18636:39;;;;:28;:39;;;;;;:91;:212;;;;-1:-1:-1;18832:16:0;18847:1;18832:12;:16;:::i;:::-;-1:-1:-1;;;;;18764:32:0;;;;;;:28;:32;;;;;;:84;18636:212;18598:363;;;;-1:-1:-1;;;18598:363:0;;22092:2:1;18598:363:0;;;22074:21:1;22131:2;22111:18;;;22104:30;22170:34;22150:18;;;22143:62;-1:-1:-1;;;22221:18:1;;;22214:51;22282:19;;18598:363:0;21890:417:1;18598:363:0;19017:9;18988:39;;;;:28;:39;;;;;;19030:12;18988:54;;;;-1:-1:-1;;;;;19069:32:0;;;;;;:47;18516:624;-1:-1:-1;;;;;19233:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;19290:35:0;;;;;;:31;:35;;;;;;;;19289:36;19233:92;19207:1173;;;19412:12;;19402:6;:22;;19368:148;;;;-1:-1:-1;;;19368:148:0;;22514:2:1;19368:148:0;;;22496:21:1;22553:2;22533:18;;;22526:30;22592:34;22572:18;;;22565:62;-1:-1:-1;;;22643:18:1;;;22636:38;22691:19;;19368:148:0;22312:404:1;19368:148:0;19599:9;;19582:13;19592:2;19582:9;:13::i;:::-;19573:22;;:6;:22;:::i;:::-;:35;;19539:140;;;;-1:-1:-1;;;19539:140:0;;22923:2:1;19539:140:0;;;22905:21:1;22962:2;22942:18;;;22935:30;-1:-1:-1;;;22981:18:1;;;22974:49;23040:18;;19539:140:0;22721:343:1;19539:140:0;19207:1173;;;-1:-1:-1;;;;;19777:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;19832:37:0;;;;;;:31;:37;;;;;;;;19831:38;19777:92;19751:629;;;19920:14;;;;;;;19912:43;;;;-1:-1:-1;;;19912:43:0;;23271:2:1;19912:43:0;;;23253:21:1;23310:2;23290:18;;;23283:30;-1:-1:-1;;;23329:18:1;;;23322:46;23385:18;;19912:43:0;23069:340:1;19912:43:0;20022:13;;20012:6;:23;;19978:151;;;;-1:-1:-1;;;19978:151:0;;23616:2:1;19978:151:0;;;23598:21:1;23655:2;23635:18;;;23628:30;23694:34;23674:18;;;23667:62;-1:-1:-1;;;23745:18:1;;;23738:40;23795:19;;19978:151:0;23414:406:1;19751:629:0;-1:-1:-1;;;;;20160:35:0;;;;;;:31;:35;;;;;;;;20155:225;;20280:9;;20263:13;20273:2;20263:9;:13::i;:::-;20254:22;;:6;:22;:::i;:::-;:35;;20220:140;;;;-1:-1:-1;;;20220:140:0;;22923:2:1;20220:140:0;;;22905:21:1;22962:2;22942:18;;;22935:30;-1:-1:-1;;;22981:18:1;;;22974:49;23040:18;;20220:140:0;22721:343:1;20220:140:0;20418:28;20449:24;20467:4;20449:9;:24::i;:::-;20525:18;;20418:55;;-1:-1:-1;20501:42:0;;;;;;;20574:22;;-1:-1:-1;20585:11:0;;;;;;;20574:22;:35;;;;-1:-1:-1;20601:8:0;;-1:-1:-1;;;20601:8:0;;;;20600:9;20574:35;:68;;;;-1:-1:-1;;;;;;20613:29:0;;;;;;:25;:29;;;;;;;;20574:68;20556:196;;;20669:8;:15;;-1:-1:-1;;;;20669:15:0;-1:-1:-1;;;20669:15:0;;;20699:10;:8;:10::i;:::-;20724:8;:16;;-1:-1:-1;;;;20724:16:0;;;20556:196;-1:-1:-1;;;;;20883:25:0;;20764:12;20883:25;;;:19;:25;;;;;;20779:4;;20883:25;;;:52;;-1:-1:-1;;;;;;20912:23:0;;;;;;:19;:23;;;;;;;;20883:52;20879:100;;;-1:-1:-1;20962:5:0;20879:100;20991:12;21096:7;21092:2112;;;23360:18;;23345:12;:33;21179:152;;;;21255:8;21240:12;;:23;;;;:::i;:::-;21230:6;:33;;:100;;;;;21318:12;21292:18;;21313:1;21292:22;;;;:::i;:::-;:38;;21230:100;21178:206;;;;-1:-1:-1;;;;;;21353:31:0;;;;;;:25;:31;;;;;;;;21178:206;:257;;;;-1:-1:-1;;;;;;21406:29:0;;;;;;:25;:29;;;;;;;;21405:30;21178:257;:302;;;;-1:-1:-1;;;;;;21457:23:0;;;;;;:19;:23;;;;;;;;21456:24;21178:302;:339;;;;;21516:1;21501:12;;:16;21178:339;21156:1899;;;23360:18;;23345:12;:33;21552:332;;21863:1;21847:12;;:17;;;;;;;:::i;:::-;;;;-1:-1:-1;;21552:332:0;-1:-1:-1;;;;;21909:15:0;;;;;;:11;:15;;;;;;;;21904:216;;-1:-1:-1;;;;;21949:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;21949:22:0;21967:4;21949:22;;;;;;21994:10;:15;;21967:4;;21994:10;;:15;;21967:4;;21994:15;:::i;:::-;;;;-1:-1:-1;;22032:11:0;:20;;;;;;;-1:-1:-1;22032:20:0;;;;;;;;-1:-1:-1;;;;;;22032:20:0;-1:-1:-1;;;;;22032:20:0;;;;;;;;22080;;984:51:1;;;22080:20:0;;972:2:1;957:18;22080:20:0;;;;;;;21904:216;22163:3;22148:11;:6;22157:2;22148:11;:::i;:::-;22147:19;;;;:::i;:::-;22140:26;;22234:12;;22215:15;;22208:4;:22;;;;:::i;:::-;22207:39;;;;:::i;:::-;22185:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22316:12:0;;22296:16;;22289:23;;:4;:23;:::i;:::-;22288:40;;;;:::i;:::-;22265:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;21156:1899:0;;-1:-1:-1;21156:1899:0;;-1:-1:-1;;;;;22391:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;22440:1;22424:13;;:17;22391:50;22387:668;;;22496:3;22479:13;;22470:6;:22;;;;:::i;:::-;22469:30;;;;:::i;:::-;22462:37;;22568:13;;22548:16;;22541:4;:23;;;;:::i;:::-;22540:41;;;;:::i;:::-;22518:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22694:13:0;;22652:17;;22645:24;;:4;:24;:::i;22387:668::-;-1:-1:-1;;;;;22769:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22819:1;22804:12;;:16;22769:51;22765:290;;;22874:3;22858:12;;22849:6;:21;;;;:::i;:::-;22848:29;;;;:::i;:::-;22841:36;;22945:12;;22926:15;;22919:4;:22;;;;:::i;:::-;22918:39;;;;:::i;:::-;22896:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23027:12:0;;23007:16;;23000:23;;:4;:23;:::i;:::-;22999:40;;;;:::i;:::-;22976:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22765:290:0;23075:8;;23071:91;;23104:42;23120:4;23134;23141;23104:15;:42::i;:::-;23178:14;23188:4;23178:14;;:::i;:::-;;;21092:2112;23216:33;23232:4;23238:2;23242:6;23216:15;:33::i;:::-;17487:5770;;;;17374:5883;;;:::o;16241:236::-;-1:-1:-1;;;;;16324:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16324:39:0;;;;;;;16374;16324:31;:39;16374:26;:39::i;25106:1269::-;25145:23;25171:24;25189:4;25171:9;:24::i;:::-;25145:50;;25206:25;25255:19;;25234:18;;:40;;;;:::i;:::-;25206:68;-1:-1:-1;25291:20:0;;;:46;;-1:-1:-1;25315:22:0;;25291:46;25287:85;;;25354:7;;25106:1269::o;25287:85::-;25406:18;;:23;;25427:2;25406:23;:::i;:::-;25388:15;:41;25384:115;;;25464:18;;:23;;25485:2;25464:23;:::i;:::-;25446:41;;25384:115;25511:12;25585:23;25698:1;25665:17;25630:18;;25612:15;:36;;;;:::i;:::-;25611:71;;;;:::i;:::-;:88;;;;:::i;:::-;25585:114;-1:-1:-1;25712:51:0;25729:33;25585:114;25729:15;:33;:::i;:::-;25712:16;:51::i;:::-;25977:18;;25797:21;;;;25776:18;;25977:22;;25998:1;;25977:22;:::i;:::-;25956:44;;:17;:44;:::i;:::-;25919:19;;25906:32;;:10;:32;:::i;:::-;25905:96;;;;:::i;:::-;25878:123;-1:-1:-1;26014:35:0;25878:123;26014:35;;:::i;:::-;26083:1;26062:18;:22;;;26095:19;:23;26014:35;-1:-1:-1;26135:19:0;;;;;:42;;;26176:1;26158:15;:19;26135:42;26131:121;;;26194:46;26207:15;26224;26194:12;:46::i;:::-;26286:17;;26278:89;;-1:-1:-1;;;;;26286:17:0;;;;26331:21;;26278:89;;;;26331:21;26286:17;26278:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;25106:1269:0:o;4594:651::-;-1:-1:-1;;;;;4734:20:0;;4726:70;;;;-1:-1:-1;;;4726:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4815:23:0;;4807:71;;;;-1:-1:-1;;;4807:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4915:17:0;;4891:21;4915:17;;;;;;;;;;;4965:23;;;;4943:111;;;;-1:-1:-1;;;4943:111:0;;24027:2:1;4943:111:0;;;24009:21:1;24066:2;24046:18;;;24039:30;24105:34;24085:18;;;24078:62;-1:-1:-1;;;24156:18:1;;;24149:36;24202:19;;4943:111:0;23825:402:1;4943:111:0;-1:-1:-1;;;;;5090:17:0;;;:9;:17;;;;;;;;;;;5110:22;;;5090:42;;5154:20;;;;;;;;:30;;5126:6;;5090:9;5154:30;;5126:6;;5154:30;:::i;:::-;;;;;;;;5219:9;-1:-1:-1;;;;;5202:35:0;5211:6;-1:-1:-1;;;;;5202:35:0;;5230:6;5202:35;;;;2092:25:1;;2080:2;2065:18;;1946:177;5202:35:0;;;;;;;;4715:530;4594:651;;;:::o;15309:221::-;-1:-1:-1;;;;;15411:39:0;;;;;;:31;:39;;;;;;;;:52;;-1:-1:-1;;15411:52:0;;;;;;;;;;15479:43;;24400:51:1;;;24467:18;;;24460:50;15479:43:0;;24373:18:1;15479:43:0;;;;;;;15309:221;;:::o;23394:571::-;23544:16;;;23558:1;23544:16;;;;;;;;23520:21;;23544:16;;;;;;;;;;-1:-1:-1;23544:16:0;23520:40;;23589:4;23571;23576:1;23571:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23571:23:0;;;:7;;;;;;;;;;:23;;;;23615:9;;:16;;;-1:-1:-1;;;23615:16:0;;;;:9;;;;;:14;;:16;;;;;23571:7;;23615:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23605:4;23610:1;23605:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23605:26:0;;;:7;;;;;;;;;:26;23676:9;;23644:56;;23661:4;;23676:9;23688:11;23644:8;:56::i;:::-;23739:9;;:218;;-1:-1:-1;;;23739:218:0;;-1:-1:-1;;;;;23739:9:0;;;;:60;;:218;;23814:11;;23739:9;;23884:4;;23911;;23931:15;;23739:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23449:516;23394:571;:::o;23973:504::-;24153:9;;24121:56;;24138:4;;-1:-1:-1;;;;;24153:9:0;24165:11;24121:8;:56::i;:::-;24220:9;;:249;;-1:-1:-1;;;24220:249:0;;-1:-1:-1;;;;;24220:9:0;;;;:25;;24253:9;;24220:249;;24286:4;;24306:11;;24220:9;;;;24418:10;;24443:15;;24220:249;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:1;;1111:42;;1101:70;;1167:1;1164;1157:12;1101:70;1046:131;:::o;1182:315::-;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:1:o;1694:247::-;1753:6;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:31;1905:5;1880:31;:::i;:::-;1930:5;1694:247;-1:-1:-1;;;1694:247:1:o;2128:456::-;2205:6;2213;2221;2274:2;2262:9;2253:7;2249:23;2245:32;2242:52;;;2290:1;2287;2280:12;2242:52;2329:9;2316:23;2348:31;2373:5;2348:31;:::i;:::-;2398:5;-1:-1:-1;2455:2:1;2440:18;;2427:32;2468:33;2427:32;2468:33;:::i;:::-;2128:456;;2520:7;;-1:-1:-1;;;2574:2:1;2559:18;;;;2546:32;;2128:456::o;2589:180::-;2648:6;2701:2;2689:9;2680:7;2676:23;2672:32;2669:52;;;2717:1;2714;2707:12;2669:52;-1:-1:-1;2740:23:1;;2589:180;-1:-1:-1;2589:180:1:o;3171:118::-;3257:5;3250:13;3243:21;3236:5;3233:32;3223:60;;3279:1;3276;3269:12;3294:382;3359:6;3367;3420:2;3408:9;3399:7;3395:23;3391:32;3388:52;;;3436:1;3433;3426:12;3388:52;3475:9;3462:23;3494:31;3519:5;3494:31;:::i;:::-;3544:5;-1:-1:-1;3601:2:1;3586:18;;3573:32;3614:30;3573:32;3614:30;:::i;:::-;3663:7;3653:17;;;3294:382;;;;;:::o;3681:241::-;3737:6;3790:2;3778:9;3769:7;3765:23;3761:32;3758:52;;;3806:1;3803;3796:12;3758:52;3845:9;3832:23;3864:28;3886:5;3864:28;:::i;3927:388::-;3995:6;4003;4056:2;4044:9;4035:7;4031:23;4027:32;4024:52;;;4072:1;4069;4062:12;4024:52;4111:9;4098:23;4130:31;4155:5;4130:31;:::i;:::-;4180:5;-1:-1:-1;4237:2:1;4222:18;;4209:32;4250:33;4209:32;4250:33;:::i;4320:461::-;4373:3;4411:5;4405:12;4438:6;4433:3;4426:19;4464:4;4493:2;4488:3;4484:12;4477:19;;4530:2;4523:5;4519:14;4551:1;4561:195;4575:6;4572:1;4569:13;4561:195;;;4640:13;;-1:-1:-1;;;;;4636:39:1;4624:52;;4696:12;;;;4731:15;;;;4672:1;4590:9;4561:195;;;-1:-1:-1;4772:3:1;;4320:461;-1:-1:-1;;;;;4320:461:1:o;4786:261::-;4965:2;4954:9;4947:21;4928:4;4985:56;5037:2;5026:9;5022:18;5014:6;4985:56;:::i;5052:356::-;5254:2;5236:21;;;5273:18;;;5266:30;5332:34;5327:2;5312:18;;5305:62;5399:2;5384:18;;5052:356::o;5413:127::-;5474:10;5469:3;5465:20;5462:1;5455:31;5505:4;5502:1;5495:15;5529:4;5526:1;5519:15;5545:125;5610:9;;;5631:10;;;5628:36;;;5644:18;;:::i;6033:380::-;6112:1;6108:12;;;;6155;;;6176:61;;6230:4;6222:6;6218:17;6208:27;;6176:61;6283:2;6275:6;6272:14;6252:18;6249:38;6246:161;;6329:10;6324:3;6320:20;6317:1;6310:31;6364:4;6361:1;6354:15;6392:4;6389:1;6382:15;6246:161;;6033:380;;;:::o;7182:168::-;7255:9;;;7286;;7303:15;;;7297:22;;7283:37;7273:71;;7324:18;;:::i;7355:217::-;7395:1;7421;7411:132;;7465:10;7460:3;7456:20;7453:1;7446:31;7500:4;7497:1;7490:15;7528:4;7525:1;7518:15;7411:132;-1:-1:-1;7557:9:1;;7355:217::o;11051:184::-;11121:6;11174:2;11162:9;11153:7;11149:23;11145:32;11142:52;;;11190:1;11187;11180:12;11142:52;-1:-1:-1;11213:16:1;;11051:184;-1:-1:-1;11051:184:1:o;11519:245::-;11586:6;11639:2;11627:9;11618:7;11614:23;11610:32;11607:52;;;11655:1;11652;11645:12;11607:52;11687:9;11681:16;11706:28;11728:5;11706:28;:::i;14530:607::-;-1:-1:-1;;;;;14889:15:1;;;14871:34;;14936:2;14921:18;;14914:34;;;;14979:2;14964:18;;14957:34;;;;15022:2;15007:18;;15000:34;;;;15071:15;;;15065:3;15050:19;;15043:44;14851:3;15103:19;;15096:35;;;;14820:3;14805:19;;14530:607::o;15142:306::-;15230:6;15238;15246;15299:2;15287:9;15278:7;15274:23;15270:32;15267:52;;;15315:1;15312;15305:12;15267:52;15344:9;15338:16;15328:26;;15394:2;15383:9;15379:18;15373:25;15363:35;;15438:2;15427:9;15423:18;15417:25;15407:35;;15142:306;;;;;:::o;18084:245::-;18163:6;18171;18224:2;18212:9;18203:7;18199:23;18195:32;18192:52;;;18240:1;18237;18230:12;18192:52;-1:-1:-1;;18263:16:1;;18319:2;18304:18;;;18298:25;18263:16;;18298:25;;-1:-1:-1;18084:245:1:o;19759:401::-;19961:2;19943:21;;;20000:2;19980:18;;;19973:30;20039:34;20034:2;20019:18;;20012:62;-1:-1:-1;;;20105:2:1;20090:18;;20083:35;20150:3;20135:19;;19759:401::o;20165:399::-;20367:2;20349:21;;;20406:2;20386:18;;;20379:30;20445:34;20440:2;20425:18;;20418:62;-1:-1:-1;;;20511:2:1;20496:18;;20489:33;20554:3;20539:19;;20165:399::o;21757:128::-;21824:9;;;21845:11;;;21842:37;;;21859:18;;:::i;24653:127::-;24714:10;24709:3;24705:20;24702:1;24695:31;24745:4;24742:1;24735:15;24769:4;24766:1;24759:15;24785:251;24855:6;24908:2;24896:9;24887:7;24883:23;24879:32;24876:52;;;24924:1;24921;24914:12;24876:52;24956:9;24950:16;24975:31;25000:5;24975:31;:::i;25041:582::-;25340:6;25329:9;25322:25;25383:6;25378:2;25367:9;25363:18;25356:34;25426:3;25421:2;25410:9;25406:18;25399:31;25303:4;25447:57;25499:3;25488:9;25484:19;25476:6;25447:57;:::i;:::-;-1:-1:-1;;;;;25540:32:1;;;;25535:2;25520:18;;25513:60;-1:-1:-1;25604:3:1;25589:19;25582:35;25439:65;25041:582;-1:-1:-1;;;25041:582:1:o
Swarm Source
ipfs://7395437e7afdf4c96d61ca95a880d0b7e70a363f18cc40b81757ed6b202a15d5
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.