More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 75 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17160115 | 617 days ago | IN | 0 ETH | 0.00144066 | ||||
Approve | 16233570 | 748 days ago | IN | 0 ETH | 0.00069429 | ||||
Approve | 16225271 | 749 days ago | IN | 0 ETH | 0.00057069 | ||||
Approve | 16155348 | 759 days ago | IN | 0 ETH | 0.00087805 | ||||
Approve | 16149760 | 759 days ago | IN | 0 ETH | 0.00164124 | ||||
Approve | 16145461 | 760 days ago | IN | 0 ETH | 0.0017727 | ||||
Approve | 16145126 | 760 days ago | IN | 0 ETH | 0.00064765 | ||||
Approve | 16142467 | 760 days ago | IN | 0 ETH | 0.00077264 | ||||
Approve | 16142210 | 760 days ago | IN | 0 ETH | 0.00057885 | ||||
Approve | 16142188 | 760 days ago | IN | 0 ETH | 0.00087075 | ||||
Approve | 16142098 | 760 days ago | IN | 0 ETH | 0.00097553 | ||||
Approve | 16142071 | 760 days ago | IN | 0 ETH | 0.00100334 | ||||
Approve | 16138261 | 761 days ago | IN | 0 ETH | 0.00074034 | ||||
Approve | 16138254 | 761 days ago | IN | 0 ETH | 0.00062739 | ||||
Approve | 16138152 | 761 days ago | IN | 0 ETH | 0.00072529 | ||||
Approve | 16137842 | 761 days ago | IN | 0 ETH | 0.00067038 | ||||
Approve | 16137145 | 761 days ago | IN | 0 ETH | 0.00072874 | ||||
Approve | 16137091 | 761 days ago | IN | 0 ETH | 0.000765 | ||||
Approve | 16137034 | 761 days ago | IN | 0 ETH | 0.0006443 | ||||
Approve | 16136604 | 761 days ago | IN | 0 ETH | 0.00067996 | ||||
Approve | 16135848 | 761 days ago | IN | 0 ETH | 0.00069043 | ||||
Approve | 16135397 | 761 days ago | IN | 0 ETH | 0.00086775 | ||||
Approve | 16135244 | 761 days ago | IN | 0 ETH | 0.00037414 | ||||
Approve | 16135122 | 761 days ago | IN | 0 ETH | 0.00087781 | ||||
Approve | 16135091 | 761 days ago | IN | 0 ETH | 0.00079413 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16134470 | 761 days ago | 2.25 ETH |
Loading...
Loading
Contract Name:
SnowShiba
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-07 */ // SPDX-License-Identifier: MIT /* SNOW SHIBA Telegram: https://t.me/SnowShiba_SSHIBA Twitter: https://twitter.com/snowshiba_ */ 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 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ 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 _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } 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() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 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 SnowShiba is ERC20, Ownable { uint256 public maxTxnAmount; uint256 public maxWallet; IDexRouter public dexRouter; address public lpPair; bool private swapping; uint256 public swapTokensAtAmount; address operationsAddress; uint256 public tradingActiveBlock = 0; // 0 means trading is not active uint256 public blockForPenaltyEnd; mapping(address => bool) public boughtEarly; uint256 public botsCaught; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = 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 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellOperationsFee; uint256 public sellLiquidityFee; uint256 public sellBurnFee; uint256 public constant FEE_DIVISOR = 10000; // MEV Bot prevention - cannot be turned off once enabled!! bool public sellingEnabled = false; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event RemovedLimits(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxTxnAmount(uint256 newAmount); event UpdatedMaxWallet(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); event EnabledSellingForever(); constructor() payable ERC20("Snow Shiba", "SSHIBA") { address newOwner = msg.sender; // can leave alone if owner is deployer. address _dexRouter; if (block.chainid == 1) { _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2 } else if (block.chainid == 5) { _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Goerli } 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 = 100 * 1e6 * 1e18; maxTxnAmount = (totalSupply * 15) / 1000; // 1.5% maxWallet = (totalSupply * 15) / 1000; // 1.5% swapTokensAtAmount = (totalSupply * 1) / 10000; // 0.01% buyOperationsFee = 1500; buyLiquidityFee = 0; buyBurnFee = 0; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyBurnFee; sellOperationsFee = 1500; sellLiquidityFee = 0; sellBurnFee = 0; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellBurnFee; _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); _excludeFromMaxTransaction(address(dexRouter), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(dexRouter), true); operationsAddress = address(msg.sender); _createInitialSupply(newOwner, (totalSupply * 50) / 100); // Staking _createInitialSupply(address(this), (totalSupply * 50) / 100); // LP transferOwnership(newOwner); } receive() external payable {} // only enable if no plan to airdrop function enableTrading(uint256 deadBlocks) external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; blockForPenaltyEnd = tradingActiveBlock + deadBlocks; emit EnabledTrading(); } // remove limits after token is stable function removeLimits() external onlyOwner { limitsInEffect = false; transferDelayEnabled = false; emit RemovedLimits(); } function restoreLimits() external onlyOwner { limitsInEffect = true; } function manageBoughtEarly(address wallet, bool flag) external onlyOwner { boughtEarly[wallet] = flag; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 2) / 1000) / (10**decimals()), "Cannot set max buy amount lower than 0.2%" ); maxTxnAmount = newNum * (10**decimals()); emit UpdatedMaxTxnAmount(maxTxnAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 100) / (10**decimals()), "Cannot set max buy amount lower than 0.2%" ); maxWallet = newNum * (10**decimals()); emit UpdatedMaxWallet(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 setBuyFees( uint256 _operationsFee, uint256 _liquidityFee, uint256 _burnFee ) external onlyOwner { buyOperationsFee = _operationsFee; buyLiquidityFee = _liquidityFee; buyBurnFee = _burnFee; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyBurnFee; require(buyTotalFees <= 800, "Must keep fees at 8% or less"); } function setSellFees( uint256 _operationsFee, uint256 _liquidityFee, uint256 _burnFee ) external onlyOwner { sellOperationsFee = _operationsFee; sellLiquidityFee = _liquidityFee; sellBurnFee = _burnFee; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellBurnFee; require(sellTotalFees <= 800, "Must keep fees at 8% 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 (blockForPenaltyEnd > 0) { 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(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. 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 <= maxTxnAmount, "Buy transfer amount exceeds the max txn." ); require( balanceOf(to) + amount <= maxWallet, "Max Wallet Exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require(sellingEnabled, "Selling disabled"); require( amount <= maxTxnAmount, "Sell transfer amount exceeds the max txn." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( balanceOf(to) + amount <= maxWallet, "Max Wallet Exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; if (contractTokenBalance > swapTokensAtAmount * 20) { contractTokenBalance = swapTokensAtAmount * 20; } swapTokensForEthAndSend(contractTokenBalance); 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; uint256 burnTokens = 0; uint256 liquidityTokens = 0; address currentLiquidityAddress; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // bot/sniper penalty. if ( earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0 ) { if (!boughtEarly[to]) { boughtEarly[to] = true; botsCaught += 1; emit CaughtEarlyBuyer(to); } currentLiquidityAddress = from; fees = (amount * 99) / 100; liquidityTokens = (fees * buyLiquidityFee) / buyTotalFees; burnTokens = (fees * buyBurnFee) / buyTotalFees; } // on sell else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { currentLiquidityAddress = to; fees = (amount * sellTotalFees) / FEE_DIVISOR; liquidityTokens = (fees * sellLiquidityFee) / sellTotalFees; burnTokens = (fees * sellBurnFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { currentLiquidityAddress = from; fees = (amount * buyTotalFees) / FEE_DIVISOR; liquidityTokens = (fees * buyLiquidityFee) / buyTotalFees; burnTokens = (fees * buyBurnFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); if (burnTokens > 0) { _burn(address(this), burnTokens); } if (liquidityTokens > 0) { super._transfer( address(this), currentLiquidityAddress, liquidityTokens ); } } amount -= fees; } super._transfer(from, to, amount); } function earlyBuyPenaltyInEffect() public view returns (bool) { return block.number < blockForPenaltyEnd; } function swapTokensForEthAndSend(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(operationsAddress), block.timestamp ); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require(_token != address(this), "Can't withdraw native tokens"); 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); } function resetTaxes() external onlyOwner { buyOperationsFee = 300; buyLiquidityFee = 0; buyBurnFee = 0; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyBurnFee; sellOperationsFee = 300; sellLiquidityFee = 0; sellBurnFee = 0; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellBurnFee; } function addLP(bool confirmAddLp) external onlyOwner { require(confirmAddLp, "Please confirm adding of the LP"); 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, // slippage is unavoidable 0, // slippage is unavoidable msg.sender, block.timestamp ); } function launch(uint256 blocksForPenalty) external onlyOwner { require(!tradingActive, "Trading is already active, cannot relaunch."); require( blocksForPenalty < 10, "Cannot make penalty blocks more than 10" ); //standard enable trading tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; blockForPenaltyEnd = tradingActiveBlock + blocksForPenalty; emit EnabledTrading(); // 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, // slippage is unavoidable 0, // slippage is unavoidable msg.sender, block.timestamp ); } // 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(); } }
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":[],"name":"RemovedLimits","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":"UpdatedMaxTxnAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmAddLp","type":"bool"}],"name":"addLP","outputs":[],"stateMutability":"nonpayable","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":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"deadBlocks","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocksForPenalty","type":"uint256"}],"name":"launch","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"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setSellFees","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":"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":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"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
6000600c556010805462ffffff191660019081179091556012805460ff199081169092179055601b80549091169055600a608090815269536e6f7720536869626160b01b60a052610100604052600660c09081526553534849424160d01b60e05260036200006e8382620008de565b5060046200007d8282620008de565b505050600062000092620004da60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003f41833981519152908290a35033600046600103620000f75750737a250d5630b4cf539739df2c5dacb4c659f2488d62000169565b466005036200011c5750737a250d5630b4cf539739df2c5dacb4c659f2488d62000169565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e99190620009aa565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002729190620009aa565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e69190620009aa565b600980546001600160a01b0319166001600160a01b0392909216918217905562000312906001620004de565b6009546200032b906001600160a01b0316600162000541565b6a52b7d2dcc80cd2e40000006103e86200034782600f620009f2565b62000353919062000a12565b6006556103e86200036682600f620009f2565b62000372919062000a12565b60075561271062000385826001620009f2565b62000391919062000a12565b600a556105dc601481905560006015819055601681905590620003b690829062000a35565b620003c2919062000a35565b6013556105dc601881905560006019819055601a81905590620003e790829062000a35565b620003f3919062000a35565b60175562000403836001620004de565b62000410306001620004de565b6200041f61dead6001620004de565b60085462000438906001600160a01b03166001620004de565b62000445836001620005ad565b62000452306001620005ad565b6200046161dead6001620005ad565b6008546200047a906001600160a01b03166001620005ad565b600b80546001600160a01b03191633179055620004b2836064620004a0846032620009f2565b620004ac919062000a12565b62000657565b620004c6306064620004a0846032620009f2565b620004d1836200073c565b50505062000a4b565b3390565b6001600160a01b0382166000818152601d6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601e60205260409020805460ff1916821515179055620005718282620004de565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005f85760405162461bcd60e51b8152602060048201819052602482015260008051602062003f21833981519152604482015260640162000160565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006af5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000160565b8060026000828254620006c3919062000a35565b90915550506001600160a01b03821660009081526020819052604081208054839290620006f290849062000a35565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620007875760405162461bcd60e51b8152602060048201819052602482015260008051602062003f21833981519152604482015260640162000160565b6001600160a01b038116620007ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000160565b6005546040516001600160a01b0380841692169060008051602062003f4183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200086457607f821691505b6020821081036200088557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008d957600081815260208120601f850160051c81016020861015620008b45750805b601f850160051c820191505b81811015620008d557828155600101620008c0565b5050505b505050565b81516001600160401b03811115620008fa57620008fa62000839565b62000912816200090b84546200084f565b846200088b565b602080601f8311600181146200094a5760008415620009315750858301515b600019600386901b1c1916600185901b178555620008d5565b600085815260208120601f198616915b828110156200097b578886015182559484019460019091019084016200095a565b50858210156200099a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009bd57600080fd5b81516001600160a01b0381168114620009d557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000a0c5762000a0c620009dc565b92915050565b60008262000a3057634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000a0c5762000a0c620009dc565b6134c68062000a5b6000396000f3fe60806040526004361061039b5760003560e01c80639a7a23d6116101dc578063d257b34f11610102578063e884f260116100a0578063f5648a4f1161006f578063f5648a4f14610a51578063f637434214610a66578063f771cb6514610a7c578063f8b45b0514610a9657600080fd5b8063e884f260146109f0578063ee40166e14610a05578063f11a24d314610a1b578063f2fde38b14610a3157600080fd5b8063e2f45605116100dc578063e2f456051461098f578063e71dc3f5146109a5578063e7b71ce2146109bb578063e800dff7146109d057600080fd5b8063d257b34f14610913578063d85ba06314610933578063dd62ed3e1461094957600080fd5b8063b16d78cf1161017a578063c024666811610149578063c0246668146108a3578063c18bc195146108c3578063c876d0b9146108e3578063cf46f24c146108fd57600080fd5b8063b16d78cf14610814578063b62496f514610834578063b987553914610864578063bbc0c7421461088457600080fd5b8063a457c2d7116101b6578063a457c2d7146107a8578063a62068ce146107c8578063a9059cbb146107de578063adb873bd146107fe57600080fd5b80639a7a23d61461075d5780639e93ad8e1461077d578063a28e86d31461079357600080fd5b806358a6d531116102c1578063751039fc1161025f57806385b12c7c1161022e57806385b12c7c146106da57806385ecfd28146106fa5780638da5cb5b1461072a57806395d89b411461074857600080fd5b8063751039fc146106655780637571336a1461067a57806382aa7c681461069a5780638366e79a146106ba57600080fd5b80636b0a894c1161029b5780636b0a894c146105fa5780636ddd17131461061057806370a0823114610630578063715018a61461065057600080fd5b806358a6d531146105b75780635a139dd4146105ce5780636a486a8e146105e457600080fd5b8063203e727e11610339578063452ed4f111610308578063452ed4f114610547578063499b8394146105675780634a62bb65146105875780634f77f6c0146105a157600080fd5b8063203e727e146104cb57806323b872dd146104eb578063313ce5671461050b578063395093511461052757600080fd5b80630d075d9c116103755780630d075d9c1461043a5780630f683e901461045c57806310d5de531461047c57806318160ddd146104ac57600080fd5b806306fdde03146103a75780630758d924146103d2578063095ea7b31461040a57600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610aac565b6040516103c99190612e84565b60405180910390f35b3480156103de57600080fd5b506008546103f2906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b34801561041657600080fd5b5061042a610425366004612eea565b610b3e565b60405190151581526020016103c9565b34801561044657600080fd5b5061045a610455366004612f16565b610b55565b005b34801561046857600080fd5b5061045a610477366004612f16565b610c07565b34801561048857600080fd5b5061042a610497366004612f42565b601d6020526000908152604090205460ff1681565b3480156104b857600080fd5b506002545b6040519081526020016103c9565b3480156104d757600080fd5b5061045a6104e6366004612f66565b610cab565b3480156104f757600080fd5b5061042a610506366004612f7f565b610d7d565b34801561051757600080fd5b50604051601281526020016103c9565b34801561053357600080fd5b5061042a610542366004612eea565b610e27565b34801561055357600080fd5b506009546103f2906001600160a01b031681565b34801561057357600080fd5b5061045a610582366004612f42565b610e63565b34801561059357600080fd5b5060105461042a9060ff1681565b3480156105ad57600080fd5b506104bd60185481565b3480156105c357600080fd5b50600d54431061042a565b3480156105da57600080fd5b506104bd60145481565b3480156105f057600080fd5b506104bd60175481565b34801561060657600080fd5b506104bd600f5481565b34801561061c57600080fd5b5060105461042a9062010000900460ff1681565b34801561063c57600080fd5b506104bd61064b366004612f42565b610f14565b34801561065c57600080fd5b5061045a610f2f565b34801561067157600080fd5b5061045a610fa3565b34801561068657600080fd5b5061045a610695366004612fce565b61100e565b3480156106a657600080fd5b5061045a6106b5366004612f66565b6110d6565b3480156106c657600080fd5b5061042a6106d5366004613007565b6111a9565b3480156106e657600080fd5b5061045a6106f5366004612f66565b6113b2565b34801561070657600080fd5b5061042a610715366004612f42565b600e6020526000908152604090205460ff1681565b34801561073657600080fd5b506005546001600160a01b03166103f2565b34801561075457600080fd5b506103bc6115ff565b34801561076957600080fd5b5061045a610778366004612fce565b61160e565b34801561078957600080fd5b506104bd61271081565b34801561079f57600080fd5b5061045a611702565b3480156107b457600080fd5b5061042a6107c3366004612eea565b61173b565b3480156107d457600080fd5b506104bd600d5481565b3480156107ea57600080fd5b5061042a6107f9366004612eea565b6117d4565b34801561080a57600080fd5b506104bd601a5481565b34801561082057600080fd5b5061045a61082f366004613035565b6117e1565b34801561084057600080fd5b5061042a61084f366004612f42565b601e6020526000908152604090205460ff1681565b34801561087057600080fd5b5061045a61087f366004613035565b6118e4565b34801561089057600080fd5b5060105461042a90610100900460ff1681565b3480156108af57600080fd5b5061045a6108be366004612fce565b6119a3565b3480156108cf57600080fd5b5061045a6108de366004612f66565b611a2c565b3480156108ef57600080fd5b5060125461042a9060ff1681565b34801561090957600080fd5b506104bd60065481565b34801561091f57600080fd5b5061045a61092e366004612f66565b611af6565b34801561093f57600080fd5b506104bd60135481565b34801561095557600080fd5b506104bd610964366004613007565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561099b57600080fd5b506104bd600a5481565b3480156109b157600080fd5b506104bd60165481565b3480156109c757600080fd5b5061045a611c41565b3480156109dc57600080fd5b5061045a6109eb366004612fce565b611cc7565b3480156109fc57600080fd5b5061045a611d1c565b348015610a1157600080fd5b506104bd600c5481565b348015610a2757600080fd5b506104bd60155481565b348015610a3d57600080fd5b5061045a610a4c366004612f42565b611d52565b348015610a5d57600080fd5b5061045a611e3d565b348015610a7257600080fd5b506104bd60195481565b348015610a8857600080fd5b50601b5461042a9060ff1681565b348015610aa257600080fd5b506104bd60075481565b606060038054610abb90613052565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790613052565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b5050505050905090565b6000610b4b338484611ea9565b5060015b92915050565b6005546001600160a01b03163314610b885760405162461bcd60e51b8152600401610b7f9061308c565b60405180910390fd5b60148390556015829055601681905580610ba283856130d7565b610bac91906130d7565b60138190556103201015610c025760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203825206f72206c657373000000006044820152606401610b7f565b505050565b6005546001600160a01b03163314610c315760405162461bcd60e51b8152600401610b7f9061308c565b60188390556019829055601a81905580610c4b83856130d7565b610c5591906130d7565b60178190556103201015610c025760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203825206f72206c657373000000006044820152606401610b7f565b6005546001600160a01b03163314610cd55760405162461bcd60e51b8152600401610b7f9061308c565b610ce16012600a6131ce565b6103e8610ced60025490565b610cf89060026131dd565b610d0291906131f4565b610d0c91906131f4565b811015610d2b5760405162461bcd60e51b8152600401610b7f90613216565b610d376012600a6131ce565b610d4190826131dd565b60068190556040519081527f89c099a4e6d77f9ed9839689924c080dcc270b4bc837e2d8979544f19df27d78906020015b60405180910390a150565b6000610d8a848484611fce565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e0f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b7f565b610e1c8533858403611ea9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b4b918590610e5e9086906130d7565b611ea9565b6005546001600160a01b03163314610e8d5760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b038116610ef25760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610b7f565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610f595760405162461bcd60e51b8152600401610b7f9061308c565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610b7f9061308c565b6010805460ff199081169091556012805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146110385760405162461bcd60e51b8152600401610b7f9061308c565b806110ab576009546001600160a01b03908116908316036110ab5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610b7f565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111005760405162461bcd60e51b8152600401610b7f9061308c565b601054610100900460ff16156111585760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610b7f565b6010805462ffff0019166201010017905543600c81905561117a9082906130d7565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546000906001600160a01b031633146111d65760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b03831661122c5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610b7f565b306001600160a01b038416036112845760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610b7f565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ef919061325f565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190613278565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146113dc5760405162461bcd60e51b8152600401610b7f9061308c565b601054610100900460ff16156114045760405162461bcd60e51b8152600401610b7f90613295565b600a81106114645760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060448201526607468616e2031360cc1b6064820152608401610b7f565b6010805462ffff0019166201010017905543600c8190556114869082906130d7565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1600047116114d25760405162461bcd60e51b8152600401610b7f906132e0565b60006114dd30610f14565b116115395760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610b7f565b6008546115549030906001600160a01b0316610e5e82610f14565b6008546001600160a01b031663f305d719473061157081610f14565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af11580156115d4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f99190613323565b50505050565b606060048054610abb90613052565b6005546001600160a01b031633146116385760405162461bcd60e51b8152600401610b7f9061308c565b6009546001600160a01b03908116908316036116bc5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b7f565b6116c68282612a16565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b0316331461172c5760405162461bcd60e51b8152600401610b7f9061308c565b6010805460ff19166001179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b7f565b6117ca3385858403611ea9565b5060019392505050565b6000610b4b338484611fce565b6005546001600160a01b0316331461180b5760405162461bcd60e51b8152600401610b7f9061308c565b806118585760405162461bcd60e51b815260206004820152601860248201527f436f6e6669726d2073656c6c696e6720656e61626c65642100000000000000006044820152606401610b7f565b601b5460ff16156118ab5760405162461bcd60e51b815260206004820152601860248201527f53656c6c696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b7f565b601b805460ff191660011790556040517f9392259d24d71f51fdce621059e3218b1271b2a2781a380c58fff224548c193c90600090a150565b6005546001600160a01b0316331461190e5760405162461bcd60e51b8152600401610b7f9061308c565b8061195b5760405162461bcd60e51b815260206004820152601f60248201527f506c6561736520636f6e6669726d20616464696e67206f6620746865204c50006044820152606401610b7f565b601054610100900460ff16156119835760405162461bcd60e51b8152600401610b7f90613295565b600047116114d25760405162461bcd60e51b8152600401610b7f906132e0565b6005546001600160a01b031633146119cd5760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611a565760405162461bcd60e51b8152600401610b7f9061308c565b611a626012600a6131ce565b6064611a6d60025490565b611a789060016131dd565b611a8291906131f4565b611a8c91906131f4565b811015611aab5760405162461bcd60e51b8152600401610b7f90613216565b611ab76012600a6131ce565b611ac190826131dd565b60078190556040519081527f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c4276290602001610d72565b6005546001600160a01b03163314611b205760405162461bcd60e51b8152600401610b7f9061308c565b620186a0611b2d60025490565b611b389060016131dd565b611b4291906131f4565b811015611baf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b7f565b6103e8611bbb60025490565b611bc69060016131dd565b611bd091906131f4565b811115611c3c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610b7f565b600a55565b6005546001600160a01b03163314611c6b5760405162461bcd60e51b8152600401610b7f9061308c565b61012c601481905560006015819055601681905590611c8b9082906130d7565b611c9591906130d7565b60135561012c601881905560006019819055601a81905590611cb89082906130d7565b611cc291906130d7565b601755565b6005546001600160a01b03163314611cf15760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611d465760405162461bcd60e51b8152600401610b7f9061308c565b6012805460ff19169055565b6005546001600160a01b03163314611d7c5760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b038116611de15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b7f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e675760405162461bcd60e51b8152600401610b7f9061308c565b604051600090339047908381818185875af1925050503d80600081146115f9576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b6001600160a01b038316611f0b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b7f565b6001600160a01b038216611f6c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b7f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611ff45760405162461bcd60e51b8152600401610b7f90613351565b6001600160a01b03821661201a5760405162461bcd60e51b8152600401610b7f90613396565b6000811161206a5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610b7f565b601054610100900460ff166120fd576001600160a01b0383166000908152601c602052604090205460ff16806120b857506001600160a01b0382166000908152601c602052604090205460ff165b6120fd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b7f565b600d54156121d0576001600160a01b0383166000908152600e602052604090205460ff16158061213a57506005546001600160a01b038381169116145b8061214f57506001600160a01b03821661dead145b6121d05760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610b7f565b60105460ff1615612608576005546001600160a01b0384811691161480159061220757506005546001600160a01b03838116911614155b801561221b57506001600160a01b03821615155b801561223257506001600160a01b03821661dead14155b801561225757506001600160a01b0383166000908152601c602052604090205460ff16155b801561227c57506001600160a01b0382166000908152601c602052604090205460ff16155b156126085760125460ff1615612395576008546001600160a01b038381169116148015906122b857506009546001600160a01b03838116911614155b15612395576122c86002436133d9565b3260009081526011602052604090205410801561230657506122eb6002436133d9565b6001600160a01b038316600090815260116020526040902054105b6123705760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610b7f565b3260009081526011602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601e602052604090205460ff1680156123d657506001600160a01b0382166000908152601d602052604090205460ff16155b1561249e5760065481111561243e5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc103a3c371760c11b6064820152608401610b7f565b6007548161244b84610f14565b61245591906130d7565b11156124995760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610b7f565b612608565b6001600160a01b0382166000908152601e602052604090205460ff1680156124df57506001600160a01b0383166000908152601d602052604090205460ff16155b1561258d57601b5460ff166125295760405162461bcd60e51b815260206004820152601060248201526f14d95b1b1a5b99c8191a5cd8589b195960821b6044820152606401610b7f565b6006548111156124995760405162461bcd60e51b815260206004820152602960248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152681036b0bc103a3c371760b91b6064820152608401610b7f565b6001600160a01b0382166000908152601d602052604090205460ff1661260857600754816125ba84610f14565b6125c491906130d7565b11156126085760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610b7f565b600061261330610f14565b600a5490915081108015908190612632575060105462010000900460ff165b80156126485750600954600160a01b900460ff16155b801561266d57506001600160a01b0385166000908152601e602052604090205460ff16155b801561269257506001600160a01b0385166000908152601c602052604090205460ff16155b80156126b757506001600160a01b0384166000908152601c602052604090205460ff16155b1561270c576009805460ff60a01b1916600160a01b179055600a546126dd9060146131dd565b8211156126f557600a546126f29060146131dd565b91505b6126fe82612a44565b6009805460ff60a01b191690555b6001600160a01b0385166000908152601c602052604090205460019060ff168061274e57506001600160a01b0385166000908152601c602052604090205460ff165b15612757575060005b60008060008084156129ff57600d544310801561278c57506001600160a01b038a166000908152601e602052604090205460ff165b80156127b157506001600160a01b0389166000908152601e602052604090205460ff16155b80156127bf57506000601354115b156128b9576001600160a01b0389166000908152600e602052604090205460ff1661285f576001600160a01b0389166000908152600e60205260408120805460ff19166001908117909155600f80549192909161281d9084906130d7565b90915550506040516001600160a01b038a1681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b5088606461286e8960636131dd565b61287891906131f4565b93506013546015548561288b91906131dd565b61289591906131f4565b9150601354601654856128a891906131dd565b6128b291906131f4565b92506129c0565b6001600160a01b0389166000908152601e602052604090205460ff1680156128e357506000601754115b1561293657889050612710601754896128fc91906131dd565b61290691906131f4565b93506017546019548561291991906131dd565b61292391906131f4565b9150601754601a54856128a891906131dd565b6001600160a01b038a166000908152601e602052604090205460ff16801561296057506000601354115b156129c0578990506127106013548961297991906131dd565b61298391906131f4565b93506013546015548561299691906131dd565b6129a091906131f4565b9150601354601654856129b391906131dd565b6129bd91906131f4565b92505b83156129f2576129d18a3086612ba2565b82156129e1576129e13084612cf7565b81156129f2576129f2308284612ba2565b6129fc84896133d9565b97505b612a0a8a8a8a612ba2565b50505050505050505050565b6001600160a01b0382166000908152601e60205260409020805460ff19168215151790556116c68282612e21565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a7957612a796133ec565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af69190613402565b81600181518110612b0957612b096133ec565b6001600160a01b039283166020918202929092010152600854612b2f9130911684611ea9565b600854600b5460405163791ac94760e01b81526001600160a01b039283169263791ac94792612b6c9287926000928892911690429060040161341f565b600060405180830381600087803b158015612b8657600080fd5b505af1158015612b9a573d6000803e3d6000fd5b505050505050565b6001600160a01b038316612bc85760405162461bcd60e51b8152600401610b7f90613351565b6001600160a01b038216612bee5760405162461bcd60e51b8152600401610b7f90613396565b6001600160a01b03831660009081526020819052604090205481811015612c665760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b7f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612c9d9084906130d7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ce991815260200190565b60405180910390a350505050565b6001600160a01b038216612d575760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b7f565b6001600160a01b03821660009081526020819052604090205481811015612dcb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b7f565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611fc1565b6001600160a01b0382166000818152601d6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b600060208083528351808285015260005b81811015612eb157858101830151858201604001528201612e95565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612ee757600080fd5b50565b60008060408385031215612efd57600080fd5b8235612f0881612ed2565b946020939093013593505050565b600080600060608486031215612f2b57600080fd5b505081359360208301359350604090920135919050565b600060208284031215612f5457600080fd5b8135612f5f81612ed2565b9392505050565b600060208284031215612f7857600080fd5b5035919050565b600080600060608486031215612f9457600080fd5b8335612f9f81612ed2565b92506020840135612faf81612ed2565b929592945050506040919091013590565b8015158114612ee757600080fd5b60008060408385031215612fe157600080fd5b8235612fec81612ed2565b91506020830135612ffc81612fc0565b809150509250929050565b6000806040838503121561301a57600080fd5b823561302581612ed2565b91506020830135612ffc81612ed2565b60006020828403121561304757600080fd5b8135612f5f81612fc0565b600181811c9082168061306657607f821691505b60208210810361308657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b4f57610b4f6130c1565b600181815b8085111561312557816000190482111561310b5761310b6130c1565b8085161561311857918102915b93841c93908002906130ef565b509250929050565b60008261313c57506001610b4f565b8161314957506000610b4f565b816001811461315f576002811461316957613185565b6001915050610b4f565b60ff84111561317a5761317a6130c1565b50506001821b610b4f565b5060208310610133831016604e8410600b84101617156131a8575081810a610b4f565b6131b283836130ea565b80600019048211156131c6576131c66130c1565b029392505050565b6000612f5f60ff84168361312d565b8082028115828204841417610b4f57610b4f6130c1565b60008261321157634e487b7160e01b600052601260045260246000fd5b500490565b60208082526029908201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206040820152687468616e20302e322560b81b606082015260800190565b60006020828403121561327157600080fd5b5051919050565b60006020828403121561328a57600080fd5b8151612f5f81612fc0565b6020808252602b908201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60408201526a3a103932b630bab731b41760a91b606082015260800190565b60208082526023908201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756040820152620dcc6d60eb1b606082015260800190565b60008060006060848603121561333857600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b4f57610b4f6130c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561341457600080fd5b8151612f5f81612ed2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561346f5784516001600160a01b03168352938301939183019160010161344a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f3fd0acac83410d7034da57ae95b169f9991a5812fbf383ab0f15b69e720f79764736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x60806040526004361061039b5760003560e01c80639a7a23d6116101dc578063d257b34f11610102578063e884f260116100a0578063f5648a4f1161006f578063f5648a4f14610a51578063f637434214610a66578063f771cb6514610a7c578063f8b45b0514610a9657600080fd5b8063e884f260146109f0578063ee40166e14610a05578063f11a24d314610a1b578063f2fde38b14610a3157600080fd5b8063e2f45605116100dc578063e2f456051461098f578063e71dc3f5146109a5578063e7b71ce2146109bb578063e800dff7146109d057600080fd5b8063d257b34f14610913578063d85ba06314610933578063dd62ed3e1461094957600080fd5b8063b16d78cf1161017a578063c024666811610149578063c0246668146108a3578063c18bc195146108c3578063c876d0b9146108e3578063cf46f24c146108fd57600080fd5b8063b16d78cf14610814578063b62496f514610834578063b987553914610864578063bbc0c7421461088457600080fd5b8063a457c2d7116101b6578063a457c2d7146107a8578063a62068ce146107c8578063a9059cbb146107de578063adb873bd146107fe57600080fd5b80639a7a23d61461075d5780639e93ad8e1461077d578063a28e86d31461079357600080fd5b806358a6d531116102c1578063751039fc1161025f57806385b12c7c1161022e57806385b12c7c146106da57806385ecfd28146106fa5780638da5cb5b1461072a57806395d89b411461074857600080fd5b8063751039fc146106655780637571336a1461067a57806382aa7c681461069a5780638366e79a146106ba57600080fd5b80636b0a894c1161029b5780636b0a894c146105fa5780636ddd17131461061057806370a0823114610630578063715018a61461065057600080fd5b806358a6d531146105b75780635a139dd4146105ce5780636a486a8e146105e457600080fd5b8063203e727e11610339578063452ed4f111610308578063452ed4f114610547578063499b8394146105675780634a62bb65146105875780634f77f6c0146105a157600080fd5b8063203e727e146104cb57806323b872dd146104eb578063313ce5671461050b578063395093511461052757600080fd5b80630d075d9c116103755780630d075d9c1461043a5780630f683e901461045c57806310d5de531461047c57806318160ddd146104ac57600080fd5b806306fdde03146103a75780630758d924146103d2578063095ea7b31461040a57600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610aac565b6040516103c99190612e84565b60405180910390f35b3480156103de57600080fd5b506008546103f2906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b34801561041657600080fd5b5061042a610425366004612eea565b610b3e565b60405190151581526020016103c9565b34801561044657600080fd5b5061045a610455366004612f16565b610b55565b005b34801561046857600080fd5b5061045a610477366004612f16565b610c07565b34801561048857600080fd5b5061042a610497366004612f42565b601d6020526000908152604090205460ff1681565b3480156104b857600080fd5b506002545b6040519081526020016103c9565b3480156104d757600080fd5b5061045a6104e6366004612f66565b610cab565b3480156104f757600080fd5b5061042a610506366004612f7f565b610d7d565b34801561051757600080fd5b50604051601281526020016103c9565b34801561053357600080fd5b5061042a610542366004612eea565b610e27565b34801561055357600080fd5b506009546103f2906001600160a01b031681565b34801561057357600080fd5b5061045a610582366004612f42565b610e63565b34801561059357600080fd5b5060105461042a9060ff1681565b3480156105ad57600080fd5b506104bd60185481565b3480156105c357600080fd5b50600d54431061042a565b3480156105da57600080fd5b506104bd60145481565b3480156105f057600080fd5b506104bd60175481565b34801561060657600080fd5b506104bd600f5481565b34801561061c57600080fd5b5060105461042a9062010000900460ff1681565b34801561063c57600080fd5b506104bd61064b366004612f42565b610f14565b34801561065c57600080fd5b5061045a610f2f565b34801561067157600080fd5b5061045a610fa3565b34801561068657600080fd5b5061045a610695366004612fce565b61100e565b3480156106a657600080fd5b5061045a6106b5366004612f66565b6110d6565b3480156106c657600080fd5b5061042a6106d5366004613007565b6111a9565b3480156106e657600080fd5b5061045a6106f5366004612f66565b6113b2565b34801561070657600080fd5b5061042a610715366004612f42565b600e6020526000908152604090205460ff1681565b34801561073657600080fd5b506005546001600160a01b03166103f2565b34801561075457600080fd5b506103bc6115ff565b34801561076957600080fd5b5061045a610778366004612fce565b61160e565b34801561078957600080fd5b506104bd61271081565b34801561079f57600080fd5b5061045a611702565b3480156107b457600080fd5b5061042a6107c3366004612eea565b61173b565b3480156107d457600080fd5b506104bd600d5481565b3480156107ea57600080fd5b5061042a6107f9366004612eea565b6117d4565b34801561080a57600080fd5b506104bd601a5481565b34801561082057600080fd5b5061045a61082f366004613035565b6117e1565b34801561084057600080fd5b5061042a61084f366004612f42565b601e6020526000908152604090205460ff1681565b34801561087057600080fd5b5061045a61087f366004613035565b6118e4565b34801561089057600080fd5b5060105461042a90610100900460ff1681565b3480156108af57600080fd5b5061045a6108be366004612fce565b6119a3565b3480156108cf57600080fd5b5061045a6108de366004612f66565b611a2c565b3480156108ef57600080fd5b5060125461042a9060ff1681565b34801561090957600080fd5b506104bd60065481565b34801561091f57600080fd5b5061045a61092e366004612f66565b611af6565b34801561093f57600080fd5b506104bd60135481565b34801561095557600080fd5b506104bd610964366004613007565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561099b57600080fd5b506104bd600a5481565b3480156109b157600080fd5b506104bd60165481565b3480156109c757600080fd5b5061045a611c41565b3480156109dc57600080fd5b5061045a6109eb366004612fce565b611cc7565b3480156109fc57600080fd5b5061045a611d1c565b348015610a1157600080fd5b506104bd600c5481565b348015610a2757600080fd5b506104bd60155481565b348015610a3d57600080fd5b5061045a610a4c366004612f42565b611d52565b348015610a5d57600080fd5b5061045a611e3d565b348015610a7257600080fd5b506104bd60195481565b348015610a8857600080fd5b50601b5461042a9060ff1681565b348015610aa257600080fd5b506104bd60075481565b606060038054610abb90613052565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790613052565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b5050505050905090565b6000610b4b338484611ea9565b5060015b92915050565b6005546001600160a01b03163314610b885760405162461bcd60e51b8152600401610b7f9061308c565b60405180910390fd5b60148390556015829055601681905580610ba283856130d7565b610bac91906130d7565b60138190556103201015610c025760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203825206f72206c657373000000006044820152606401610b7f565b505050565b6005546001600160a01b03163314610c315760405162461bcd60e51b8152600401610b7f9061308c565b60188390556019829055601a81905580610c4b83856130d7565b610c5591906130d7565b60178190556103201015610c025760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203825206f72206c657373000000006044820152606401610b7f565b6005546001600160a01b03163314610cd55760405162461bcd60e51b8152600401610b7f9061308c565b610ce16012600a6131ce565b6103e8610ced60025490565b610cf89060026131dd565b610d0291906131f4565b610d0c91906131f4565b811015610d2b5760405162461bcd60e51b8152600401610b7f90613216565b610d376012600a6131ce565b610d4190826131dd565b60068190556040519081527f89c099a4e6d77f9ed9839689924c080dcc270b4bc837e2d8979544f19df27d78906020015b60405180910390a150565b6000610d8a848484611fce565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e0f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b7f565b610e1c8533858403611ea9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b4b918590610e5e9086906130d7565b611ea9565b6005546001600160a01b03163314610e8d5760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b038116610ef25760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610b7f565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610f595760405162461bcd60e51b8152600401610b7f9061308c565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610b7f9061308c565b6010805460ff199081169091556012805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146110385760405162461bcd60e51b8152600401610b7f9061308c565b806110ab576009546001600160a01b03908116908316036110ab5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610b7f565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111005760405162461bcd60e51b8152600401610b7f9061308c565b601054610100900460ff16156111585760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610b7f565b6010805462ffff0019166201010017905543600c81905561117a9082906130d7565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546000906001600160a01b031633146111d65760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b03831661122c5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610b7f565b306001600160a01b038416036112845760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610b7f565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ef919061325f565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190613278565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146113dc5760405162461bcd60e51b8152600401610b7f9061308c565b601054610100900460ff16156114045760405162461bcd60e51b8152600401610b7f90613295565b600a81106114645760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060448201526607468616e2031360cc1b6064820152608401610b7f565b6010805462ffff0019166201010017905543600c8190556114869082906130d7565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1600047116114d25760405162461bcd60e51b8152600401610b7f906132e0565b60006114dd30610f14565b116115395760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610b7f565b6008546115549030906001600160a01b0316610e5e82610f14565b6008546001600160a01b031663f305d719473061157081610f14565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af11580156115d4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f99190613323565b50505050565b606060048054610abb90613052565b6005546001600160a01b031633146116385760405162461bcd60e51b8152600401610b7f9061308c565b6009546001600160a01b03908116908316036116bc5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b7f565b6116c68282612a16565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b0316331461172c5760405162461bcd60e51b8152600401610b7f9061308c565b6010805460ff19166001179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b7f565b6117ca3385858403611ea9565b5060019392505050565b6000610b4b338484611fce565b6005546001600160a01b0316331461180b5760405162461bcd60e51b8152600401610b7f9061308c565b806118585760405162461bcd60e51b815260206004820152601860248201527f436f6e6669726d2073656c6c696e6720656e61626c65642100000000000000006044820152606401610b7f565b601b5460ff16156118ab5760405162461bcd60e51b815260206004820152601860248201527f53656c6c696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b7f565b601b805460ff191660011790556040517f9392259d24d71f51fdce621059e3218b1271b2a2781a380c58fff224548c193c90600090a150565b6005546001600160a01b0316331461190e5760405162461bcd60e51b8152600401610b7f9061308c565b8061195b5760405162461bcd60e51b815260206004820152601f60248201527f506c6561736520636f6e6669726d20616464696e67206f6620746865204c50006044820152606401610b7f565b601054610100900460ff16156119835760405162461bcd60e51b8152600401610b7f90613295565b600047116114d25760405162461bcd60e51b8152600401610b7f906132e0565b6005546001600160a01b031633146119cd5760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611a565760405162461bcd60e51b8152600401610b7f9061308c565b611a626012600a6131ce565b6064611a6d60025490565b611a789060016131dd565b611a8291906131f4565b611a8c91906131f4565b811015611aab5760405162461bcd60e51b8152600401610b7f90613216565b611ab76012600a6131ce565b611ac190826131dd565b60078190556040519081527f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c4276290602001610d72565b6005546001600160a01b03163314611b205760405162461bcd60e51b8152600401610b7f9061308c565b620186a0611b2d60025490565b611b389060016131dd565b611b4291906131f4565b811015611baf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b7f565b6103e8611bbb60025490565b611bc69060016131dd565b611bd091906131f4565b811115611c3c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610b7f565b600a55565b6005546001600160a01b03163314611c6b5760405162461bcd60e51b8152600401610b7f9061308c565b61012c601481905560006015819055601681905590611c8b9082906130d7565b611c9591906130d7565b60135561012c601881905560006019819055601a81905590611cb89082906130d7565b611cc291906130d7565b601755565b6005546001600160a01b03163314611cf15760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611d465760405162461bcd60e51b8152600401610b7f9061308c565b6012805460ff19169055565b6005546001600160a01b03163314611d7c5760405162461bcd60e51b8152600401610b7f9061308c565b6001600160a01b038116611de15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b7f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e675760405162461bcd60e51b8152600401610b7f9061308c565b604051600090339047908381818185875af1925050503d80600081146115f9576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b6001600160a01b038316611f0b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b7f565b6001600160a01b038216611f6c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b7f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611ff45760405162461bcd60e51b8152600401610b7f90613351565b6001600160a01b03821661201a5760405162461bcd60e51b8152600401610b7f90613396565b6000811161206a5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610b7f565b601054610100900460ff166120fd576001600160a01b0383166000908152601c602052604090205460ff16806120b857506001600160a01b0382166000908152601c602052604090205460ff165b6120fd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b7f565b600d54156121d0576001600160a01b0383166000908152600e602052604090205460ff16158061213a57506005546001600160a01b038381169116145b8061214f57506001600160a01b03821661dead145b6121d05760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610b7f565b60105460ff1615612608576005546001600160a01b0384811691161480159061220757506005546001600160a01b03838116911614155b801561221b57506001600160a01b03821615155b801561223257506001600160a01b03821661dead14155b801561225757506001600160a01b0383166000908152601c602052604090205460ff16155b801561227c57506001600160a01b0382166000908152601c602052604090205460ff16155b156126085760125460ff1615612395576008546001600160a01b038381169116148015906122b857506009546001600160a01b03838116911614155b15612395576122c86002436133d9565b3260009081526011602052604090205410801561230657506122eb6002436133d9565b6001600160a01b038316600090815260116020526040902054105b6123705760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610b7f565b3260009081526011602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601e602052604090205460ff1680156123d657506001600160a01b0382166000908152601d602052604090205460ff16155b1561249e5760065481111561243e5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc103a3c371760c11b6064820152608401610b7f565b6007548161244b84610f14565b61245591906130d7565b11156124995760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610b7f565b612608565b6001600160a01b0382166000908152601e602052604090205460ff1680156124df57506001600160a01b0383166000908152601d602052604090205460ff16155b1561258d57601b5460ff166125295760405162461bcd60e51b815260206004820152601060248201526f14d95b1b1a5b99c8191a5cd8589b195960821b6044820152606401610b7f565b6006548111156124995760405162461bcd60e51b815260206004820152602960248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152681036b0bc103a3c371760b91b6064820152608401610b7f565b6001600160a01b0382166000908152601d602052604090205460ff1661260857600754816125ba84610f14565b6125c491906130d7565b11156126085760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610b7f565b600061261330610f14565b600a5490915081108015908190612632575060105462010000900460ff165b80156126485750600954600160a01b900460ff16155b801561266d57506001600160a01b0385166000908152601e602052604090205460ff16155b801561269257506001600160a01b0385166000908152601c602052604090205460ff16155b80156126b757506001600160a01b0384166000908152601c602052604090205460ff16155b1561270c576009805460ff60a01b1916600160a01b179055600a546126dd9060146131dd565b8211156126f557600a546126f29060146131dd565b91505b6126fe82612a44565b6009805460ff60a01b191690555b6001600160a01b0385166000908152601c602052604090205460019060ff168061274e57506001600160a01b0385166000908152601c602052604090205460ff165b15612757575060005b60008060008084156129ff57600d544310801561278c57506001600160a01b038a166000908152601e602052604090205460ff165b80156127b157506001600160a01b0389166000908152601e602052604090205460ff16155b80156127bf57506000601354115b156128b9576001600160a01b0389166000908152600e602052604090205460ff1661285f576001600160a01b0389166000908152600e60205260408120805460ff19166001908117909155600f80549192909161281d9084906130d7565b90915550506040516001600160a01b038a1681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b5088606461286e8960636131dd565b61287891906131f4565b93506013546015548561288b91906131dd565b61289591906131f4565b9150601354601654856128a891906131dd565b6128b291906131f4565b92506129c0565b6001600160a01b0389166000908152601e602052604090205460ff1680156128e357506000601754115b1561293657889050612710601754896128fc91906131dd565b61290691906131f4565b93506017546019548561291991906131dd565b61292391906131f4565b9150601754601a54856128a891906131dd565b6001600160a01b038a166000908152601e602052604090205460ff16801561296057506000601354115b156129c0578990506127106013548961297991906131dd565b61298391906131f4565b93506013546015548561299691906131dd565b6129a091906131f4565b9150601354601654856129b391906131dd565b6129bd91906131f4565b92505b83156129f2576129d18a3086612ba2565b82156129e1576129e13084612cf7565b81156129f2576129f2308284612ba2565b6129fc84896133d9565b97505b612a0a8a8a8a612ba2565b50505050505050505050565b6001600160a01b0382166000908152601e60205260409020805460ff19168215151790556116c68282612e21565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a7957612a796133ec565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af69190613402565b81600181518110612b0957612b096133ec565b6001600160a01b039283166020918202929092010152600854612b2f9130911684611ea9565b600854600b5460405163791ac94760e01b81526001600160a01b039283169263791ac94792612b6c9287926000928892911690429060040161341f565b600060405180830381600087803b158015612b8657600080fd5b505af1158015612b9a573d6000803e3d6000fd5b505050505050565b6001600160a01b038316612bc85760405162461bcd60e51b8152600401610b7f90613351565b6001600160a01b038216612bee5760405162461bcd60e51b8152600401610b7f90613396565b6001600160a01b03831660009081526020819052604090205481811015612c665760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b7f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612c9d9084906130d7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ce991815260200190565b60405180910390a350505050565b6001600160a01b038216612d575760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b7f565b6001600160a01b03821660009081526020819052604090205481811015612dcb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b7f565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611fc1565b6001600160a01b0382166000818152601d6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b600060208083528351808285015260005b81811015612eb157858101830151858201604001528201612e95565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612ee757600080fd5b50565b60008060408385031215612efd57600080fd5b8235612f0881612ed2565b946020939093013593505050565b600080600060608486031215612f2b57600080fd5b505081359360208301359350604090920135919050565b600060208284031215612f5457600080fd5b8135612f5f81612ed2565b9392505050565b600060208284031215612f7857600080fd5b5035919050565b600080600060608486031215612f9457600080fd5b8335612f9f81612ed2565b92506020840135612faf81612ed2565b929592945050506040919091013590565b8015158114612ee757600080fd5b60008060408385031215612fe157600080fd5b8235612fec81612ed2565b91506020830135612ffc81612fc0565b809150509250929050565b6000806040838503121561301a57600080fd5b823561302581612ed2565b91506020830135612ffc81612ed2565b60006020828403121561304757600080fd5b8135612f5f81612fc0565b600181811c9082168061306657607f821691505b60208210810361308657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b4f57610b4f6130c1565b600181815b8085111561312557816000190482111561310b5761310b6130c1565b8085161561311857918102915b93841c93908002906130ef565b509250929050565b60008261313c57506001610b4f565b8161314957506000610b4f565b816001811461315f576002811461316957613185565b6001915050610b4f565b60ff84111561317a5761317a6130c1565b50506001821b610b4f565b5060208310610133831016604e8410600b84101617156131a8575081810a610b4f565b6131b283836130ea565b80600019048211156131c6576131c66130c1565b029392505050565b6000612f5f60ff84168361312d565b8082028115828204841417610b4f57610b4f6130c1565b60008261321157634e487b7160e01b600052601260045260246000fd5b500490565b60208082526029908201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206040820152687468616e20302e322560b81b606082015260800190565b60006020828403121561327157600080fd5b5051919050565b60006020828403121561328a57600080fd5b8151612f5f81612fc0565b6020808252602b908201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60408201526a3a103932b630bab731b41760a91b606082015260800190565b60208082526023908201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756040820152620dcc6d60eb1b606082015260800190565b60008060006060848603121561333857600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b4f57610b4f6130c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561341457600080fd5b8151612f5f81612ed2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561346f5784516001600160a01b03168352938301939183019160010161344a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f3fd0acac83410d7034da57ae95b169f9991a5812fbf383ab0f15b69e720f79764736f6c63430008110033
Deployed Bytecode Sourcemap
11038:19798:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4154:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11149:27;;;;;;;;;;-1:-1:-1;11149:27:0;;;;-1:-1:-1;;;;;11149:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;11149:27:0;567:221:1;5209:210:0;;;;;;;;;;-1:-1:-1;5209:210:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;5209:210:0;1249:187:1;18997:408:0;;;;;;;;;;-1:-1:-1;18997:408:0;;;;;:::i;:::-;;:::i;:::-;;19413:417;;;;;;;;;;-1:-1:-1;19413:417:0;;;;;:::i;:::-;;:::i;12454:63::-;;;;;;;;;;-1:-1:-1;12454:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4475:108;;;;;;;;;;-1:-1:-1;4563:12:0;;4475:108;;;2160:25:1;;;2148:2;2133:18;4475:108:0;2014:177:1;16648:330:0;;;;;;;;;;-1:-1:-1;16648:330:0;;;;;:::i;:::-;;:::i;5427:529::-;;;;;;;;;;-1:-1:-1;5427:529:0;;;;;:::i;:::-;;:::i;4374:93::-;;;;;;;;;;-1:-1:-1;4374:93:0;;4457:2;2984:36:1;;2972:2;2957:18;4374:93:0;2842:184:1;5964:297:0;;;;;;;;;;-1:-1:-1;5964:297:0;;;;;:::i;:::-;;:::i;11183:21::-;;;;;;;;;;-1:-1:-1;11183:21:0;;;;-1:-1:-1;;;;;11183:21:0;;;27766:297;;;;;;;;;;-1:-1:-1;27766:297:0;;;;;:::i;:::-;;:::i;11518:33::-;;;;;;;;;;-1:-1:-1;11518:33:0;;;;;;;;12042:32;;;;;;;;;;;;;;;;26349:121;;;;;;;;;;-1:-1:-1;26444:18:0;;26429:12;:33;26349:121;;11898:31;;;;;;;;;;;;;;;;12007:28;;;;;;;;;;;;;;;;11484:25;;;;;;;;;;;;;;;;11598:31;;;;;;;;;;-1:-1:-1;11598:31:0;;;;;;;;;;;4591:177;;;;;;;;;;-1:-1:-1;4591:177:0;;;;;:::i;:::-;;:::i;9243:150::-;;;;;;;;;;;;;:::i;16109:154::-;;;;;;;;;;;;;:::i;18044:334::-;;;;;;;;;;-1:-1:-1;18044:334:0;;;;;:::i;:::-;;:::i;15727:330::-;;;;;;;;;;-1:-1:-1;15727:330:0;;;;;:::i;:::-;;:::i;27077:488::-;;;;;;;;;;-1:-1:-1;27077:488:0;;;;;:::i;:::-;;:::i;29325:1166::-;;;;;;;;;;-1:-1:-1;29325:1166:0;;;;;:::i;:::-;;:::i;11434:43::-;;;;;;;;;;-1:-1:-1;11434:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9029:79;;;;;;;;;;-1:-1:-1;9094:6:0;;-1:-1:-1;;;;;9094:6:0;9029:79;;4262:104;;;;;;;;;;;;;:::i;18386:355::-;;;;;;;;;;-1:-1:-1;18386:355:0;;;;;:::i;:::-;;:::i;12154:43::-;;;;;;;;;;;;12192:5;12154:43;;16271:84;;;;;;;;;;;;;:::i;6269:482::-;;;;;;;;;;-1:-1:-1;6269:482:0;;;;;:::i;:::-;;:::i;11394:33::-;;;;;;;;;;;;;;;;4776:216;;;;;;;;;;-1:-1:-1;4776:216:0;;;;;:::i;:::-;;:::i;12119:26::-;;;;;;;;;;;;;;;;30546:287;;;;;;;;;;-1:-1:-1;30546:287:0;;;;;:::i;:::-;;:::i;12675:57::-;;;;;;;;;;-1:-1:-1;12675:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28459:858;;;;;;;;;;-1:-1:-1;28459:858:0;;;;;:::i;:::-;;:::i;11558:33::-;;;;;;;;;;-1:-1:-1;11558:33:0;;;;;;;;;;;19838:182;;;;;;;;;;-1:-1:-1;19838:182:0;;;;;:::i;:::-;;:::i;16986:323::-;;;;;;;;;;-1:-1:-1;16986:323:0;;;;;:::i;:::-;;:::i;11816:39::-;;;;;;;;;;-1:-1:-1;11816:39:0;;;;;;;;11082:27;;;;;;;;;;;;;;;;17379:428;;;;;;;;;;-1:-1:-1;17379:428:0;;;;;:::i;:::-;;:::i;11864:27::-;;;;;;;;;;;;;;;;5000:201;;;;;;;;;;-1:-1:-1;5000:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5166:18:0;;;5134:7;5166:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5000:201;11241:33;;;;;;;;;;;;;;;;11973:25;;;;;;;;;;;;;;;;28071:380;;;;;;;;;;;;;:::i;16363:118::-;;;;;;;;;;-1:-1:-1;16363:118:0;;;;;:::i;:::-;;:::i;16542:98::-;;;;;;;;;;;;;:::i;11317:37::-;;;;;;;;;;;;;;;;11936:30;;;;;;;;;;;;;;;;9401:281;;;;;;;;;;-1:-1:-1;9401:281:0;;;;;:::i;:::-;;:::i;27573:185::-;;;;;;;;;;;;;:::i;12081:31::-;;;;;;;;;;;;;;;;12271:34;;;;;;;;;;-1:-1:-1;12271:34:0;;;;;;;;11116:24;;;;;;;;;;;;;;;;4154:100;4208:13;4241:5;4234:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4154:100;:::o;5209:210::-;5328:4;5350:39;304:10;5373:7;5382:6;5350:8;:39::i;:::-;-1:-1:-1;5407:4:0;5209:210;;;;;:::o;18997:408::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;;;;;;;;;19146:16:::1;:33:::0;;;19190:15:::1;:31:::0;;;19232:10:::1;:21:::0;;;19245:8;19279:34:::1;19208:13:::0;19165:14;19279:34:::1;:::i;:::-;:47;;;;:::i;:::-;19264:12;:62:::0;;;19361:3:::1;-1:-1:-1::0;19345:19:0::1;19337:60;;;::::0;-1:-1:-1;;;19337:60:0;;5598:2:1;19337:60:0::1;::::0;::::1;5580:21:1::0;5637:2;5617:18;;;5610:30;5676;5656:18;;;5649:58;5724:18;;19337:60:0::1;5396:352:1::0;19337:60:0::1;18997:408:::0;;;:::o;19413:417::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;19563:17:::1;:34:::0;;;19608:16:::1;:32:::0;;;19651:11:::1;:22:::0;;;19665:8;19700:36:::1;19627:13:::0;19583:14;19700:36:::1;:::i;:::-;:50;;;;:::i;:::-;19684:13;:66:::0;;;19786:3:::1;-1:-1:-1::0;19769:20:0::1;19761:61;;;::::0;-1:-1:-1;;;19761:61:0;;5598:2:1;19761:61:0::1;::::0;::::1;5580:21:1::0;5637:2;5617:18;;;5610:30;5676;5656:18;;;5649:58;5724:18;;19761:61:0::1;5396:352:1::0;16648:330:0;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;16786:14:::1;4457:2:::0;16786::::1;:14;:::i;:::-;16777:4;16756:13;4563:12:::0;;;4475:108;16756:13:::1;:17;::::0;16772:1:::1;16756:17;:::i;:::-;16755:26;;;;:::i;:::-;16754:47;;;;:::i;:::-;16744:6;:57;;16722:148;;;;-1:-1:-1::0;;;16722:148:0::1;;;;;;;:::i;:::-;16906:14;4457:2:::0;16906::::1;:14;:::i;:::-;16896:25;::::0;:6;:25:::1;:::i;:::-;16881:12;:40:::0;;;16937:33:::1;::::0;2160:25:1;;;16937:33:0::1;::::0;2148:2:1;2133:18;16937:33:0::1;;;;;;;;16648:330:::0;:::o;5427:529::-;5567:4;5584:36;5594:6;5602:9;5613:6;5584:9;:36::i;:::-;-1:-1:-1;;;;;5660:19:0;;5633:24;5660:19;;;:11;:19;;;;;;;;304:10;5660:33;;;;;;;;5726:26;;;;5704:116;;;;-1:-1:-1;;;5704:116:0;;8143:2:1;5704:116:0;;;8125:21:1;8182:2;8162:18;;;8155:30;8221:34;8201:18;;;8194:62;-1:-1:-1;;;8272:18:1;;;8265:38;8320:19;;5704:116:0;7941:404:1;5704:116:0;5856:57;5865:6;304:10;5906:6;5887:16;:25;5856:8;:57::i;:::-;-1:-1:-1;5944:4:0;;5427:529;-1:-1:-1;;;;5427:529:0:o;5964:297::-;304:10;6079:4;6173:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6173:34:0;;;;;;;;;;6079:4;;6101:130;;6151:7;;6173:47;;6210:10;;6173:47;:::i;:::-;6101:8;:130::i;27766:297::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27899:32:0;::::1;27877:120;;;::::0;-1:-1:-1;;;27877:120:0;;8552:2:1;27877:120:0::1;::::0;::::1;8534:21:1::0;8591:2;8571:18;;;8564:30;8630:34;8610:18;;;8603:62;-1:-1:-1;;;8681:18:1;;;8674:36;8727:19;;27877:120:0::1;8350:402:1::0;27877:120:0::1;28008:17;:47:::0;;-1:-1:-1;;;;;;28008:47:0::1;-1:-1:-1::0;;;;;28008:47:0;;;::::1;::::0;;;::::1;::::0;;27766:297::o;4591:177::-;-1:-1:-1;;;;;4742:18:0;4710:7;4742:18;;;;;;;;;;;;4591:177::o;9243:150::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;9336:6:::1;::::0;9315:40:::1;::::0;9352:1:::1;::::0;-1:-1:-1;;;;;9336:6:0::1;::::0;9315:40:::1;::::0;9352:1;;9315:40:::1;9366:6;:19:::0;;-1:-1:-1;;;;;;9366:19:0::1;::::0;;9243:150::o;16109:154::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;16163:14:::1;:22:::0;;-1:-1:-1;;16163:22:0;;::::1;::::0;;;16196:20:::1;:28:::0;;;;::::1;::::0;;16240:15:::1;::::0;::::1;::::0;16180:5:::1;::::0;16240:15:::1;16109:154::o:0;18044:334::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;18164:4:::1;18159:155;;18221:6;::::0;-1:-1:-1;;;;;18221:6:0;;::::1;18211:16:::0;;::::1;::::0;18185:117:::1;;;::::0;-1:-1:-1;;;18185:117:0;;8959:2:1;18185:117:0::1;::::0;::::1;8941:21:1::0;8998:2;8978:18;;;8971:30;9037:34;9017:18;;;9010:62;-1:-1:-1;;;9088:18:1;;;9081:37;9135:19;;18185:117:0::1;8757:403:1::0;18185:117:0::1;-1:-1:-1::0;;;;;18324:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18324:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18044:334::o;15727:330::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;15809:13:::1;::::0;::::1;::::0;::::1;;;15808:14;15800:50;;;::::0;-1:-1:-1;;;15800:50:0;;9367:2:1;15800:50:0::1;::::0;::::1;9349:21:1::0;9406:2;9386:18;;;9379:30;9445:25;9425:18;;;9418:53;9488:18;;15800:50:0::1;9165:347:1::0;15800:50:0::1;15861:13;:20:::0;;-1:-1:-1;;15892:18:0;;;;;15942:12:::1;15921:18;:33:::0;;;15986:31:::1;::::0;16007:10;;15986:31:::1;:::i;:::-;15965:18;:52:::0;16033:16:::1;::::0;::::1;::::0;;;::::1;15727:330:::0;:::o;27077:488::-;9156:6;;27191:10;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27227:20:0;::::1;27219:59;;;::::0;-1:-1:-1;;;27219:59:0;;9719:2:1;27219:59:0::1;::::0;::::1;9701:21:1::0;9758:2;9738:18;;;9731:30;9797:28;9777:18;;;9770:56;9843:18;;27219:59:0::1;9517:350:1::0;27219:59:0::1;27315:4;-1:-1:-1::0;;;;;27297:23:0;::::1;::::0;27289:64:::1;;;::::0;-1:-1:-1;;;27289:64:0;;10074:2:1;27289:64:0::1;::::0;::::1;10056:21:1::0;10113:2;10093:18;;;10086:30;10152;10132:18;;;10125:58;10200:18;;27289:64:0::1;9872:352:1::0;27289:64:0::1;27391:39;::::0;-1:-1:-1;;;27391:39:0;;27424:4:::1;27391:39;::::0;::::1;731:51:1::0;27364:24:0::1;::::0;-1:-1:-1;;;;;27391:24:0;::::1;::::0;::::1;::::0;704:18:1;;27391:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27449:46;::::0;-1:-1:-1;;;27449:46:0;;-1:-1:-1;;;;;10610:32:1;;;27449:46:0::1;::::0;::::1;10592:51:1::0;10659:18;;;10652:34;;;27364:66:0;;-1:-1:-1;27449:23:0;;::::1;::::0;::::1;::::0;10565:18:1;;27449:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27511;::::0;;-1:-1:-1;;;;;10610:32:1;;10592:51;;10674:2;10659:18;;10652:34;;;27441:54:0;;-1:-1:-1;27511:46:0::1;::::0;10565:18:1;27511:46:0::1;;;;;;;27208:357;27077:488:::0;;;;:::o;29325:1166::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;29406:13:::1;::::0;::::1;::::0;::::1;;;29405:14;29397:70;;;;-1:-1:-1::0;;;29397:70:0::1;;;;;;;:::i;:::-;29519:2;29500:16;:21;29478:110;;;::::0;-1:-1:-1;;;29478:110:0;;11561:2:1;29478:110:0::1;::::0;::::1;11543:21:1::0;11600:2;11580:18;;;11573:30;11639:34;11619:18;;;11612:62;-1:-1:-1;;;11690:18:1;;;11683:37;11737:19;;29478:110:0::1;11359:403:1::0;29478:110:0::1;29636:13;:20:::0;;-1:-1:-1;;29667:18:0;;;;;29717:12:::1;29696:18;:33:::0;;;29761:37:::1;::::0;29782:16;;29761:37:::1;:::i;:::-;29740:18;:58:::0;29814:16:::1;::::0;::::1;::::0;;;::::1;29921:1;29897:21;:25;29875:110;;;;-1:-1:-1::0;;;29875:110:0::1;;;;;;;:::i;:::-;30047:1;30020:24;30038:4;30020:9;:24::i;:::-;:28;29998:116;;;::::0;-1:-1:-1;;;29998:116:0;;12373:2:1;29998:116:0::1;::::0;::::1;12355:21:1::0;12412:2;12392:18;;;12385:30;12451:34;12431:18;;;12424:62;-1:-1:-1;;;12502:18:1;;;12495:36;12548:19;;29998:116:0::1;12171:402:1::0;29998:116:0::1;30159:9;::::0;30127:69:::1;::::0;30144:4:::1;::::0;-1:-1:-1;;;;;30159:9:0::1;30171:24;30144:4:::0;30171:9:::1;:24::i;30127:69::-;30209:9;::::0;-1:-1:-1;;;;;30209:9:0::1;:25;30242:21;30287:4;30307:24;30287:4:::0;30307:9:::1;:24::i;:::-;30209:274;::::0;-1:-1:-1;;;;;;30209:274:0::1;::::0;;;;;;-1:-1:-1;;;;;12937:15:1;;;30209:274:0::1;::::0;::::1;12919:34:1::0;12969:18;;;12962:34;30346:1:0::1;13012:18:1::0;;;13005:34;;;13055:18;;;13048:34;30432:10:0::1;13098:19:1::0;;;13091:44;30457:15:0::1;13151:19:1::0;;;13144:35;12853:19;;30209:274:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29325:1166:::0;:::o;4262:104::-;4318:13;4351:7;4344:14;;;;;:::i;18386:355::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;18532:6:::1;::::0;-1:-1:-1;;;;;18532:6:0;;::::1;18524:14:::0;;::::1;::::0;18502:121:::1;;;::::0;-1:-1:-1;;;18502:121:0;;13703:2:1;18502:121:0::1;::::0;::::1;13685:21:1::0;13742:2;13722:18;;;13715:30;13781:34;13761:18;;;13754:62;13852:27;13832:18;;;13825:55;13897:19;;18502:121:0::1;13501:421:1::0;18502:121:0::1;18636:41;18665:4;18671:5;18636:28;:41::i;:::-;18693:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;18693:40:0;::::1;::::0;::::1;::::0;;;::::1;18386:355:::0;;:::o;16271:84::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;16326:14:::1;:21:::0;;-1:-1:-1;;16326:21:0::1;16343:4;16326:21;::::0;;16271:84::o;6269:482::-;304:10;6389:4;6438:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6438:34:0;;;;;;;;;;6505:35;;;;6483:122;;;;-1:-1:-1;;;6483:122:0;;14129:2:1;6483:122:0;;;14111:21:1;14168:2;14148:18;;;14141:30;14207:34;14187:18;;;14180:62;-1:-1:-1;;;14258:18:1;;;14251:35;14303:19;;6483:122:0;13927:401:1;6483:122:0;6641:67;304:10;6664:7;6692:15;6673:16;:34;6641:8;:67::i;:::-;-1:-1:-1;6739:4:0;;6269:482;-1:-1:-1;;;6269:482:0:o;4776:216::-;4898:4;4920:42;304:10;4944:9;4955:6;4920:9;:42::i;30546:287::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;30639:21:::1;30631:58;;;::::0;-1:-1:-1;;;30631:58:0;;14535:2:1;30631:58:0::1;::::0;::::1;14517:21:1::0;14574:2;14554:18;;;14547:30;14613:26;14593:18;;;14586:54;14657:18;;30631:58:0::1;14333:348:1::0;30631:58:0::1;30709:14;::::0;::::1;;30708:15;30700:52;;;::::0;-1:-1:-1;;;30700:52:0;;14888:2:1;30700:52:0::1;::::0;::::1;14870:21:1::0;14927:2;14907:18;;;14900:30;14966:26;14946:18;;;14939:54;15010:18;;30700:52:0::1;14686:348:1::0;30700:52:0::1;30765:14;:21:::0;;-1:-1:-1;;30765:21:0::1;30782:4;30765:21;::::0;;30802:23:::1;::::0;::::1;::::0;30765:14:::1;::::0;30802:23:::1;30546:287:::0;:::o;28459:858::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;28531:12:::1;28523:56;;;::::0;-1:-1:-1;;;28523:56:0;;15241:2:1;28523:56:0::1;::::0;::::1;15223:21:1::0;15280:2;15260:18;;;15253:30;15319:33;15299:18;;;15292:61;15370:18;;28523:56:0::1;15039:355:1::0;28523:56:0::1;28599:13;::::0;::::1;::::0;::::1;;;28598:14;28590:70;;;;-1:-1:-1::0;;;28590:70:0::1;;;;;;;:::i;:::-;28749:1;28725:21;:25;28703:110;;;;-1:-1:-1::0;;;28703:110:0::1;;;;;;;:::i;19838:182::-:0;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19923:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19923:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19978:34;;1389:41:1;;;19978:34:0::1;::::0;1362:18:1;19978:34:0::1;;;;;;;19838:182:::0;;:::o;16986:323::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;17126:14:::1;4457:2:::0;17126::::1;:14;:::i;:::-;17118:3;17097:13;4563:12:::0;;;4475:108;17097:13:::1;:17;::::0;17113:1:::1;17097:17;:::i;:::-;17096:25;;;;:::i;:::-;17095:46;;;;:::i;:::-;17085:6;:56;;17063:147;;;;-1:-1:-1::0;;;17063:147:0::1;;;;;;;:::i;:::-;17243:14;4457:2:::0;17243::::1;:14;:::i;:::-;17233:25;::::0;:6;:25:::1;:::i;:::-;17221:9;:37:::0;;;17274:27:::1;::::0;2160:25:1;;;17274:27:0::1;::::0;2148:2:1;2133:18;17274:27:0::1;2014:177:1::0;17379:428:0;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;17519:6:::1;17498:13;4563:12:::0;;;4475:108;17498:13:::1;:17;::::0;17514:1:::1;17498:17;:::i;:::-;17497:28;;;;:::i;:::-;17484:9;:41;;17462:144;;;::::0;-1:-1:-1;;;17462:144:0;;15601:2:1;17462:144:0::1;::::0;::::1;15583:21:1::0;15640:2;15620:18;;;15613:30;15679:34;15659:18;;;15652:62;-1:-1:-1;;;15730:18:1;;;15723:51;15791:19;;17462:144:0::1;15399:417:1::0;17462:144:0::1;17674:4;17653:13;4563:12:::0;;;4475:108;17653:13:::1;:17;::::0;17669:1:::1;17653:17;:::i;:::-;17652:26;;;;:::i;:::-;17639:9;:39;;17617:141;;;::::0;-1:-1:-1;;;17617:141:0;;16023:2:1;17617:141:0::1;::::0;::::1;16005:21:1::0;16062:2;16042:18;;;16035:30;16101:34;16081:18;;;16074:62;-1:-1:-1;;;16152:18:1;;;16145:50;16212:19;;17617:141:0::1;15821:416:1::0;17617:141:0::1;17769:18;:30:::0;17379:428::o;28071:380::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;28142:3:::1;28123:16;:22:::0;;;28174:1:::1;28156:15;:19:::0;;;28186:10:::1;:14:::0;;;28174:1;28226:34:::1;::::0;28174:1;;28226:34:::1;:::i;:::-;:47;;;;:::i;:::-;28211:12;:62:::0;28306:3:::1;28286:17;:23:::0;;;-1:-1:-1;28320:16:0::1;:20:::0;;;28351:11:::1;:15:::0;;;-1:-1:-1;28393:36:0::1;::::0;-1:-1:-1;;28393:36:0::1;:::i;:::-;:50;;;;:::i;:::-;28377:13;:66:::0;28071:380::o;16363:118::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16447:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;16447:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16363:118::o;16542:98::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;16604:20:::1;:28:::0;;-1:-1:-1;;16604:28:0::1;::::0;;16542:98::o;9401:281::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9504:22:0;::::1;9482:110;;;::::0;-1:-1:-1;;;9482:110:0;;16444:2:1;9482:110:0::1;::::0;::::1;16426:21:1::0;16483:2;16463:18;;;16456:30;16522:34;16502:18;;;16495:62;-1:-1:-1;;;16573:18:1;;;16566:36;16619:19;;9482:110:0::1;16242:402:1::0;9482:110:0::1;9629:6;::::0;9608:38:::1;::::0;-1:-1:-1;;;;;9608:38:0;;::::1;::::0;9629:6:::1;::::0;9608:38:::1;::::0;9629:6:::1;::::0;9608:38:::1;9657:6;:17:::0;;-1:-1:-1;;;;;;9657:17:0::1;-1:-1:-1::0;;;;;9657:17:0;;;::::1;::::0;;;::::1;::::0;;9401:281::o;27573:185::-;9156:6;;-1:-1:-1;;;;;9156:6:0;304:10;9156:22;9148:67;;;;-1:-1:-1;;;9148:67:0;;;;;;;:::i;:::-;27668:82:::1;::::0;27631:12:::1;::::0;27676:10:::1;::::0;27700:21:::1;::::0;27631:12;27668:82;27631:12;27668:82;27700:21;27676:10;27668:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8298:380:::0;-1:-1:-1;;;;;8434:19:0;;8426:68;;;;-1:-1:-1;;;8426:68:0;;17061:2:1;8426:68:0;;;17043:21:1;17100:2;17080:18;;;17073:30;17139:34;17119:18;;;17112:62;-1:-1:-1;;;17190:18:1;;;17183:34;17234:19;;8426:68:0;16859:400:1;8426:68:0;-1:-1:-1;;;;;8513:21:0;;8505:68;;;;-1:-1:-1;;;8505:68:0;;17466:2:1;8505:68:0;;;17448:21:1;17505:2;17485:18;;;17478:30;17544:34;17524:18;;;17517:62;-1:-1:-1;;;17595:18:1;;;17588:32;17637:19;;8505:68:0;17264:398:1;8505:68:0;-1:-1:-1;;;;;8586:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8638:32;;2160:25:1;;;8638:32:0;;2133:18:1;8638:32:0;;;;;;;;8298:380;;;:::o;20028:6313::-;-1:-1:-1;;;;;20160:18:0;;20152:68;;;;-1:-1:-1;;;20152:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20239:16:0;;20231:64;;;;-1:-1:-1;;;20231:64:0;;;;;;;:::i;:::-;20323:1;20314:6;:10;20306:52;;;;-1:-1:-1;;;20306:52:0;;18679:2:1;20306:52:0;;;18661:21:1;18718:2;18698:18;;;18691:30;18757:31;18737:18;;;18730:59;18806:18;;20306:52:0;18477:353:1;20306:52:0;20376:13;;;;;;;20371:183;;-1:-1:-1;;;;;20432:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;20461:23:0;;;;;;:19;:23;;;;;;;;20432:52;20406:136;;;;-1:-1:-1;;;20406:136:0;;19037:2:1;20406:136:0;;;19019:21:1;19076:2;19056:18;;;19049:30;-1:-1:-1;;;19095:18:1;;;19088:52;19157:18;;20406:136:0;18835:346:1;20406:136:0;20570:18;;:22;20566:247;;-1:-1:-1;;;;;20636:17:0;;;;;;:11;:17;;;;;;;;20635:18;;:35;;-1:-1:-1;9094:6:0;;-1:-1:-1;;;;;20657:13:0;;;9094:6;;20657:13;20635:35;:60;;;-1:-1:-1;;;;;;20674:21:0;;20688:6;20674:21;20635:60;20609:192;;;;-1:-1:-1;;;20609:192:0;;19388:2:1;20609:192:0;;;19370:21:1;19427:2;19407:18;;;19400:30;19466:34;19446:18;;;19439:62;19537:34;19517:18;;;19510:62;-1:-1:-1;;;19588:19:1;;;19581:37;19635:19;;20609:192:0;19186:474:1;20609:192:0;20829:14;;;;20825:2381;;;9094:6;;-1:-1:-1;;;;;20882:15:0;;;9094:6;;20882:15;;;;:49;;-1:-1:-1;9094:6:0;;-1:-1:-1;;;;;20918:13:0;;;9094:6;;20918:13;;20882:49;:86;;;;-1:-1:-1;;;;;;20952:16:0;;;;20882:86;:128;;;;-1:-1:-1;;;;;;20989:21:0;;21003:6;20989:21;;20882:128;:175;;;;-1:-1:-1;;;;;;21032:25:0;;;;;;:19;:25;;;;;;;;21031:26;20882:175;:220;;;;-1:-1:-1;;;;;;21079:23:0;;;;;;:19;:23;;;;;;;;21078:24;20882:220;20860:2335;;;21273:20;;;;21269:692;;;21336:9;;-1:-1:-1;;;;;21322:24:0;;;21336:9;;21322:24;;;;:49;;-1:-1:-1;21364:6:0;;-1:-1:-1;;;;;21350:21:0;;;21364:6;;21350:21;;21322:49;21318:624;;;21513:16;21528:1;21513:12;:16;:::i;:::-;21467:9;21438:39;;;;:28;:39;;;;;;:91;:212;;;;-1:-1:-1;21634:16:0;21649:1;21634:12;:16;:::i;:::-;-1:-1:-1;;;;;21566:32:0;;;;;;:28;:32;;;;;;:84;21438:212;21400:363;;;;-1:-1:-1;;;21400:363:0;;20000:2:1;21400:363:0;;;19982:21:1;20039:2;20019:18;;;20012:30;20078:34;20058:18;;;20051:62;-1:-1:-1;;;20129:18:1;;;20122:51;20190:19;;21400:363:0;19798:417:1;21400:363:0;21819:9;21790:39;;;;:28;:39;;;;;;21832:12;21790:54;;;;-1:-1:-1;;;;;21871:32:0;;;;;;:47;21318:624;-1:-1:-1;;;;;22035:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;22092:35:0;;;;;;:31;:35;;;;;;;;22091:36;22035:92;22009:1171;;;22214:12;;22204:6;:22;;22170:148;;;;-1:-1:-1;;;22170:148:0;;20422:2:1;22170:148:0;;;20404:21:1;20461:2;20441:18;;;20434:30;20500:34;20480:18;;;20473:62;-1:-1:-1;;;20551:18:1;;;20544:38;20599:19;;22170:148:0;20220:404:1;22170:148:0;22401:9;;22391:6;22375:13;22385:2;22375:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;22341:140;;;;-1:-1:-1;;;22341:140:0;;20831:2:1;22341:140:0;;;20813:21:1;20870:2;20850:18;;;20843:30;-1:-1:-1;;;20889:18:1;;;20882:49;20948:18;;22341:140:0;20629:343:1;22341:140:0;22009:1171;;;-1:-1:-1;;;;;22579:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;22634:37:0;;;;;;:31;:37;;;;;;;;22633:38;22579:92;22553:627;;;22722:14;;;;22714:43;;;;-1:-1:-1;;;22714:43:0;;21179:2:1;22714:43:0;;;21161:21:1;21218:2;21198:18;;;21191:30;-1:-1:-1;;;21237:18:1;;;21230:46;21293:18;;22714:43:0;20977:340:1;22714:43:0;22824:12;;22814:6;:22;;22780:149;;;;-1:-1:-1;;;22780:149:0;;21524:2:1;22780:149:0;;;21506:21:1;21563:2;21543:18;;;21536:30;21602:34;21582:18;;;21575:62;-1:-1:-1;;;21653:18:1;;;21646:39;21702:19;;22780:149:0;21322:405:1;22553:627:0;-1:-1:-1;;;;;22960:35:0;;;;;;:31;:35;;;;;;;;22955:225;;23080:9;;23070:6;23054:13;23064:2;23054:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;23020:140;;;;-1:-1:-1;;;23020:140:0;;20831:2:1;23020:140:0;;;20813:21:1;20870:2;20850:18;;;20843:30;-1:-1:-1;;;20889:18:1;;;20882:49;20948:18;;23020:140:0;20629:343:1;23020:140:0;23218:28;23249:24;23267:4;23249:9;:24::i;:::-;23325:18;;23218:55;;-1:-1:-1;23301:42:0;;;;;;;23374:35;;-1:-1:-1;23398:11:0;;;;;;;23374:35;:61;;;;-1:-1:-1;23427:8:0;;-1:-1:-1;;;23427:8:0;;;;23426:9;23374:61;:110;;;;-1:-1:-1;;;;;;23453:31:0;;;;;;:25;:31;;;;;;;;23452:32;23374:110;:153;;;;-1:-1:-1;;;;;;23502:25:0;;;;;;:19;:25;;;;;;;;23501:26;23374:153;:194;;;;-1:-1:-1;;;;;;23545:23:0;;;;;;:19;:23;;;;;;;;23544:24;23374:194;23356:510;;;23595:8;:15;;-1:-1:-1;;;;23595:15:0;-1:-1:-1;;;23595:15:0;;;23654:18;;:23;;23595:8;23654:23;:::i;:::-;23631:20;:46;23627:133;;;23721:18;;:23;;23742:2;23721:23;:::i;:::-;23698:46;;23627:133;23776:45;23800:20;23776:23;:45::i;:::-;23838:8;:16;;-1:-1:-1;;;;23838:16:0;;;23356:510;-1:-1:-1;;;;;23997:25:0;;23878:12;23997:25;;;:19;:25;;;;;;23893:4;;23997:25;;;:52;;-1:-1:-1;;;;;;24026:23:0;;;;;;:19;:23;;;;;;;;23997:52;23993:100;;;-1:-1:-1;24076:5:0;23993:100;24105:12;24132:18;24165:23;24203:31;24325:7;24321:1967;;;26444:18;;26429:12;:33;24407:77;;;;-1:-1:-1;;;;;;24453:31:0;;;;;;:25;:31;;;;;;;;24407:77;:128;;;;-1:-1:-1;;;;;;24506:29:0;;;;;;:25;:29;;;;;;;;24505:30;24407:128;:165;;;;;24571:1;24556:12;;:16;24407:165;24385:1387;;;-1:-1:-1;;;;;24612:15:0;;;;;;:11;:15;;;;;;;;24607:173;;-1:-1:-1;;;;;24652:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;24652:22:0;24670:4;24652:22;;;;;;24697:10;:15;;24670:4;;24697:10;;:15;;24670:4;;24697:15;:::i;:::-;;;;-1:-1:-1;;24740:20:0;;-1:-1:-1;;;;;749:32:1;;731:51;;24740:20:0;;719:2:1;704:18;24740:20:0;;;;;;;24607:173;-1:-1:-1;24824:4:0;24870:3;24855:11;:6;24864:2;24855:11;:::i;:::-;24854:19;;;;:::i;:::-;24847:26;;24937:12;;24918:15;;24911:4;:22;;;;:::i;:::-;24910:39;;;;:::i;:::-;24892:57;;25003:12;;24989:10;;24982:4;:17;;;;:::i;:::-;24981:34;;;;:::i;:::-;24968:47;;24385:1387;;;-1:-1:-1;;;;;25078:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;25127:1;25111:13;;:17;25078:50;25074:698;;;25175:2;25149:28;;12192:5;25213:13;;25204:6;:22;;;;:::i;:::-;25203:38;;;;:::i;:::-;25196:45;;25306:13;;25286:16;;25279:4;:23;;;;:::i;:::-;25278:41;;;;:::i;:::-;25260:59;;25374:13;;25359:11;;25352:4;:18;;;;:::i;25074:698::-;-1:-1:-1;;;;;25449:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;25499:1;25484:12;;:16;25449:51;25445:327;;;25547:4;25521:30;;12192:5;25587:12;;25578:6;:21;;;;:::i;:::-;25577:37;;;;:::i;:::-;25570:44;;25678:12;;25659:15;;25652:4;:22;;;;:::i;:::-;25651:39;;;;:::i;:::-;25633:57;;25744:12;;25730:10;;25723:4;:17;;;;:::i;:::-;25722:34;;;;:::i;:::-;25709:47;;25445:327;25792:8;;25788:460;;25821:42;25837:4;25851;25858;25821:15;:42::i;:::-;25886:14;;25882:95;;25925:32;25939:4;25946:10;25925:5;:32::i;:::-;25999:19;;25995:238;;26043:170;26093:4;26125:23;26175:15;26043;:170::i;:::-;26262:14;26272:4;26262:14;;:::i;:::-;;;24321:1967;26300:33;26316:4;26322:2;26326:6;26300:15;:33::i;:::-;20141:6200;;;;;;;20028:6313;;;:::o;18749:240::-;-1:-1:-1;;;;;18832:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;18832:39:0;;;;;;;18884;18832:31;:39;18884:26;:39::i;26478:591::-;26635:16;;;26649:1;26635:16;;;;;;;;26611:21;;26635:16;;;;;;;;;;-1:-1:-1;26635:16:0;26611:40;;26680:4;26662;26667:1;26662:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26662:23:0;;;:7;;;;;;;;;;:23;;;;26706:9;;:16;;;-1:-1:-1;;;26706:16:0;;;;:9;;;;;:14;;:16;;;;;26662:7;;26706:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26696:4;26701:1;26696:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26696:26:0;;;:7;;;;;;;;;:26;26767:9;;26735:56;;26752:4;;26767:9;26779:11;26735:8;:56::i;:::-;26830:9;;27002:17;;26830:231;;-1:-1:-1;;;26830:231:0;;-1:-1:-1;;;;;26830:9:0;;;;:60;;:231;;26905:11;;26830:9;;26975:4;;27002:17;;;27035:15;;26830:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26540:529;26478:591;:::o;6759:651::-;-1:-1:-1;;;;;6899:20:0;;6891:70;;;;-1:-1:-1;;;6891:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6980:23:0;;6972:71;;;;-1:-1:-1;;;6972:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7080:17:0;;7056:21;7080:17;;;;;;;;;;;7130:23;;;;7108:111;;;;-1:-1:-1;;;7108:111:0;;23439:2:1;7108:111:0;;;23421:21:1;23478:2;23458:18;;;23451:30;23517:34;23497:18;;;23490:62;-1:-1:-1;;;23568:18:1;;;23561:36;23614:19;;7108:111:0;23237:402:1;7108:111:0;-1:-1:-1;;;;;7255:17:0;;;:9;:17;;;;;;;;;;;7275:22;;;7255:42;;7319:20;;;;;;;;:30;;7291:6;;7255:9;7319:30;;7291:6;;7319:30;:::i;:::-;;;;;;;;7384:9;-1:-1:-1;;;;;7367:35:0;7376:6;-1:-1:-1;;;;;7367:35:0;;7395:6;7367:35;;;;2160:25:1;;2148:2;2133:18;;2014:177;7367:35:0;;;;;;;;6880:530;6759:651;;;:::o;7740:550::-;-1:-1:-1;;;;;7824:21:0;;7816:67;;;;-1:-1:-1;;;7816:67:0;;23846:2:1;7816:67:0;;;23828:21:1;23885:2;23865:18;;;23858:30;23924:34;23904:18;;;23897:62;-1:-1:-1;;;23975:18:1;;;23968:31;24016:19;;7816:67:0;23644:397:1;7816:67:0;-1:-1:-1;;;;;7919:18:0;;7894:22;7919:18;;;;;;;;;;;7956:24;;;;7948:71;;;;-1:-1:-1;;;7948:71:0;;24248:2:1;7948:71:0;;;24230:21:1;24287:2;24267:18;;;24260:30;24326:34;24306:18;;;24299:62;-1:-1:-1;;;24377:18:1;;;24370:32;24419:19;;7948:71:0;24046:398:1;7948:71:0;-1:-1:-1;;;;;8055:18:0;;:9;:18;;;;;;;;;;;8076:23;;;8055:44;;8194:12;:22;;;;;;;8245:37;2160:25:1;;;8055:9:0;;:18;8245:37;;2133:18:1;8245:37:0;2014:177:1;17815:221:0;-1:-1:-1;;;;;17917:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;17917:52:0;;;;;;;;;;17985:43;;24617:51:1;;;24684:18;;;24677:50;17985:43:0;;24590:18:1;17985:43:0;;;;;;;17815:221;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;848:70;793:131;:::o;929:315::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1441:316::-;1518:6;1526;1534;1587:2;1575:9;1566:7;1562:23;1558:32;1555:52;;;1603:1;1600;1593:12;1555:52;-1:-1:-1;;1626:23:1;;;1696:2;1681:18;;1668:32;;-1:-1:-1;1747:2:1;1732:18;;;1719:32;;1441:316;-1:-1:-1;1441:316:1:o;1762:247::-;1821:6;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1929:9;1916:23;1948:31;1973:5;1948:31;:::i;:::-;1998:5;1762:247;-1:-1:-1;;;1762:247:1:o;2196:180::-;2255:6;2308:2;2296:9;2287:7;2283:23;2279:32;2276:52;;;2324:1;2321;2314:12;2276:52;-1:-1:-1;2347:23:1;;2196:180;-1:-1:-1;2196:180:1:o;2381:456::-;2458:6;2466;2474;2527:2;2515:9;2506:7;2502:23;2498:32;2495:52;;;2543:1;2540;2533:12;2495:52;2582:9;2569:23;2601:31;2626:5;2601:31;:::i;:::-;2651:5;-1:-1:-1;2708:2:1;2693:18;;2680:32;2721:33;2680:32;2721:33;:::i;:::-;2381:456;;2773:7;;-1:-1:-1;;;2827:2:1;2812:18;;;;2799:32;;2381:456::o;3239:118::-;3325:5;3318:13;3311:21;3304:5;3301:32;3291:60;;3347:1;3344;3337:12;3362:382;3427:6;3435;3488:2;3476:9;3467:7;3463:23;3459:32;3456:52;;;3504:1;3501;3494:12;3456:52;3543:9;3530:23;3562:31;3587:5;3562:31;:::i;:::-;3612:5;-1:-1:-1;3669:2:1;3654:18;;3641:32;3682:30;3641:32;3682:30;:::i;:::-;3731:7;3721:17;;;3362:382;;;;;:::o;3749:388::-;3817:6;3825;3878:2;3866:9;3857:7;3853:23;3849:32;3846:52;;;3894:1;3891;3884:12;3846:52;3933:9;3920:23;3952:31;3977:5;3952:31;:::i;:::-;4002:5;-1:-1:-1;4059:2:1;4044:18;;4031:32;4072:33;4031:32;4072:33;:::i;4142:241::-;4198:6;4251:2;4239:9;4230:7;4226:23;4222:32;4219:52;;;4267:1;4264;4257:12;4219:52;4306:9;4293:23;4325:28;4347:5;4325:28;:::i;4388:380::-;4467:1;4463:12;;;;4510;;;4531:61;;4585:4;4577:6;4573:17;4563:27;;4531:61;4638:2;4630:6;4627:14;4607:18;4604:38;4601:161;;4684:10;4679:3;4675:20;4672:1;4665:31;4719:4;4716:1;4709:15;4747:4;4744:1;4737:15;4601:161;;4388:380;;;:::o;4773:356::-;4975:2;4957:21;;;4994:18;;;4987:30;5053:34;5048:2;5033:18;;5026:62;5120:2;5105:18;;4773:356::o;5134:127::-;5195:10;5190:3;5186:20;5183:1;5176:31;5226:4;5223:1;5216:15;5250:4;5247:1;5240:15;5266:125;5331:9;;;5352:10;;;5349:36;;;5365:18;;:::i;5753:422::-;5842:1;5885:5;5842:1;5899:270;5920:7;5910:8;5907:21;5899:270;;;5979:4;5975:1;5971:6;5967:17;5961:4;5958:27;5955:53;;;5988:18;;:::i;:::-;6038:7;6028:8;6024:22;6021:55;;;6058:16;;;;6021:55;6137:22;;;;6097:15;;;;5899:270;;;5903:3;5753:422;;;;;:::o;6180:806::-;6229:5;6259:8;6249:80;;-1:-1:-1;6300:1:1;6314:5;;6249:80;6348:4;6338:76;;-1:-1:-1;6385:1:1;6399:5;;6338:76;6430:4;6448:1;6443:59;;;;6516:1;6511:130;;;;6423:218;;6443:59;6473:1;6464:10;;6487:5;;;6511:130;6548:3;6538:8;6535:17;6532:43;;;6555:18;;:::i;:::-;-1:-1:-1;;6611:1:1;6597:16;;6626:5;;6423:218;;6725:2;6715:8;6712:16;6706:3;6700:4;6697:13;6693:36;6687:2;6677:8;6674:16;6669:2;6663:4;6660:12;6656:35;6653:77;6650:159;;;-1:-1:-1;6762:19:1;;;6794:5;;6650:159;6841:34;6866:8;6860:4;6841:34;:::i;:::-;6911:6;6907:1;6903:6;6899:19;6890:7;6887:32;6884:58;;;6922:18;;:::i;:::-;6960:20;;6180:806;-1:-1:-1;;;6180:806:1:o;6991:140::-;7049:5;7078:47;7119:4;7109:8;7105:19;7099:4;7078:47;:::i;7136:168::-;7209:9;;;7240;;7257:15;;;7251:22;;7237:37;7227:71;;7278:18;;:::i;7309:217::-;7349:1;7375;7365:132;;7419:10;7414:3;7410:20;7407:1;7400:31;7454:4;7451:1;7444:15;7482:4;7479:1;7472:15;7365:132;-1:-1:-1;7511:9:1;;7309:217::o;7531:405::-;7733:2;7715:21;;;7772:2;7752:18;;;7745:30;7811:34;7806:2;7791:18;;7784:62;-1:-1:-1;;;7877:2:1;7862:18;;7855:39;7926:3;7911:19;;7531:405::o;10229:184::-;10299:6;10352:2;10340:9;10331:7;10327:23;10323:32;10320:52;;;10368:1;10365;10358:12;10320:52;-1:-1:-1;10391:16:1;;10229:184;-1:-1:-1;10229:184:1:o;10697:245::-;10764:6;10817:2;10805:9;10796:7;10792:23;10788:32;10785:52;;;10833:1;10830;10823:12;10785:52;10865:9;10859:16;10884:28;10906:5;10884:28;:::i;10947:407::-;11149:2;11131:21;;;11188:2;11168:18;;;11161:30;11227:34;11222:2;11207:18;;11200:62;-1:-1:-1;;;11293:2:1;11278:18;;11271:41;11344:3;11329:19;;10947:407::o;11767:399::-;11969:2;11951:21;;;12008:2;11988:18;;;11981:30;12047:34;12042:2;12027:18;;12020:62;-1:-1:-1;;;12113:2:1;12098:18;;12091:33;12156:3;12141:19;;11767:399::o;13190:306::-;13278:6;13286;13294;13347:2;13335:9;13326:7;13322:23;13318:32;13315:52;;;13363:1;13360;13353:12;13315:52;13392:9;13386:16;13376:26;;13442:2;13431:9;13427:18;13421:25;13411:35;;13486:2;13475:9;13471:18;13465:25;13455:35;;13190:306;;;;;:::o;17667:401::-;17869:2;17851:21;;;17908:2;17888:18;;;17881:30;17947:34;17942:2;17927:18;;17920:62;-1:-1:-1;;;18013:2:1;17998:18;;17991:35;18058:3;18043:19;;17667:401::o;18073:399::-;18275:2;18257:21;;;18314:2;18294:18;;;18287:30;18353:34;18348:2;18333:18;;18326:62;-1:-1:-1;;;18419:2:1;18404:18;;18397:33;18462:3;18447:19;;18073:399::o;19665:128::-;19732:9;;;19753:11;;;19750:37;;;19767:18;;:::i;21864:127::-;21925:10;21920:3;21916:20;21913:1;21906:31;21956:4;21953:1;21946:15;21980:4;21977:1;21970:15;21996:251;22066:6;22119:2;22107:9;22098:7;22094:23;22090:32;22087:52;;;22135:1;22132;22125:12;22087:52;22167:9;22161:16;22186:31;22211:5;22186:31;:::i;22252:980::-;22514:4;22562:3;22551:9;22547:19;22593:6;22582:9;22575:25;22619:2;22657:6;22652:2;22641:9;22637:18;22630:34;22700:3;22695:2;22684:9;22680:18;22673:31;22724:6;22759;22753:13;22790:6;22782;22775:22;22828:3;22817:9;22813:19;22806:26;;22867:2;22859:6;22855:15;22841:29;;22888:1;22898:195;22912:6;22909:1;22906:13;22898:195;;;22977:13;;-1:-1:-1;;;;;22973:39:1;22961:52;;23068:15;;;;23033:12;;;;23009:1;22927:9;22898:195;;;-1:-1:-1;;;;;;;23149:32:1;;;;23144:2;23129:18;;23122:60;-1:-1:-1;;;23213:3:1;23198:19;23191:35;23110:3;22252:980;-1:-1:-1;;;22252:980:1:o
Swarm Source
ipfs://f3fd0acac83410d7034da57ae95b169f9991a5812fbf383ab0f15b69e720f797
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.