Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 YACHT
Holders
57
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,886,150,445.201465843 YACHTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
YachtClubInu
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-26 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IFactoryV2 { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IV2Pair { function factory() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); } interface IRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IRouter02 is IRouter01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } interface AntiSnipe { function checkUser(address from, address to, uint256 amt) external returns (bool); function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external; function setLpPair(address pair, bool enabled) external; function setProtections(bool _as, bool _ag, bool _ab, bool _algo) external; function setGasPriceLimit(uint256 gas) external; function removeSniper(address account) external; function getSniperAmt() external view returns (uint256); function isBlacklisted(address account) external view returns (bool); function setBlacklistEnabled(address account, bool enabled) external; function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external; function getTax() external view returns (bool); } contract YachtClubInu is Context, IERC20 { // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedFromLimits; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private _liquidityHolders; uint256 constant private startingSupply = 1_000_000_000_000; string constant private _name = "Yacht Club Inu"; string constant private _symbol = "YACHT"; uint8 constant private _decimals = 9; uint256 constant private _tTotal = startingSupply * 10**_decimals; uint256 constant private MAX = ~uint256(0); uint256 private _rTotal = (MAX - (MAX % _tTotal)); struct Fees { uint16 reflect; uint16 liquidity; uint16 marketing; uint16 development; uint16 totalSwap; } struct Ratios { uint16 liquidity; uint16 marketing; uint16 development; uint16 total; } Fees public _buyTaxes = Fees({ reflect: 100, liquidity: 200, marketing: 400, development: 400, totalSwap: 1000 }); Fees public _sellTaxes = Fees({ reflect: 100, liquidity: 1000, marketing: 700, development: 700, totalSwap: 2400 }); Fees public _transferTaxes = Fees({ reflect: 100, liquidity: 200, marketing: 400, development: 400, totalSwap: 1000 }); Ratios public _ratios = Ratios({ liquidity: 12, marketing: 11, development: 11, total: 34 }); uint256 constant public maxBuyTaxes = 2000; uint256 constant public maxSellTaxes = 2000; uint256 constant public maxTransferTaxes = 2000; uint256 constant masterTaxDivisor = 10000; IRouter02 public dexRouter; address public lpPair; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; struct TaxWallets { address payable marketing; address payable development; } TaxWallets public _taxWallets = TaxWallets({ marketing: payable(0x7DddfEFd3251a79231CFa3f1aDd55E10f41092B1), development: payable(0x44900eA3323a93f60bc622c8F68F1e01b752D012) }); bool inSwap; bool public contractSwapEnabled = false; uint256 public contractSwapTimer = 10 seconds; uint256 private lastSwap; uint256 public swapThreshold = (_tTotal * 5) / 10000; uint256 public swapAmount = (_tTotal * 20) / 10000; uint256 private _maxTxAmount = 100; uint256 private _maxWalletSize = 200; bool public tradingEnabled = false; bool public _hasLiqBeenAdded = false; AntiSnipe antiSnipe; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ContractSwapEnabledUpdated(bool enabled); event AutoLiquify(uint256 amountCurrency, uint256 amountTokens); modifier lockTheSwap { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Caller =/= owner."); _; } constructor () payable { _rOwned[msg.sender] = _rTotal; // Set the owner. _owner = msg.sender; if (block.chainid == 56) { dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E); contractSwapTimer = 3 seconds; } else if (block.chainid == 97) { dexRouter = IRouter02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); contractSwapTimer = 3 seconds; } else if (block.chainid == 1 || block.chainid == 4) { dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); contractSwapTimer = 10 seconds; } else { revert(); } lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _approve(msg.sender, address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _liquidityHolders[owner()] = true; emit Transfer(address(0), _msgSender(), _tTotal); _transfer(_owner, DEAD, (_tTotal / 2)); } receive() external payable {} //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and renouncements. // This allows for removal of ownership privileges from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFees(_owner, false); setExcludedFromFees(newOwner, true); if(balanceOf(_owner) > 0) { _transfer(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFees(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) private { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveContractContingency() public onlyOwner returns (bool) { _approve(address(this), address(dexRouter), type(uint256).max); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transfer(sender, recipient, amount); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function setNewRouter(address newRouter) public onlyOwner() { IRouter02 _newRouter = IRouter02(newRouter); address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = get_pair; } dexRouter = _newRouter; _approve(address(this), address(dexRouter), type(uint256).max); } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPairs[pair] = false; antiSnipe.setLpPair(pair, false); } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!"); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; antiSnipe.setLpPair(pair, true); } } function getCirculatingSupply() public view returns (uint256) { return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0)))); } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludedFromReward(address account, bool enabled) public onlyOwner { if (enabled) { require(!_isExcluded[account], "Account is already excluded."); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; if(account != lpPair){ _excluded.push(account); } } else if (!enabled) { require(_isExcluded[account], "Account is already included."); if (account == lpPair) { _rOwned[account] = _tOwned[account] * _getRate(); _tOwned[account] = 0; _isExcluded[account] = false; } else if(_excluded.length == 1) { _rOwned[account] = _tOwned[account] * _getRate(); _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); } else { for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _rOwned[account] = _tOwned[account] * _getRate(); _isExcluded[account] = false; _excluded.pop(); break; } } } } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } function setInitializer(address initializer) external onlyOwner { require(!_hasLiqBeenAdded, "Liquidity is already in."); require(initializer != address(this), "Can't be self."); antiSnipe = AntiSnipe(initializer); } function setBlacklistEnabled(address account, bool enabled) external onlyOwner { antiSnipe.setBlacklistEnabled(account, enabled); } function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner { antiSnipe.setBlacklistEnabledMultiple(accounts, enabled); } function isBlacklisted(address account) public view returns (bool) { return antiSnipe.isBlacklisted(account); } function getSniperAmt() public view returns (uint256) { return antiSnipe.getSniperAmt(); } function removeSniper(address account) external onlyOwner { antiSnipe.removeSniper(account); } function setProtectionSettings(bool _antiSnipe, bool _antiGas, bool _antiBlock, bool _algo) external onlyOwner { antiSnipe.setProtections(_antiSnipe, _antiGas, _antiBlock, _algo); } function setGasPriceLimit(uint256 gas) external onlyOwner { require(gas >= 150, "Too low."); antiSnipe.setGasPriceLimit(gas); } function lowerTaxesAfter24Hrs() external onlyOwner { _sellTaxes.liquidity = 200; _sellTaxes.reflect = 100; _sellTaxes.marketing = 400; _sellTaxes.development = 400; _sellTaxes.totalSwap = 1000; _ratios.liquidity = 2; _ratios.marketing = 4; _ratios.development = 4; _ratios.total = 10; } function setTaxesBuy(uint16 reflect, uint16 liquidity, uint16 marketing, uint16 development) external onlyOwner { uint16 check = reflect + liquidity + marketing + development; require(check <= maxBuyTaxes); _buyTaxes.liquidity = liquidity; _buyTaxes.reflect = reflect; _buyTaxes.marketing = marketing; _buyTaxes.development = development; _buyTaxes.totalSwap = check - reflect; } function setTaxesSell(uint16 reflect, uint16 liquidity, uint16 marketing, uint16 development) external onlyOwner { uint16 check = reflect + liquidity + marketing + development; require(check <= maxBuyTaxes); _sellTaxes.liquidity = liquidity; _sellTaxes.reflect = reflect; _sellTaxes.marketing = marketing; _sellTaxes.development = development; _sellTaxes.totalSwap = check - reflect; } function setTaxesTransfer(uint16 reflect, uint16 liquidity, uint16 marketing, uint16 development) external onlyOwner { uint16 check = reflect + liquidity + marketing + development; require(check <= maxBuyTaxes); _transferTaxes.liquidity = liquidity; _transferTaxes.reflect = reflect; _transferTaxes.marketing = marketing; _transferTaxes.development = development; _transferTaxes.totalSwap = check - reflect; } function setRatios(uint16 liquidity, uint16 marketing, uint16 development) external onlyOwner { _ratios.liquidity = liquidity; _ratios.marketing = marketing; _ratios.development = development; _ratios.total = liquidity + marketing + development; } function setMaxTxPercent(uint256 percent) external onlyOwner { require(percent >= 10, "Max transaction amt must be above 0.1% of total supply."); _maxTxAmount = percent; } function setMaxWalletSize(uint256 percent) external onlyOwner { require(percent >= 50, "Max wallet amt must be above 0.5% of total supply."); _maxWalletSize = percent; } function setExcludedFromLimits(address account, bool enabled) external onlyOwner { _isExcludedFromLimits[account] = enabled; } function isExcludedFromLimits(address account) public view returns (bool) { return _isExcludedFromLimits[account]; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function getMaxTX() public view returns (uint256) { return ((getCirculatingSupply() * _maxTxAmount) / 10000) / (10**_decimals); } function getMaxWallet() public view returns (uint256) { return ((getCirculatingSupply() * _maxWalletSize) / 10000) / (10**_decimals); } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; contractSwapTimer = time; } function setWallets(address payable marketing, address payable development) external onlyOwner { _taxWallets.development = payable(development); _taxWallets.marketing = payable(marketing); } function setContractSwapEnabled(bool enabled) external onlyOwner { contractSwapEnabled = enabled; emit ContractSwapEnabledUpdated(enabled); } function _hasLimits(address from, address to) private view returns (bool) { return from != owner() && to != owner() && tx.origin != owner() && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(_hasLimits(from, to)) { if(!tradingEnabled) { revert("Trading not yet enabled!"); } if(lpPairs[from] || lpPairs[to]){ if (_maxTxAmount < 10000) { require(amount <= (_maxTxAmount * getCirculatingSupply()) / 10000, "Transfer amount exceeds the maxTxAmount."); } } if(to != address(dexRouter) && !lpPairs[to] && _maxWalletSize < 10000) { require(balanceOf(to) + amount <= (_maxWalletSize * getCirculatingSupply()) / 10000, "Transfer amount exceeds the maxWalletSize."); } } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } if (lpPairs[to]) { if (!inSwap && contractSwapEnabled ) { if (lastSwap + contractSwapTimer < block.timestamp) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } contractSwap(contractTokenBalance); lastSwap = block.timestamp; } } } } return _finalizeTransfer(from, to, amount, takeFee); } function contractSwap(uint256 contractTokenBalance) private lockTheSwap { Ratios memory ratios = _ratios; if (ratios.total == 0) { return; } if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) { _allowances[address(this)][address(dexRouter)] = type(uint256).max; } uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.total) / 2; uint256 swapAmt = contractTokenBalance - toLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( swapAmt, 0, path, address(this), block.timestamp ); uint256 amtBalance = address(this).balance; uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt; if (toLiquify > 0) { dexRouter.addLiquidityETH{value: liquidityBalance}( address(this), toLiquify, 0, 0, DEAD, block.timestamp ); emit AutoLiquify(liquidityBalance, toLiquify); } amtBalance -= liquidityBalance; ratios.total -= ratios.liquidity; uint256 developmentBalance = (amtBalance * ratios.development) / ratios.total; uint256 marketingBalance = amtBalance - developmentBalance; if (ratios.development > 0) { _taxWallets.development.transfer(developmentBalance); } if (ratios.marketing > 0) { _taxWallets.marketing.transfer(marketingBalance); } } function _checkLiquidityAdd(address from, address to) private { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _hasLiqBeenAdded = true; if(address(antiSnipe) == address(0)){ antiSnipe = AntiSnipe(address(this)); } contractSwapEnabled = true; emit ContractSwapEnabledUpdated(true); } } function enableTrading() public onlyOwner { require(!tradingEnabled, "Trading already enabled!"); require(_hasLiqBeenAdded, "Liquidity must be added."); if(address(antiSnipe) == address(0)){ antiSnipe = AntiSnipe(address(this)); } try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {} tradingEnabled = true; } function sweepContingency() external onlyOwner { require(!_hasLiqBeenAdded, "Cannot call after liquidity."); payable(owner()).transfer(address(this).balance); } function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external { require(accounts.length == amounts.length, "Lengths do not match."); for (uint8 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= amounts[i]); _transfer(msg.sender, accounts[i], amounts[i]*10**_decimals); } } function multiSendPercents(address[] memory accounts, uint256[] memory percents, uint256[] memory divisors) external { require(accounts.length == percents.length && percents.length == divisors.length, "Lengths do not match."); for (uint8 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= (_tTotal * percents[i]) / divisors[i]); _transfer(msg.sender, accounts[i], (_tTotal * percents[i]) / divisors[i]); } } struct ExtraValues { uint256 tTransferAmount; uint256 tFee; uint256 tSwap; uint256 rTransferAmount; uint256 rAmount; uint256 rFee; uint256 currentRate; } function _finalizeTransfer(address from, address to, uint256 tAmount, bool takeFee) private returns (bool) { if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } ExtraValues memory values = _getValues(from, to, tAmount, takeFee); _rOwned[from] -= values.rAmount; _rOwned[to] += values.rTransferAmount; if (_isExcluded[from]) { _tOwned[from] = _tOwned[from] - tAmount; } if (_isExcluded[to]) { _tOwned[to] = _tOwned[to] + values.tTransferAmount; } if (values.rFee > 0 || values.tFee > 0) { _rTotal -= values.rFee; } emit Transfer(from, to, values.tTransferAmount); return true; } function _getValues(address from, address to, uint256 tAmount, bool takeFee) private returns (ExtraValues memory) { ExtraValues memory values; values.currentRate = _getRate(); values.rAmount = tAmount * values.currentRate; if (_hasLimits(from, to)) { bool checked; try antiSnipe.checkUser(from, to, tAmount) returns (bool check) { checked = check; } catch { revert(); } if(!checked) { revert(); } } if(takeFee) { uint256 currentReflect; uint256 currentSwap; uint256 divisor = masterTaxDivisor; bool increasedTax = antiSnipe.getTax(); if (increasedTax) { currentReflect = 4400; currentSwap = 4400; } else if (lpPairs[to]) { currentReflect = _sellTaxes.reflect; currentSwap = _sellTaxes.totalSwap; } else if (lpPairs[from]) { currentReflect = _buyTaxes.reflect; currentSwap = _buyTaxes.totalSwap; } else { currentReflect = _transferTaxes.reflect; currentSwap = _transferTaxes.totalSwap; } values.tFee = (tAmount * currentReflect) / divisor; values.tSwap = (tAmount * currentSwap) / divisor; values.tTransferAmount = tAmount - (values.tFee + values.tSwap); values.rFee = values.tFee * values.currentRate; } else { values.tFee = 0; values.tSwap = 0; values.tTransferAmount = tAmount; values.rFee = 0; } if (values.tSwap > 0) { _rOwned[address(this)] += values.tSwap * values.currentRate; if(_isExcluded[address(this)]) { _tOwned[address(this)] += values.tSwap; } emit Transfer(from, address(this), values.tSwap); // Transparency is the key to success. } values.rTransferAmount = values.rAmount - (values.rFee + (values.tSwap * values.currentRate)); return values; } function _getRate() internal view returns(uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if(_isExcluded[lpPair]) { if (_rOwned[lpPair] > rSupply || _tOwned[lpPair] > tSupply) return _rTotal / _tTotal; rSupply -= _rOwned[lpPair]; tSupply -= _tOwned[lpPair]; } if(_excluded.length > 0) { for (uint8 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return _rTotal / _tTotal; rSupply = rSupply - _rOwned[_excluded[i]]; tSupply = tSupply - _tOwned[_excluded[i]]; } } if (rSupply < _rTotal / _tTotal) return _rTotal / _tTotal; return rSupply / tSupply; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSniperAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lowerTaxesAfter24Hrs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"percents","type":"uint256[]"},{"internalType":"uint256[]","name":"divisors","type":"uint256[]"}],"name":"multiSendPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setTaxesTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600455620000176009600a62001e56565b620000289064e8d4a5100062001e67565b620000369060001962001e9f565b620000449060001962001eb6565b600b9081556040805160a08082018352606480835260c8602080850182905261019085870181905260608087018290526103e86080978801819052600c80546001600160501b03199081166903e80190019000c8006490811783558b51808b018d528981528088018590526102bc818e0181905281870152610960908c0152600d8054831669096002bc02bc03e800641790558b51998a018c5297895288860196909652878a018490528783019390935295870195909552600e805490931690931790915584519384018552908352828101859052828401949094526022910152600f80546001600160401b0319166622000b000b000c1790558051808201909152737dddfefd3251a79231cfa3f1add55e10f41092b18082527344900ea3323a93f60bc622c8f68f1e01b752d01291909201819052601280546001600160a01b03199081169093179055601380549092161790556014805461ff0019169055600a601581905561271090620001bd9060099062001e56565b620001ce9064e8d4a5100062001e67565b620001db90600562001e67565b620001e7919062001ed0565b601755612710620001fb6009600a62001e56565b6200020c9064e8d4a5100062001e67565b6200021990601462001e67565b62000225919062001ed0565b601855606460195560c8601a55601b805461ffff19169055600b543360008181526001602052604081209290925581546001600160a01b03191617905560384614156200029d57601080546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055600360155562000324565b4660611415620002d857601080546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055600360155562000324565b4660011480620002e85750466004145b156200031f57601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600a60155562000324565b600080fd5b601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039e919062001ee7565b6001600160a01b031663c9c65396601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000400573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000426919062001ee7565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000499919062001ee7565b601180546001600160a01b0319166001600160a01b039283169081179091556000908152600360205260409020805460ff19166001179055601054620004e5913391166000196200066b565b601054620005019030906001600160a01b03166000196200066b565b6001600660006200051a6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280549093168117909255600a90620005a26000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620005d23390565b6001600160a01b031660006000805160206200737a833981519152620005fb6009600a62001e56565b6200060c9064e8d4a5100062001e67565b60405190815260200160405180910390a360005462000664906001600160a01b031661dead6002620006416009600a62001e56565b620006529064e8d4a5100062001e67565b6200065e919062001ed0565b6200076c565b5062002052565b6001600160a01b038316620006bd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200070b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620006b4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416620007d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401620006b4565b6001600160a01b038316620008385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401620006b4565b600082116200089c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401620006b4565b620008a8848462000bcb565b1562000ad057601b5460ff16620009025760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401620006b4565b6001600160a01b03841660009081526003602052604090205460ff16806200094257506001600160a01b03831660009081526003602052604090205460ff165b15620009df576127106019541015620009df576127106200096262000ca9565b60195462000971919062001e67565b6200097d919062001ed0565b821115620009df5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401620006b4565b6010546001600160a01b0384811691161480159062000a1757506001600160a01b03831660009081526003602052604090205460ff16155b801562000a275750612710601a54105b1562000ad05761271062000a3a62000ca9565b601a5462000a49919062001e67565b62000a55919062001ed0565b8262000a618562000cff565b62000a6d919062001f12565b111562000ad05760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401620006b4565b6001600160a01b03841660009081526006602052604090205460019060ff168062000b1357506001600160a01b03841660009081526006602052604090205460ff165b1562000b1d575060005b6001600160a01b03841660009081526003602052604090205460ff161562000bb45760145460ff1615801562000b5a5750601454610100900460ff165b1562000bb4574260155460165462000b73919062001f12565b101562000bb457600062000b873062000cff565b9050601754811062000bb257601854811062000ba257506018545b62000bad8162000d61565b426016555b505b62000bc285858584620011cb565b95945050505050565b600080546001600160a01b0384811691161480159062000bf957506000546001600160a01b03838116911614155b801562000c1157506000546001600160a01b03163214155b801562000c3757506001600160a01b0382166000908152600a602052604090205460ff16155b801562000c5d57506001600160a01b0383166000908152600a602052604090205460ff16155b801562000c7557506001600160a01b03821661dead14155b801562000c8a57506001600160a01b03821615155b801562000ca057506001600160a01b0383163014155b90505b92915050565b600062000cb68162000cff565b62000cc361dead62000cff565b62000ccf919062001f12565b62000cdd6009600a62001e56565b62000cee9064e8d4a5100062001e67565b62000cfa919062001eb6565b905090565b6001600160a01b03811660009081526008602052604081205460ff161562000d3d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205462000ca3906200142f565b6014805460ff1916600117905560408051608081018252600f5461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000090049091166060820181905262000dc15750620011be565b3060009081526005602090815260408083206010546001600160a01b031684529091529020546000191462000e1b573060009081526005602090815260408083206010546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff168562000e3e919062001e67565b62000e4a919062001ed0565b62000e56919062001ed0565b9050600062000e66828562001eb6565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811062000ea35762000ea362001f2d565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562000efd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f23919062001ee7565b8160018151811062000f395762000f3962001f2d565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac9479062000f8190859060009086903090429060040162001f43565b600060405180830381600087803b15801562000f9c57600080fd5b505af115801562000fb1573d6000803e3d6000fd5b504792506000915084905062000fc8868462001e67565b62000fd4919062001ed0565b90508415620010b05760105460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156200104c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001073919062001fb6565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b620010bc818362001eb6565b9150856000015186606001818151620010d6919062001fe5565b61ffff908116909152606088015160408901516000935090821691620010fe91168562001e67565b6200110a919062001ed0565b905060006200111a828562001eb6565b604089015190915061ffff161562001169576013546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801562001167573d6000803e3d6000fd5b505b602088015161ffff1615620011b5576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015620011b3573d6000803e3d6000fd5b505b50505050505050505b506014805460ff19169055565b601b54600090610100900460ff166200126757620011ea8585620014b9565b601b54610100900460ff161580156200120a57506200120a858562000bcb565b15620012675760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401620006b4565b60006200127786868686620015ef565b60808101516001600160a01b038816600090815260016020526040812080549394509192620012a890849062001eb6565b909155505060608101516001600160a01b03861660009081526001602052604081208054909190620012dc90849062001f12565b90915550506001600160a01b03861660009081526008602052604090205460ff161562001343576001600160a01b0386166000908152600260205260409020546200132990859062001eb6565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526008602052604090205460ff1615620013a65780516001600160a01b0386166000908152600260205260409020546200138c919062001f12565b6001600160a01b0386166000908152600260205260409020555b60008160a001511180620013be575060008160200151115b15620013e2578060a00151600b6000828254620013dc919062001eb6565b90915550505b846001600160a01b0316866001600160a01b03166000805160206200737a83398151915283600001516040516200141b91815260200190565b60405180910390a350600195945050505050565b6000600b54821115620014985760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620006b4565b6000620014a462001a38565b9050620014b2818462001ed0565b9392505050565b601b54610100900460ff16156200151f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401620006b4565b6200152b828262000bcb565b1580156200154657506011546001600160a01b038281169116145b15620015eb576001600160a01b038083166000908152600a60205260409020805460ff19166001179055601b805461ff001916610100179081905562010000900416620015a757601b805462010000600160b01b0319163062010000021790555b6014805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15b5050565b620016306040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b620016716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6200167b62001a38565b60c082018190526200168e908562001e67565b60808201526200169f868662000bcb565b156200173f57601b5460405163ecd07a5360e01b81526001600160a01b038881166004830152878116602483015260448201879052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801562001726575060408051601f3d908101601f1916820190925262001723918101906200200b565b60015b6200173057600080fd5b9050806200173d57600080fd5b505b82156200190a57600080600061271090506000601b60029054906101000a90046001600160a01b03166001600160a01b03166354b762a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017cc91906200200b565b90508015620017e5576111309350611130925062001887565b6001600160a01b03891660009081526003602052604090205460ff16156200182857600d5461ffff80821695506801000000000000000090910416925062001887565b6001600160a01b038a1660009081526003602052604090205460ff16156200186b57600c5461ffff80821695506801000000000000000090910416925062001887565b600e5461ffff8082169550680100000000000000009091041692505b8162001894858a62001e67565b620018a0919062001ed0565b602086015281620018b2848a62001e67565b620018be919062001ed0565b604086018190526020860151620018d6919062001f12565b620018e2908962001eb6565b855260c08501516020860151620018fa919062001e67565b60a0860152506200192392505050565b6000602082018190526040820181905284825260a08201525b604081015115620019f2578060c00151816040015162001944919062001e67565b30600090815260016020526040812080549091906200196590849062001f12565b90915550503060009081526008602052604090205460ff1615620019b0576040808201513060009081526002602052918220805491929091620019aa90849062001f12565b90915550505b306001600160a01b0316866001600160a01b03166000805160206200737a8339815191528360400151604051620019e991815260200190565b60405180910390a35b8060c00151816040015162001a08919062001e67565b8160a0015162001a19919062001f12565b816080015162001a2a919062001eb6565b606082015295945050505050565b600b546000908162001a4d6009600a62001e56565b62001a5e9064e8d4a5100062001e67565b6011546001600160a01b031660009081526008602052604090205490915060ff161562001b56576011546001600160a01b031660009081526001602052604090205482108062001ac757506011546001600160a01b031660009081526002602052604090205481105b1562001b025762001adb6009600a62001e56565b62001aec9064e8d4a5100062001e67565b600b5462001afb919062001ed0565b9250505090565b6011546001600160a01b031660009081526001602052604090205462001b29908362001eb6565b6011546001600160a01b031660009081526002602052604090205490925062001b53908262001eb6565b90505b6009541562001cf35760005b60095460ff8216101562001cf157826001600060098460ff168154811062001b8e5762001b8e62001f2d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062001c005750816002600060098460ff168154811062001bd95762001bd962001f2d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562001c3c5762001c146009600a62001e56565b62001c259064e8d4a5100062001e67565b600b5462001c34919062001ed0565b935050505090565b6001600060098360ff168154811062001c595762001c5962001f2d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462001c8a908462001eb6565b92506002600060098360ff168154811062001ca95762001ca962001f2d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462001cda908362001eb6565b91508062001ce8816200202f565b91505062001b62565b505b62001d016009600a62001e56565b62001d129064e8d4a5100062001e67565b600b5462001d21919062001ed0565b82101562001d375762001adb6009600a62001e56565b62001afb818362001ed0565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562001d9a57816000190482111562001d7e5762001d7e62001d43565b8085161562001d8c57918102915b93841c939080029062001d5e565b509250929050565b60008262001db35750600162000ca3565b8162001dc25750600062000ca3565b816001811462001ddb576002811462001de65762001e06565b600191505062000ca3565b60ff84111562001dfa5762001dfa62001d43565b50506001821b62000ca3565b5060208310610133831016604e8410600b841016171562001e2b575081810a62000ca3565b62001e37838362001d59565b806000190482111562001e4e5762001e4e62001d43565b029392505050565b600062000ca060ff84168362001da2565b600081600019048311821515161562001e845762001e8462001d43565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262001eb15762001eb162001e89565b500690565b60008282101562001ecb5762001ecb62001d43565b500390565b60008262001ee25762001ee262001e89565b500490565b60006020828403121562001efa57600080fd5b81516001600160a01b0381168114620014b257600080fd5b6000821982111562001f285762001f2862001d43565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101562001f955784516001600160a01b03168352938301939183019160010162001f6e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121562001fcc57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101562002003576200200362001d43565b039392505050565b6000602082840312156200201e57600080fd5b81518015158114620014b257600080fd5b600060ff821660ff81141562002049576200204962001d43565b60010192915050565b61531880620020626000396000f3fe6080604052600436106104185760003560e01c8063715018a611610228578063becdf13f11610128578063e4fcfd18116100bb578063ee5d9c2d1161008a578063f94aa1b41161006f578063f94aa1b414610d21578063fdb78c0e14610d68578063fe575a8714610d8757600080fd5b8063ee5d9c2d14610cec578063eec2744e14610d0157600080fd5b8063e4fcfd1814610c76578063e8a0e3f914610c8c578063ea1644d514610cac578063eafb5a3c14610ccc57600080fd5b8063cf847706116100f7578063cf84770614610b85578063d3f6a15714610bf0578063d543dbeb14610c10578063dd62ed3e14610c3057600080fd5b8063becdf13f14610aab578063c2fa418f14610acb578063c6831cd814610b18578063cab5ebea14610b6557600080fd5b8063947f91f4116101bb578063aa22b1721161018a578063b1b08f711161016f578063b1b08f711461061b578063b3d514fb1461061b578063bc77169d14610a8b57600080fd5b8063aa22b17214610a4b578063aa54547314610a6b57600080fd5b8063947f91f4146109b057806395d89b41146109c5578063a457c2d714610a0b578063a9059cbb14610a2b57600080fd5b8063893d20e8116101f7578063893d20e8146109685780638a63bd9b146109865780638a8c523c1461099b5780638da5cb5b1461096857600080fd5b8063715018a6146108785780637b45d4311461088d57806380c581d11461090f57806388f820201461092f57600080fd5b80632e8fa821116103335780634fb2e45d116102c6578063590ffdce116102955780635cce86cd1161027a5780635cce86cd1461080a5780636ebd00781461084357806370a082311461085857600080fd5b8063590ffdce146107ca5780635c24b074146107ea57600080fd5b80634fb2e45d1461073d5780634fbee1931461075d57806350a8e0161461079657806355dbc369146107b557600080fd5b806336fddb041161030257806336fddb04146106c357806339509351146106e3578063452ed4f1146107035780634ada218b1461072357600080fd5b80632e8fa82114610651578063313ce5671461066757806333251a0b1461068357806334cd8260146106a357600080fd5b806313e46192116103ab57806329dd87981161037a57806329dd8798146105e65780632b112e49146106065780632b28fc7a1461061b5780632d8381191461063157600080fd5b806313e461921461057157806318160ddd1461059157806323b872dd146105a65780632610eaca146105c657600080fd5b80630758d924116103e75780630758d924146104ec578063092316021461050c578063095ea7b31461052c5780630fa604e41461055c57600080fd5b806303fd2a45146104245780630445b6671461045757806305bbedb61461047b57806306fdde031461049d57600080fd5b3661041f57005b600080fd5b34801561043057600080fd5b5061043a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561046357600080fd5b5061046d60175481565b60405190815260200161044e565b34801561048757600080fd5b5061049b610496366004614ae1565b610da7565b005b3480156104a957600080fd5b5060408051808201909152600e81527f596163687420436c756220496e7500000000000000000000000000000000000060208201525b60405161044e9190614b33565b3480156104f857600080fd5b5060105461043a906001600160a01b031681565b34801561051857600080fd5b5061049b610527366004614b88565b610e80565b34801561053857600080fd5b5061054c610547366004614ba1565b610f9f565b604051901515815260200161044e565b34801561056857600080fd5b5061046d610fb6565b34801561057d57600080fd5b5061049b61058c366004614bcd565b610ff5565b34801561059d57600080fd5b5061046d6114b8565b3480156105b257600080fd5b5061054c6105c1366004614bfb565b6114f9565b3480156105d257600080fd5b5061049b6105e1366004614c97565b611571565b3480156105f257600080fd5b5061049b610601366004614cfb565b611670565b34801561061257600080fd5b5061046d611759565b34801561062757600080fd5b5061046d6107d081565b34801561063d57600080fd5b5061046d61064c366004614b88565b61179f565b34801561065d57600080fd5b5061046d60185481565b34801561067357600080fd5b506040516009815260200161044e565b34801561068f57600080fd5b5061049b61069e366004614d57565b611836565b3480156106af57600080fd5b5061049b6106be366004614d74565b6118d6565b3480156106cf57600080fd5b5061049b6106de366004614bcd565b611995565b3480156106ef57600080fd5b5061054c6106fe366004614ba1565b611a0e565b34801561070f57600080fd5b5060115461043a906001600160a01b031681565b34801561072f57600080fd5b50601b5461054c9060ff1681565b34801561074957600080fd5b5061049b610758366004614d57565b611a4a565b34801561076957600080fd5b5061054c610778366004614d57565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107a257600080fd5b50601b5461054c90610100900460ff1681565b3480156107c157600080fd5b5061046d611c49565b3480156107d657600080fd5b5061049b6107e5366004614bcd565b611cc2565b3480156107f657600080fd5b5061049b610805366004614d57565b611d3b565b34801561081657600080fd5b5061054c610825366004614d57565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561084f57600080fd5b5061046d611e7a565b34801561086457600080fd5b5061046d610873366004614d57565b611e96565b34801561088457600080fd5b5061049b611ef5565b34801561089957600080fd5b50600c546108da9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161044e565b34801561091b57600080fd5b5061049b61092a366004614bcd565b611fa5565b34801561093b57600080fd5b5061054c61094a366004614d57565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561097457600080fd5b506000546001600160a01b031661043a565b34801561099257600080fd5b5061054c612161565b3480156109a757600080fd5b5061049b6121d0565b3480156109bc57600080fd5b5061049b6123ba565b3480156109d157600080fd5b5060408051808201909152600581527f594143485400000000000000000000000000000000000000000000000000000060208201526104df565b348015610a1757600080fd5b5061054c610a26366004614ba1565b61246f565b348015610a3757600080fd5b5061054c610a46366004614ba1565b6124a6565b348015610a5757600080fd5b5061049b610a66366004614dc6565b6124bd565b348015610a7757600080fd5b5061049b610a86366004614e09565b6125b9565b348015610a9757600080fd5b5061049b610aa6366004614e09565b612714565b348015610ab757600080fd5b5061049b610ac6366004614e09565b61286f565b348015610ad757600080fd5b50600e546108da9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b348015610b2457600080fd5b50600d546108da9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b348015610b7157600080fd5b5061049b610b80366004614e5d565b6129ca565b348015610b9157600080fd5b50600f54610bc29061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161044e565b348015610bfc57600080fd5b5061049b610c0b366004614e7a565b612a6c565b348015610c1c57600080fd5b5061049b610c2b366004614b88565b612af8565b348015610c3c57600080fd5b5061046d610c4b366004614e7a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610c8257600080fd5b5061046d60155481565b348015610c9857600080fd5b5061049b610ca7366004614ea8565b612bc2565b348015610cb857600080fd5b5061049b610cc7366004614b88565b612d53565b348015610cd857600080fd5b5061049b610ce7366004614d57565b612e1d565b348015610cf857600080fd5b5061049b6131cc565b348015610d0d57600080fd5b5061049b610d1c366004614bcd565b6132af565b348015610d2d57600080fd5b50601254601354610d48916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161044e565b348015610d7457600080fd5b5060145461054c90610100900460ff1681565b348015610d9357600080fd5b5061054c610da2366004614d57565b613357565b6000546001600160a01b03163314610dfa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601b546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610e4a9085908590600401614f74565b600060405180830381600087803b158015610e6457600080fd5b505af1158015610e78573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610ece5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6096811015610f1f5760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610df1565b601b546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610f8457600080fd5b505af1158015610f98573d6000803e3d6000fd5b5050505050565b6000610fac3384846133e5565b5060015b92915050565b6000610fc46009600a6150ab565b612710601a54610fd2611759565b610fdc91906150ba565b610fe691906150d9565b610ff091906150d9565b905090565b6000546001600160a01b031633146110435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b8015611198576001600160a01b03821660009081526008602052604090205460ff16156110b25760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610df1565b6001600160a01b0382166000908152600160205260409020541561110c576001600160a01b0382166000908152600160205260409020546110f29061179f565b6001600160a01b0383166000908152600260205260409020555b6001600160a01b038083166000818152600860205260409020805460ff191660011790556011549091161461119457600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790555b5050565b80611194576001600160a01b03821660009081526008602052604090205460ff166112055760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610df1565b6011546001600160a01b0383811691161415611280576112236134f2565b6001600160a01b03831660009081526002602052604090205461124691906150ba565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556008905220805460ff191690555050565b60095460011415611330576112936134f2565b6001600160a01b0383166000908152600260205260409020546112b691906150ba565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556008905220805460ff1916905560098054806112fd576112fd615114565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b60005b6009548110156114b357826001600160a01b03166009828154811061135a5761135a615143565b6000918252602090912001546001600160a01b031614156114a1576009805461138590600190615172565b8154811061139557611395615143565b600091825260209091200154600980546001600160a01b0390921691839081106113c1576113c1615143565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0394851617905591851681526002909152604081205561140d6134f2565b6001600160a01b03841660009081526002602052604090205461143091906150ba565b6001600160a01b0384166000908152600160209081526040808320939093556008905220805460ff19169055600980548061146d5761146d615114565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055019055505050565b806114ab81615189565b915050611333565b505050565b60006114c66009600a6150ab565b6114d59064e8d4a510006150ba565b6114de57600080fd5b6114ea6009600a6150ab565b610ff09064e8d4a510006150ba565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000191461155e576001600160a01b038416600090815260056020908152604080832033845290915281208054849290611558908490615172565b90915550505b6115698484846137c4565b949350505050565b80518251146115c25760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610df1565b60005b82518160ff1610156114b357818160ff16815181106115e6576115e6615143565b60200260200101516115f733611e96565b101561160257600080fd5b61165d33848360ff168151811061161b5761161b615143565b60200260200101516009600a61163191906150ab565b858560ff168151811061164657611646615143565b602002602001015161165891906150ba565b6137c4565b5080611668816151a4565b9150506115c5565b6000546001600160a01b031633146116be5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561173b57600080fd5b505af115801561174f573d6000803e3d6000fd5b5050505050505050565b60006117656000611e96565b61177061dead611e96565b61177a91906151c4565b6117866009600a6150ab565b6117959064e8d4a510006150ba565b610ff09190615172565b6000600b548211156118195760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610df1565b60006118236134f2565b905061182f81846150d9565b9392505050565b6000546001600160a01b031633146118845760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610f6a565b6000546001600160a01b031633146119245760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b83856119326009600a6150ab565b6119419064e8d4a510006150ba565b61194b91906150ba565b61195591906150d9565b60175581836119666009600a6150ab565b6119759064e8d4a510006150ba565b61197f91906150ba565b61198991906150d9565b60185560155550505050565b6000546001600160a01b031633146119e35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610fac918590611a459086906151c4565b6133e5565b6000546001600160a01b03163314611a985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6001600160a01b038116611b145760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610df1565b6001600160a01b03811661dead1415611b955760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610df1565b60008054611bae916001600160a01b0390911690611cc2565b611bb9816001611cc2565b60008054611bcf906001600160a01b0316611e96565b1115611bf157600054611bef906001600160a01b03168261165882611e96565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601b60029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906151dc565b6000546001600160a01b03163314611d105760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d895760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b54610100900460ff1615611de15760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610df1565b6001600160a01b038116301415611e3a5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610df1565b601b80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611e886009600a6150ab565b612710601954610fd2611759565b6001600160a01b03811660009081526008602052604081205460ff1615611ed357506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610fb09061179f565b6000546001600160a01b03163314611f435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b60008054611f5c916001600160a01b0390911690611cc2565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611ff35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b8061207f576001600160a01b03828116600081815260036020526040808220805460ff19169055601b5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610e6457600080fd5b600454156120e6576203f480600454426120999190615172565b116120e65760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610df1565b6001600160a01b0382811660008181526003602052604090819020805460ff19166001908117909155426004908155601b5492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401610e4a565b600080546001600160a01b031633146121b05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6010546121ca9030906001600160a01b03166000196133e5565b50600190565b6000546001600160a01b0316331461221e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b5460ff16156122715760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610df1565b601b54610100900460ff166122c85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610df1565b601b546201000090046001600160a01b031661230e57601b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601b546011546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561239957600080fd5b505af19250505080156123aa575060015b50601b805460ff19166001179055565b6000546001600160a01b031633146124085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b600d80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000166903e80190019000c80064179055600f80547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016660a000400040002179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610fac918590611a45908690615172565b60006124b33384846137c4565b5060019392505050565b6000546001600160a01b0316331461250b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b600f805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009094169288169290921792909217161790558061258383856151f5565b61258d91906151f5565b600f805461ffff9290921666010000000000000267ffff00000000000019909216919091179055505050565b6000546001600160a01b031633146126075760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6000818361261586886151f5565b61261f91906151f5565b61262991906151f5565b90506107d08161ffff16111561263e57600080fd5b600e805461ffff8781167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090921662010000888316027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000161791909117640100000000868316021767ffff00000000000019166601000000000000918516919091021790556126cd858261521b565b600e805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9092169190911790555050505050565b6000546001600160a01b031633146127625760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6000818361277086886151f5565b61277a91906151f5565b61278491906151f5565b90506107d08161ffff16111561279957600080fd5b600c805461ffff8781167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090921662010000888316027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000161791909117640100000000868316021767ffff0000000000001916660100000000000091851691909102179055612828858261521b565b600c805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9092169190911790555050505050565b6000546001600160a01b031633146128bd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b600081836128cb86886151f5565b6128d591906151f5565b6128df91906151f5565b90506107d08161ffff1611156128f457600080fd5b600d805461ffff8781167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090921662010000888316027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000161791909117640100000000868316021767ffff0000000000001916660100000000000091851691909102179055612983858261521b565b600d805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9092169190911790555050505050565b6000546001600160a01b03163314612a185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601480548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790612a6190831515815260200190565b60405180910390a150565b6000546001600160a01b03163314612aba5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601380546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560128054939092169216919091179055565b6000546001600160a01b03163314612b465760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b600a811015612bbd5760405162461bcd60e51b815260206004820152603760248201527f4d6178207472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610df1565b601955565b81518351148015612bd4575080518251145b612c205760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610df1565b60005b83518160ff161015612d4d57818160ff1681518110612c4457612c44615143565b6020026020010151838260ff1681518110612c6157612c61615143565b60200260200101516009600a612c7791906150ab565b612c869064e8d4a510006150ba565b612c9091906150ba565b612c9a91906150d9565b612ca333611e96565b1015612cae57600080fd5b612d3a33858360ff1681518110612cc757612cc7615143565b6020026020010151848460ff1681518110612ce457612ce4615143565b6020026020010151868560ff1681518110612d0157612d01615143565b60200260200101516009600a612d1791906150ab565b612d269064e8d4a510006150ba565b612d3091906150ba565b61165891906150d9565b5080612d45816151a4565b915050612c23565b50505050565b6000546001600160a01b03163314612da15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6032811015612e185760405162461bcd60e51b815260206004820152603260248201527f4d61782077616c6c657420616d74206d7573742062652061626f766520302e3560448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610df1565b601a55565b6000546001600160a01b03163314612e6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed4919061523e565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f45919061523e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcc919061523e565b90506001600160a01b03811661316a57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561301a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303e919061523e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561308b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130af919061523e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015613114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613138919061523e565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055613193565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556114b39030906000196133e5565b6000546001600160a01b0316331461321a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b54610100900460ff16156132725760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610df1565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156132ac573d6000803e3d6000fd5b50565b6000546001600160a01b031633146132fd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610e4a565b601b546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa1580156133c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb0919061525b565b6001600160a01b03831661343b5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610df1565b6001600160a01b0382166134915760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610df1565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b54600090816135056009600a6150ab565b6135149064e8d4a510006150ba565b6011546001600160a01b031660009081526008602052604090205490915060ff16156135ff576011546001600160a01b031660009081526001602052604090205482108061357b57506011546001600160a01b031660009081526002602052604090205481105b156135af5761358c6009600a6150ab565b61359b9064e8d4a510006150ba565b600b546135a891906150d9565b9250505090565b6011546001600160a01b03166000908152600160205260409020546135d49083615172565b6011546001600160a01b03166000908152600260205260409020549092506135fc9082615172565b90505b6009541561377f5760005b60095460ff8216101561377d57826001600060098460ff168154811061363257613632615143565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806136a05750816002600060098460ff168154811061367957613679615143565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156136d5576136b16009600a6150ab565b6136c09064e8d4a510006150ba565b600b546136cd91906150d9565b935050505090565b6001600060098360ff16815481106136ef576136ef615143565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461371e9084615172565b92506002600060098360ff168154811061373a5761373a615143565b60009182526020808320909101546001600160a01b031683528201929092526040019020546137699083615172565b915080613775816151a4565b91505061360a565b505b61378b6009600a6150ab565b61379a9064e8d4a510006150ba565b600b546137a791906150d9565b8210156137ba5761358c6009600a6150ab565b6135a881836150d9565b60006001600160a01b0384166138425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610df1565b6001600160a01b0383166138be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610df1565b600082116139345760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610df1565b61393e8484613c5c565b15613b7157601b5460ff166139955760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610df1565b6001600160a01b03841660009081526003602052604090205460ff16806139d457506001600160a01b03831660009081526003602052604090205460ff165b15613a7c576127106019541015613a7c576127106139f0611759565b6019546139fd91906150ba565b613a0791906150d9565b821115613a7c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610df1565b6010546001600160a01b03848116911614801590613ab357506001600160a01b03831660009081526003602052604090205460ff16155b8015613ac25750612710601a54105b15613b7157612710613ad2611759565b601a54613adf91906150ba565b613ae991906150d9565b82613af385611e96565b613afd91906151c4565b1115613b715760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610df1565b6001600160a01b03841660009081526006602052604090205460019060ff1680613bb357506001600160a01b03841660009081526006602052604090205460ff165b15613bbc575060005b6001600160a01b03841660009081526003602052604090205460ff1615613c475760145460ff16158015613bf75750601454610100900460ff165b15613c475742601554601654613c0d91906151c4565b1015613c47576000613c1e30611e96565b90506017548110613c45576018548110613c3757506018545b613c4081613d30565b426016555b505b613c53858585846141b7565b95945050505050565b600080546001600160a01b03848116911614801590613c8957506000546001600160a01b03838116911614155b8015613ca057506000546001600160a01b03163214155b8015613cc557506001600160a01b0382166000908152600a602052604090205460ff16155b8015613cea57506001600160a01b0383166000908152600a602052604090205460ff16155b8015613d0157506001600160a01b03821661dead14155b8015613d1557506001600160a01b03821615155b801561182f57506001600160a01b0383163014159392505050565b6014805460ff1916600117905560408051608081018252600f5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052613d8e57506141aa565b3060009081526005602090815260408083206010546001600160a01b0316845290915290205460001914613de7573060009081526005602090815260408083206010546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685613e0891906150ba565b613e1291906150d9565b613e1c91906150d9565b90506000613e2a8285615172565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613e6457613e64615143565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa919061523e565b81600181518110613f0d57613f0d615143565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613f6c908590600090869030904290600401615278565b600060405180830381600087803b158015613f8657600080fd5b505af1158015613f9a573d6000803e3d6000fd5b5047925060009150849050613faf86846150ba565b613fb991906150d9565b905084156140aa576010546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015614048573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061406d91906152b4565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6140b48183615172565b91508560000151866060018181516140cc919061521b565b61ffff9081169091526060880151604089015160009350908216916140f29116856150ba565b6140fc91906150d9565b9050600061410a8285615172565b604089015190915061ffff1615614157576013546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015614155573d6000803e3d6000fd5b505b602088015161ffff16156141a1576012546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561419f573d6000803e3d6000fd5b505b50505050505050505b506014805460ff19169055565b601b54600090610100900460ff16614263576141d3858561442b565b601b54610100900460ff161580156141f057506141f08585613c5c565b156142635760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610df1565b600061427186868686614589565b60808101516001600160a01b0388166000908152600160205260408120805493945091926142a0908490615172565b909155505060608101516001600160a01b038616600090815260016020526040812080549091906142d29084906151c4565b90915550506001600160a01b03861660009081526008602052604090205460ff1615614336576001600160a01b03861660009081526002602052604090205461431c908590615172565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526008602052604090205460ff16156143965780516001600160a01b03861660009081526002602052604090205461437c91906151c4565b6001600160a01b0386166000908152600260205260409020555b60008160a0015111806143ad575060008160200151115b156143ce578060a00151600b60008282546143c89190615172565b90915550505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836000015160405161441791815260200190565b60405180910390a350600195945050505050565b601b54610100900460ff16156144a95760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610df1565b6144b38282613c5c565b1580156144cd57506011546001600160a01b038281169116145b15611194576001600160a01b038083166000908152600a60205260409020805460ff19166001179055601b805461ff00191661010017908190556201000090041661454257601b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6014805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6145c96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6146096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6146116134f2565b60c0820181905261462290856150ba565b60808201526146318686613c5c565b156146e457601b546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152878116602483015260448201879052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156146cd575060408051601f3d908101601f191682019092526146ca9181019061525b565b60015b6146d657600080fd5b9050806146e257600080fd5b505b821561489657600080600061271090506000601b60029054906101000a90046001600160a01b03166001600160a01b03166354b762a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015614749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061476d919061525b565b905080156147845761113093506111309250614822565b6001600160a01b03891660009081526003602052604090205460ff16156147c557600d5461ffff808216955068010000000000000000909104169250614822565b6001600160a01b038a1660009081526003602052604090205460ff161561480657600c5461ffff808216955068010000000000000000909104169250614822565b600e5461ffff8082169550680100000000000000009091041692505b8161482d858a6150ba565b61483791906150d9565b602086015281614847848a6150ba565b61485191906150d9565b60408601819052602086015161486791906151c4565b6148719089615172565b855260c0850151602086015161488791906150ba565b60a0860152506148af92505050565b6000602082018190526040820181905284825260a08201525b604081015115614986578060c0015181604001516148cd91906150ba565b30600090815260016020526040812080549091906148ec9084906151c4565b90915550503060009081526008602052604090205460ff161561493457604080820151306000908152600260205291822080549192909161492e9084906151c4565b90915550505b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040015160405161497d91815260200190565b60405180910390a35b8060c00151816040015161499a91906150ba565b8160a001516149a991906151c4565b81608001516149b89190615172565b606082015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614a1e57614a1e6149c6565b604052919050565b600067ffffffffffffffff821115614a4057614a406149c6565b5060051b60200190565b6001600160a01b03811681146132ac57600080fd5b600082601f830112614a7057600080fd5b81356020614a85614a8083614a26565b6149f5565b82815260059290921b84018101918181019086841115614aa457600080fd5b8286015b84811015614ac8578035614abb81614a4a565b8352918301918301614aa8565b509695505050505050565b80151581146132ac57600080fd5b60008060408385031215614af457600080fd5b823567ffffffffffffffff811115614b0b57600080fd5b614b1785828601614a5f565b9250506020830135614b2881614ad3565b809150509250929050565b600060208083528351808285015260005b81811015614b6057858101830151858201604001528201614b44565b81811115614b72576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215614b9a57600080fd5b5035919050565b60008060408385031215614bb457600080fd5b8235614bbf81614a4a565b946020939093013593505050565b60008060408385031215614be057600080fd5b8235614beb81614a4a565b91506020830135614b2881614ad3565b600080600060608486031215614c1057600080fd5b8335614c1b81614a4a565b92506020840135614c2b81614a4a565b929592945050506040919091013590565b600082601f830112614c4d57600080fd5b81356020614c5d614a8083614a26565b82815260059290921b84018101918181019086841115614c7c57600080fd5b8286015b84811015614ac85780358352918301918301614c80565b60008060408385031215614caa57600080fd5b823567ffffffffffffffff80821115614cc257600080fd5b614cce86838701614a5f565b93506020850135915080821115614ce457600080fd5b50614cf185828601614c3c565b9150509250929050565b60008060008060808587031215614d1157600080fd5b8435614d1c81614ad3565b93506020850135614d2c81614ad3565b92506040850135614d3c81614ad3565b91506060850135614d4c81614ad3565b939692955090935050565b600060208284031215614d6957600080fd5b813561182f81614a4a565b600080600080600060a08688031215614d8c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b803561ffff81168114614dc157600080fd5b919050565b600080600060608486031215614ddb57600080fd5b614de484614daf565b9250614df260208501614daf565b9150614e0060408501614daf565b90509250925092565b60008060008060808587031215614e1f57600080fd5b614e2885614daf565b9350614e3660208601614daf565b9250614e4460408601614daf565b9150614e5260608601614daf565b905092959194509250565b600060208284031215614e6f57600080fd5b813561182f81614ad3565b60008060408385031215614e8d57600080fd5b8235614e9881614a4a565b91506020830135614b2881614a4a565b600080600060608486031215614ebd57600080fd5b833567ffffffffffffffff80821115614ed557600080fd5b614ee187838801614a5f565b94506020860135915080821115614ef757600080fd5b614f0387838801614c3c565b93506040860135915080821115614f1957600080fd5b50614f2686828701614c3c565b9150509250925092565b600081518084526020808501945080840160005b83811015614f695781516001600160a01b031687529582019590820190600101614f44565b509495945050505050565b604081526000614f876040830185614f30565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115615002578160001904821115614fe857614fe8614f98565b80851615614ff557918102915b93841c9390800290614fcc565b509250929050565b60008261501957506001610fb0565b8161502657506000610fb0565b816001811461503c576002811461504657615062565b6001915050610fb0565b60ff84111561505757615057614f98565b50506001821b610fb0565b5060208310610133831016604e8410600b8410161715615085575081810a610fb0565b61508f8383614fc7565b80600019048211156150a3576150a3614f98565b029392505050565b600061182f60ff84168361500a565b60008160001904831182151516156150d4576150d4614f98565b500290565b60008261510f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008282101561518457615184614f98565b500390565b600060001982141561519d5761519d614f98565b5060010190565b600060ff821660ff8114156151bb576151bb614f98565b60010192915050565b600082198211156151d7576151d7614f98565b500190565b6000602082840312156151ee57600080fd5b5051919050565b600061ffff80831681851680830382111561521257615212614f98565b01949350505050565b600061ffff8381169083168181101561523657615236614f98565b039392505050565b60006020828403121561525057600080fd5b815161182f81614a4a565b60006020828403121561526d57600080fd5b815161182f81614ad3565b85815284602082015260a06040820152600061529760a0830186614f30565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156152c957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d36b1abc9f7419357f8b4c2355b167862cf897dca444dbbfe5fae3c6dccf144764736f6c634300080b0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x6080604052600436106104185760003560e01c8063715018a611610228578063becdf13f11610128578063e4fcfd18116100bb578063ee5d9c2d1161008a578063f94aa1b41161006f578063f94aa1b414610d21578063fdb78c0e14610d68578063fe575a8714610d8757600080fd5b8063ee5d9c2d14610cec578063eec2744e14610d0157600080fd5b8063e4fcfd1814610c76578063e8a0e3f914610c8c578063ea1644d514610cac578063eafb5a3c14610ccc57600080fd5b8063cf847706116100f7578063cf84770614610b85578063d3f6a15714610bf0578063d543dbeb14610c10578063dd62ed3e14610c3057600080fd5b8063becdf13f14610aab578063c2fa418f14610acb578063c6831cd814610b18578063cab5ebea14610b6557600080fd5b8063947f91f4116101bb578063aa22b1721161018a578063b1b08f711161016f578063b1b08f711461061b578063b3d514fb1461061b578063bc77169d14610a8b57600080fd5b8063aa22b17214610a4b578063aa54547314610a6b57600080fd5b8063947f91f4146109b057806395d89b41146109c5578063a457c2d714610a0b578063a9059cbb14610a2b57600080fd5b8063893d20e8116101f7578063893d20e8146109685780638a63bd9b146109865780638a8c523c1461099b5780638da5cb5b1461096857600080fd5b8063715018a6146108785780637b45d4311461088d57806380c581d11461090f57806388f820201461092f57600080fd5b80632e8fa821116103335780634fb2e45d116102c6578063590ffdce116102955780635cce86cd1161027a5780635cce86cd1461080a5780636ebd00781461084357806370a082311461085857600080fd5b8063590ffdce146107ca5780635c24b074146107ea57600080fd5b80634fb2e45d1461073d5780634fbee1931461075d57806350a8e0161461079657806355dbc369146107b557600080fd5b806336fddb041161030257806336fddb04146106c357806339509351146106e3578063452ed4f1146107035780634ada218b1461072357600080fd5b80632e8fa82114610651578063313ce5671461066757806333251a0b1461068357806334cd8260146106a357600080fd5b806313e46192116103ab57806329dd87981161037a57806329dd8798146105e65780632b112e49146106065780632b28fc7a1461061b5780632d8381191461063157600080fd5b806313e461921461057157806318160ddd1461059157806323b872dd146105a65780632610eaca146105c657600080fd5b80630758d924116103e75780630758d924146104ec578063092316021461050c578063095ea7b31461052c5780630fa604e41461055c57600080fd5b806303fd2a45146104245780630445b6671461045757806305bbedb61461047b57806306fdde031461049d57600080fd5b3661041f57005b600080fd5b34801561043057600080fd5b5061043a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561046357600080fd5b5061046d60175481565b60405190815260200161044e565b34801561048757600080fd5b5061049b610496366004614ae1565b610da7565b005b3480156104a957600080fd5b5060408051808201909152600e81527f596163687420436c756220496e7500000000000000000000000000000000000060208201525b60405161044e9190614b33565b3480156104f857600080fd5b5060105461043a906001600160a01b031681565b34801561051857600080fd5b5061049b610527366004614b88565b610e80565b34801561053857600080fd5b5061054c610547366004614ba1565b610f9f565b604051901515815260200161044e565b34801561056857600080fd5b5061046d610fb6565b34801561057d57600080fd5b5061049b61058c366004614bcd565b610ff5565b34801561059d57600080fd5b5061046d6114b8565b3480156105b257600080fd5b5061054c6105c1366004614bfb565b6114f9565b3480156105d257600080fd5b5061049b6105e1366004614c97565b611571565b3480156105f257600080fd5b5061049b610601366004614cfb565b611670565b34801561061257600080fd5b5061046d611759565b34801561062757600080fd5b5061046d6107d081565b34801561063d57600080fd5b5061046d61064c366004614b88565b61179f565b34801561065d57600080fd5b5061046d60185481565b34801561067357600080fd5b506040516009815260200161044e565b34801561068f57600080fd5b5061049b61069e366004614d57565b611836565b3480156106af57600080fd5b5061049b6106be366004614d74565b6118d6565b3480156106cf57600080fd5b5061049b6106de366004614bcd565b611995565b3480156106ef57600080fd5b5061054c6106fe366004614ba1565b611a0e565b34801561070f57600080fd5b5060115461043a906001600160a01b031681565b34801561072f57600080fd5b50601b5461054c9060ff1681565b34801561074957600080fd5b5061049b610758366004614d57565b611a4a565b34801561076957600080fd5b5061054c610778366004614d57565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107a257600080fd5b50601b5461054c90610100900460ff1681565b3480156107c157600080fd5b5061046d611c49565b3480156107d657600080fd5b5061049b6107e5366004614bcd565b611cc2565b3480156107f657600080fd5b5061049b610805366004614d57565b611d3b565b34801561081657600080fd5b5061054c610825366004614d57565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561084f57600080fd5b5061046d611e7a565b34801561086457600080fd5b5061046d610873366004614d57565b611e96565b34801561088457600080fd5b5061049b611ef5565b34801561089957600080fd5b50600c546108da9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161044e565b34801561091b57600080fd5b5061049b61092a366004614bcd565b611fa5565b34801561093b57600080fd5b5061054c61094a366004614d57565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561097457600080fd5b506000546001600160a01b031661043a565b34801561099257600080fd5b5061054c612161565b3480156109a757600080fd5b5061049b6121d0565b3480156109bc57600080fd5b5061049b6123ba565b3480156109d157600080fd5b5060408051808201909152600581527f594143485400000000000000000000000000000000000000000000000000000060208201526104df565b348015610a1757600080fd5b5061054c610a26366004614ba1565b61246f565b348015610a3757600080fd5b5061054c610a46366004614ba1565b6124a6565b348015610a5757600080fd5b5061049b610a66366004614dc6565b6124bd565b348015610a7757600080fd5b5061049b610a86366004614e09565b6125b9565b348015610a9757600080fd5b5061049b610aa6366004614e09565b612714565b348015610ab757600080fd5b5061049b610ac6366004614e09565b61286f565b348015610ad757600080fd5b50600e546108da9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b348015610b2457600080fd5b50600d546108da9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b348015610b7157600080fd5b5061049b610b80366004614e5d565b6129ca565b348015610b9157600080fd5b50600f54610bc29061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161044e565b348015610bfc57600080fd5b5061049b610c0b366004614e7a565b612a6c565b348015610c1c57600080fd5b5061049b610c2b366004614b88565b612af8565b348015610c3c57600080fd5b5061046d610c4b366004614e7a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610c8257600080fd5b5061046d60155481565b348015610c9857600080fd5b5061049b610ca7366004614ea8565b612bc2565b348015610cb857600080fd5b5061049b610cc7366004614b88565b612d53565b348015610cd857600080fd5b5061049b610ce7366004614d57565b612e1d565b348015610cf857600080fd5b5061049b6131cc565b348015610d0d57600080fd5b5061049b610d1c366004614bcd565b6132af565b348015610d2d57600080fd5b50601254601354610d48916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161044e565b348015610d7457600080fd5b5060145461054c90610100900460ff1681565b348015610d9357600080fd5b5061054c610da2366004614d57565b613357565b6000546001600160a01b03163314610dfa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601b546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610e4a9085908590600401614f74565b600060405180830381600087803b158015610e6457600080fd5b505af1158015610e78573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610ece5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6096811015610f1f5760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610df1565b601b546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610f8457600080fd5b505af1158015610f98573d6000803e3d6000fd5b5050505050565b6000610fac3384846133e5565b5060015b92915050565b6000610fc46009600a6150ab565b612710601a54610fd2611759565b610fdc91906150ba565b610fe691906150d9565b610ff091906150d9565b905090565b6000546001600160a01b031633146110435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b8015611198576001600160a01b03821660009081526008602052604090205460ff16156110b25760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610df1565b6001600160a01b0382166000908152600160205260409020541561110c576001600160a01b0382166000908152600160205260409020546110f29061179f565b6001600160a01b0383166000908152600260205260409020555b6001600160a01b038083166000818152600860205260409020805460ff191660011790556011549091161461119457600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790555b5050565b80611194576001600160a01b03821660009081526008602052604090205460ff166112055760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610df1565b6011546001600160a01b0383811691161415611280576112236134f2565b6001600160a01b03831660009081526002602052604090205461124691906150ba565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556008905220805460ff191690555050565b60095460011415611330576112936134f2565b6001600160a01b0383166000908152600260205260409020546112b691906150ba565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556008905220805460ff1916905560098054806112fd576112fd615114565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b60005b6009548110156114b357826001600160a01b03166009828154811061135a5761135a615143565b6000918252602090912001546001600160a01b031614156114a1576009805461138590600190615172565b8154811061139557611395615143565b600091825260209091200154600980546001600160a01b0390921691839081106113c1576113c1615143565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0394851617905591851681526002909152604081205561140d6134f2565b6001600160a01b03841660009081526002602052604090205461143091906150ba565b6001600160a01b0384166000908152600160209081526040808320939093556008905220805460ff19169055600980548061146d5761146d615114565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055019055505050565b806114ab81615189565b915050611333565b505050565b60006114c66009600a6150ab565b6114d59064e8d4a510006150ba565b6114de57600080fd5b6114ea6009600a6150ab565b610ff09064e8d4a510006150ba565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000191461155e576001600160a01b038416600090815260056020908152604080832033845290915281208054849290611558908490615172565b90915550505b6115698484846137c4565b949350505050565b80518251146115c25760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610df1565b60005b82518160ff1610156114b357818160ff16815181106115e6576115e6615143565b60200260200101516115f733611e96565b101561160257600080fd5b61165d33848360ff168151811061161b5761161b615143565b60200260200101516009600a61163191906150ab565b858560ff168151811061164657611646615143565b602002602001015161165891906150ba565b6137c4565b5080611668816151a4565b9150506115c5565b6000546001600160a01b031633146116be5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561173b57600080fd5b505af115801561174f573d6000803e3d6000fd5b5050505050505050565b60006117656000611e96565b61177061dead611e96565b61177a91906151c4565b6117866009600a6150ab565b6117959064e8d4a510006150ba565b610ff09190615172565b6000600b548211156118195760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610df1565b60006118236134f2565b905061182f81846150d9565b9392505050565b6000546001600160a01b031633146118845760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610f6a565b6000546001600160a01b031633146119245760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b83856119326009600a6150ab565b6119419064e8d4a510006150ba565b61194b91906150ba565b61195591906150d9565b60175581836119666009600a6150ab565b6119759064e8d4a510006150ba565b61197f91906150ba565b61198991906150d9565b60185560155550505050565b6000546001600160a01b031633146119e35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610fac918590611a459086906151c4565b6133e5565b6000546001600160a01b03163314611a985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6001600160a01b038116611b145760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610df1565b6001600160a01b03811661dead1415611b955760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610df1565b60008054611bae916001600160a01b0390911690611cc2565b611bb9816001611cc2565b60008054611bcf906001600160a01b0316611e96565b1115611bf157600054611bef906001600160a01b03168261165882611e96565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601b60029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906151dc565b6000546001600160a01b03163314611d105760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d895760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b54610100900460ff1615611de15760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610df1565b6001600160a01b038116301415611e3a5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610df1565b601b80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611e886009600a6150ab565b612710601954610fd2611759565b6001600160a01b03811660009081526008602052604081205460ff1615611ed357506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610fb09061179f565b6000546001600160a01b03163314611f435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b60008054611f5c916001600160a01b0390911690611cc2565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611ff35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b8061207f576001600160a01b03828116600081815260036020526040808220805460ff19169055601b5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610e6457600080fd5b600454156120e6576203f480600454426120999190615172565b116120e65760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610df1565b6001600160a01b0382811660008181526003602052604090819020805460ff19166001908117909155426004908155601b5492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401610e4a565b600080546001600160a01b031633146121b05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6010546121ca9030906001600160a01b03166000196133e5565b50600190565b6000546001600160a01b0316331461221e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b5460ff16156122715760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610df1565b601b54610100900460ff166122c85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610df1565b601b546201000090046001600160a01b031661230e57601b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601b546011546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561239957600080fd5b505af19250505080156123aa575060015b50601b805460ff19166001179055565b6000546001600160a01b031633146124085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b600d80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000166903e80190019000c80064179055600f80547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016660a000400040002179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610fac918590611a45908690615172565b60006124b33384846137c4565b5060019392505050565b6000546001600160a01b0316331461250b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b600f805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009094169288169290921792909217161790558061258383856151f5565b61258d91906151f5565b600f805461ffff9290921666010000000000000267ffff00000000000019909216919091179055505050565b6000546001600160a01b031633146126075760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6000818361261586886151f5565b61261f91906151f5565b61262991906151f5565b90506107d08161ffff16111561263e57600080fd5b600e805461ffff8781167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090921662010000888316027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000161791909117640100000000868316021767ffff00000000000019166601000000000000918516919091021790556126cd858261521b565b600e805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9092169190911790555050505050565b6000546001600160a01b031633146127625760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6000818361277086886151f5565b61277a91906151f5565b61278491906151f5565b90506107d08161ffff16111561279957600080fd5b600c805461ffff8781167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090921662010000888316027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000161791909117640100000000868316021767ffff0000000000001916660100000000000091851691909102179055612828858261521b565b600c805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9092169190911790555050505050565b6000546001600160a01b031633146128bd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b600081836128cb86886151f5565b6128d591906151f5565b6128df91906151f5565b90506107d08161ffff1611156128f457600080fd5b600d805461ffff8781167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090921662010000888316027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000161791909117640100000000868316021767ffff0000000000001916660100000000000091851691909102179055612983858261521b565b600d805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9092169190911790555050505050565b6000546001600160a01b03163314612a185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601480548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790612a6190831515815260200190565b60405180910390a150565b6000546001600160a01b03163314612aba5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601380546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560128054939092169216919091179055565b6000546001600160a01b03163314612b465760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b600a811015612bbd5760405162461bcd60e51b815260206004820152603760248201527f4d6178207472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610df1565b601955565b81518351148015612bd4575080518251145b612c205760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610df1565b60005b83518160ff161015612d4d57818160ff1681518110612c4457612c44615143565b6020026020010151838260ff1681518110612c6157612c61615143565b60200260200101516009600a612c7791906150ab565b612c869064e8d4a510006150ba565b612c9091906150ba565b612c9a91906150d9565b612ca333611e96565b1015612cae57600080fd5b612d3a33858360ff1681518110612cc757612cc7615143565b6020026020010151848460ff1681518110612ce457612ce4615143565b6020026020010151868560ff1681518110612d0157612d01615143565b60200260200101516009600a612d1791906150ab565b612d269064e8d4a510006150ba565b612d3091906150ba565b61165891906150d9565b5080612d45816151a4565b915050612c23565b50505050565b6000546001600160a01b03163314612da15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b6032811015612e185760405162461bcd60e51b815260206004820152603260248201527f4d61782077616c6c657420616d74206d7573742062652061626f766520302e3560448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610df1565b601a55565b6000546001600160a01b03163314612e6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed4919061523e565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f45919061523e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcc919061523e565b90506001600160a01b03811661316a57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561301a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303e919061523e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561308b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130af919061523e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015613114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613138919061523e565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055613193565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556114b39030906000196133e5565b6000546001600160a01b0316331461321a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b54610100900460ff16156132725760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610df1565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156132ac573d6000803e3d6000fd5b50565b6000546001600160a01b031633146132fd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610df1565b601b546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610e4a565b601b546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa1580156133c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb0919061525b565b6001600160a01b03831661343b5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610df1565b6001600160a01b0382166134915760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610df1565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b54600090816135056009600a6150ab565b6135149064e8d4a510006150ba565b6011546001600160a01b031660009081526008602052604090205490915060ff16156135ff576011546001600160a01b031660009081526001602052604090205482108061357b57506011546001600160a01b031660009081526002602052604090205481105b156135af5761358c6009600a6150ab565b61359b9064e8d4a510006150ba565b600b546135a891906150d9565b9250505090565b6011546001600160a01b03166000908152600160205260409020546135d49083615172565b6011546001600160a01b03166000908152600260205260409020549092506135fc9082615172565b90505b6009541561377f5760005b60095460ff8216101561377d57826001600060098460ff168154811061363257613632615143565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806136a05750816002600060098460ff168154811061367957613679615143565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156136d5576136b16009600a6150ab565b6136c09064e8d4a510006150ba565b600b546136cd91906150d9565b935050505090565b6001600060098360ff16815481106136ef576136ef615143565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461371e9084615172565b92506002600060098360ff168154811061373a5761373a615143565b60009182526020808320909101546001600160a01b031683528201929092526040019020546137699083615172565b915080613775816151a4565b91505061360a565b505b61378b6009600a6150ab565b61379a9064e8d4a510006150ba565b600b546137a791906150d9565b8210156137ba5761358c6009600a6150ab565b6135a881836150d9565b60006001600160a01b0384166138425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610df1565b6001600160a01b0383166138be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610df1565b600082116139345760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610df1565b61393e8484613c5c565b15613b7157601b5460ff166139955760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610df1565b6001600160a01b03841660009081526003602052604090205460ff16806139d457506001600160a01b03831660009081526003602052604090205460ff165b15613a7c576127106019541015613a7c576127106139f0611759565b6019546139fd91906150ba565b613a0791906150d9565b821115613a7c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610df1565b6010546001600160a01b03848116911614801590613ab357506001600160a01b03831660009081526003602052604090205460ff16155b8015613ac25750612710601a54105b15613b7157612710613ad2611759565b601a54613adf91906150ba565b613ae991906150d9565b82613af385611e96565b613afd91906151c4565b1115613b715760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610df1565b6001600160a01b03841660009081526006602052604090205460019060ff1680613bb357506001600160a01b03841660009081526006602052604090205460ff165b15613bbc575060005b6001600160a01b03841660009081526003602052604090205460ff1615613c475760145460ff16158015613bf75750601454610100900460ff165b15613c475742601554601654613c0d91906151c4565b1015613c47576000613c1e30611e96565b90506017548110613c45576018548110613c3757506018545b613c4081613d30565b426016555b505b613c53858585846141b7565b95945050505050565b600080546001600160a01b03848116911614801590613c8957506000546001600160a01b03838116911614155b8015613ca057506000546001600160a01b03163214155b8015613cc557506001600160a01b0382166000908152600a602052604090205460ff16155b8015613cea57506001600160a01b0383166000908152600a602052604090205460ff16155b8015613d0157506001600160a01b03821661dead14155b8015613d1557506001600160a01b03821615155b801561182f57506001600160a01b0383163014159392505050565b6014805460ff1916600117905560408051608081018252600f5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052613d8e57506141aa565b3060009081526005602090815260408083206010546001600160a01b0316845290915290205460001914613de7573060009081526005602090815260408083206010546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685613e0891906150ba565b613e1291906150d9565b613e1c91906150d9565b90506000613e2a8285615172565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613e6457613e64615143565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa919061523e565b81600181518110613f0d57613f0d615143565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613f6c908590600090869030904290600401615278565b600060405180830381600087803b158015613f8657600080fd5b505af1158015613f9a573d6000803e3d6000fd5b5047925060009150849050613faf86846150ba565b613fb991906150d9565b905084156140aa576010546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015614048573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061406d91906152b4565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6140b48183615172565b91508560000151866060018181516140cc919061521b565b61ffff9081169091526060880151604089015160009350908216916140f29116856150ba565b6140fc91906150d9565b9050600061410a8285615172565b604089015190915061ffff1615614157576013546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015614155573d6000803e3d6000fd5b505b602088015161ffff16156141a1576012546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561419f573d6000803e3d6000fd5b505b50505050505050505b506014805460ff19169055565b601b54600090610100900460ff16614263576141d3858561442b565b601b54610100900460ff161580156141f057506141f08585613c5c565b156142635760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610df1565b600061427186868686614589565b60808101516001600160a01b0388166000908152600160205260408120805493945091926142a0908490615172565b909155505060608101516001600160a01b038616600090815260016020526040812080549091906142d29084906151c4565b90915550506001600160a01b03861660009081526008602052604090205460ff1615614336576001600160a01b03861660009081526002602052604090205461431c908590615172565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526008602052604090205460ff16156143965780516001600160a01b03861660009081526002602052604090205461437c91906151c4565b6001600160a01b0386166000908152600260205260409020555b60008160a0015111806143ad575060008160200151115b156143ce578060a00151600b60008282546143c89190615172565b90915550505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836000015160405161441791815260200190565b60405180910390a350600195945050505050565b601b54610100900460ff16156144a95760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610df1565b6144b38282613c5c565b1580156144cd57506011546001600160a01b038281169116145b15611194576001600160a01b038083166000908152600a60205260409020805460ff19166001179055601b805461ff00191661010017908190556201000090041661454257601b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6014805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6145c96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6146096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6146116134f2565b60c0820181905261462290856150ba565b60808201526146318686613c5c565b156146e457601b546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152878116602483015260448201879052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156146cd575060408051601f3d908101601f191682019092526146ca9181019061525b565b60015b6146d657600080fd5b9050806146e257600080fd5b505b821561489657600080600061271090506000601b60029054906101000a90046001600160a01b03166001600160a01b03166354b762a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015614749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061476d919061525b565b905080156147845761113093506111309250614822565b6001600160a01b03891660009081526003602052604090205460ff16156147c557600d5461ffff808216955068010000000000000000909104169250614822565b6001600160a01b038a1660009081526003602052604090205460ff161561480657600c5461ffff808216955068010000000000000000909104169250614822565b600e5461ffff8082169550680100000000000000009091041692505b8161482d858a6150ba565b61483791906150d9565b602086015281614847848a6150ba565b61485191906150d9565b60408601819052602086015161486791906151c4565b6148719089615172565b855260c0850151602086015161488791906150ba565b60a0860152506148af92505050565b6000602082018190526040820181905284825260a08201525b604081015115614986578060c0015181604001516148cd91906150ba565b30600090815260016020526040812080549091906148ec9084906151c4565b90915550503060009081526008602052604090205460ff161561493457604080820151306000908152600260205291822080549192909161492e9084906151c4565b90915550505b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040015160405161497d91815260200190565b60405180910390a35b8060c00151816040015161499a91906150ba565b8160a001516149a991906151c4565b81608001516149b89190615172565b606082015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614a1e57614a1e6149c6565b604052919050565b600067ffffffffffffffff821115614a4057614a406149c6565b5060051b60200190565b6001600160a01b03811681146132ac57600080fd5b600082601f830112614a7057600080fd5b81356020614a85614a8083614a26565b6149f5565b82815260059290921b84018101918181019086841115614aa457600080fd5b8286015b84811015614ac8578035614abb81614a4a565b8352918301918301614aa8565b509695505050505050565b80151581146132ac57600080fd5b60008060408385031215614af457600080fd5b823567ffffffffffffffff811115614b0b57600080fd5b614b1785828601614a5f565b9250506020830135614b2881614ad3565b809150509250929050565b600060208083528351808285015260005b81811015614b6057858101830151858201604001528201614b44565b81811115614b72576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215614b9a57600080fd5b5035919050565b60008060408385031215614bb457600080fd5b8235614bbf81614a4a565b946020939093013593505050565b60008060408385031215614be057600080fd5b8235614beb81614a4a565b91506020830135614b2881614ad3565b600080600060608486031215614c1057600080fd5b8335614c1b81614a4a565b92506020840135614c2b81614a4a565b929592945050506040919091013590565b600082601f830112614c4d57600080fd5b81356020614c5d614a8083614a26565b82815260059290921b84018101918181019086841115614c7c57600080fd5b8286015b84811015614ac85780358352918301918301614c80565b60008060408385031215614caa57600080fd5b823567ffffffffffffffff80821115614cc257600080fd5b614cce86838701614a5f565b93506020850135915080821115614ce457600080fd5b50614cf185828601614c3c565b9150509250929050565b60008060008060808587031215614d1157600080fd5b8435614d1c81614ad3565b93506020850135614d2c81614ad3565b92506040850135614d3c81614ad3565b91506060850135614d4c81614ad3565b939692955090935050565b600060208284031215614d6957600080fd5b813561182f81614a4a565b600080600080600060a08688031215614d8c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b803561ffff81168114614dc157600080fd5b919050565b600080600060608486031215614ddb57600080fd5b614de484614daf565b9250614df260208501614daf565b9150614e0060408501614daf565b90509250925092565b60008060008060808587031215614e1f57600080fd5b614e2885614daf565b9350614e3660208601614daf565b9250614e4460408601614daf565b9150614e5260608601614daf565b905092959194509250565b600060208284031215614e6f57600080fd5b813561182f81614ad3565b60008060408385031215614e8d57600080fd5b8235614e9881614a4a565b91506020830135614b2881614a4a565b600080600060608486031215614ebd57600080fd5b833567ffffffffffffffff80821115614ed557600080fd5b614ee187838801614a5f565b94506020860135915080821115614ef757600080fd5b614f0387838801614c3c565b93506040860135915080821115614f1957600080fd5b50614f2686828701614c3c565b9150509250925092565b600081518084526020808501945080840160005b83811015614f695781516001600160a01b031687529582019590820190600101614f44565b509495945050505050565b604081526000614f876040830185614f30565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115615002578160001904821115614fe857614fe8614f98565b80851615614ff557918102915b93841c9390800290614fcc565b509250929050565b60008261501957506001610fb0565b8161502657506000610fb0565b816001811461503c576002811461504657615062565b6001915050610fb0565b60ff84111561505757615057614f98565b50506001821b610fb0565b5060208310610133831016604e8410600b8410161715615085575081810a610fb0565b61508f8383614fc7565b80600019048211156150a3576150a3614f98565b029392505050565b600061182f60ff84168361500a565b60008160001904831182151516156150d4576150d4614f98565b500290565b60008261510f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008282101561518457615184614f98565b500390565b600060001982141561519d5761519d614f98565b5060010190565b600060ff821660ff8114156151bb576151bb614f98565b60010192915050565b600082198211156151d7576151d7614f98565b500190565b6000602082840312156151ee57600080fd5b5051919050565b600061ffff80831681851680830382111561521257615212614f98565b01949350505050565b600061ffff8381169083168181101561523657615236614f98565b039392505050565b60006020828403121561525057600080fd5b815161182f81614a4a565b60006020828403121561526d57600080fd5b815161182f81614ad3565b85815284602082015260a06040820152600061529760a0830186614f30565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156152c957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d36b1abc9f7419357f8b4c2355b167862cf897dca444dbbfe5fae3c6dccf144764736f6c634300080b0033
Deployed Bytecode Sourcemap
6584:27880:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8894:73;;;;;;;;;;;;8925:42;8894:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;8894:73:0;;;;;;;;9447:52;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;9447:52:0;245:177:1;19253:172:0;;;;;;;;;;-1:-1:-1;19253:172:0;;;;;:::i;:::-;;:::i;:::-;;13593:80;;;;;;;;;;-1:-1:-1;13665:5:0;;;;;;;;;;;;;;;;;13593:80;;;;;;;:::i;8833:26::-;;;;;;;;;;-1:-1:-1;8833:26:0;;;;-1:-1:-1;;;;;8833:26:0;;;19997:150;;;;;;;;;;-1:-1:-1;19997:150:0;;;;;:::i;:::-;;:::i;14287:161::-;;;;;;;;;;-1:-1:-1;14287:161:0;;;;;:::i;:::-;;:::i;:::-;;;4228:14:1;;4221:22;4203:41;;4191:2;4176:18;14287:161:0;4063:187:1;23350:149:0;;;;;;;;;;;;;:::i;17059:1519::-;;;;;;;;;;-1:-1:-1;17059:1519:0;;;;;:::i;:::-;;:::i;13296:115::-;;;;;;;;;;;;;:::i;14954:306::-;;;;;;;;;;-1:-1:-1;14954:306:0;;;;;:::i;:::-;;:::i;29365:373::-;;;;;;;;;;-1:-1:-1;29365:373:0;;;;;:::i;:::-;;:::i;19794:195::-;;;;;;;;;;-1:-1:-1;19794:195:0;;;;;:::i;:::-;;:::i;16782:141::-;;;;;;;;;;;;;:::i;8630:42::-;;;;;;;;;;;;8668:4;8630:42;;18586:250;;;;;;;;;;-1:-1:-1;18586:250:0;;;;;:::i;:::-;;:::i;9506:50::-;;;;;;;;;;;;;;;;13417:80;;;;;;;;;;-1:-1:-1;13417:80:0;;7461:1;7164:36:1;;7152:2;7137:18;13417:80:0;7022:184:1;19678:108:0;;;;;;;;;;-1:-1:-1;19678:108:0;;;;;:::i;:::-;;:::i;23507:338::-;;;;;;;;;;-1:-1:-1;23507:338:0;;;;;:::i;:::-;;:::i;22638:140::-;;;;;;;;;;-1:-1:-1;22638:140:0;;;;;:::i;:::-;;:::i;15268:215::-;;;;;;;;;;-1:-1:-1;15268:215:0;;;;;:::i;:::-;;:::i;8866:21::-;;;;;;;;;;-1:-1:-1;8866:21:0;;;;-1:-1:-1;;;;;8866:21:0;;;9655:34;;;;;;;;;;-1:-1:-1;9655:34:0;;;;;;;;12150:590;;;;;;;;;;-1:-1:-1;12150:590:0;;;;;:::i;:::-;;:::i;22924:125::-;;;;;;;;;;-1:-1:-1;22924:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;23013:28:0;22989:4;23013:28;;;:19;:28;;;;;;;;;22924:125;9696:36;;;;;;;;;;-1:-1:-1;9696:36:0;;;;;;;;;;;19566:104;;;;;;;;;;;;;:::i;23057:134::-;;;;;;;;;;-1:-1:-1;23057:134:0;;;;;:::i;:::-;;:::i;18844:248::-;;;;;;;;;;-1:-1:-1;18844:248:0;;;;;:::i;:::-;;:::i;22786:130::-;;;;;;;;;;-1:-1:-1;22786:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;22878:30:0;22854:4;22878:30;;;:21;:30;;;;;;;;;22786:130;23199:143;;;;;;;;;;;;;:::i;13906:198::-;;;;;;;;;;-1:-1:-1;13906:198:0;;;;;:::i;:::-;;:::i;12748:195::-;;;;;;;;;;;;;:::i;7949:167::-;;;;;;;;;;-1:-1:-1;7949:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8181:6:1;8214:15;;;8196:34;;8266:15;;;8261:2;8246:18;;8239:43;8318:15;;;8298:18;;;8291:43;;;;8370:15;;8365:2;8350:18;;8343:43;8423:15;;;8417:3;8402:19;;8395:44;8158:3;8143:19;7949:167:0;7922:523:1;16274:500:0;;;;;;;;;;-1:-1:-1;16274:500:0;;;;;:::i;:::-;;:::i;16931:120::-;;;;;;;;;;-1:-1:-1;16931:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;17023:20:0;16999:4;17023:20;;;:11;:20;;;;;;;;;16931:120;13679:80;;;;;;;;;;-1:-1:-1;13731:7:0;12128:6;-1:-1:-1;;;;;12128:6:0;13679:80;23350:149;14773:173;;;;;;;;;;;;;:::i;28737:429::-;;;;;;;;;;;;;:::i;20155:372::-;;;;;;;;;;;;;:::i;13503:84::-;;;;;;;;;;-1:-1:-1;13577:7:0;;;;;;;;;;;;;;;;;13503:84;;15491:225;;;;;;;;;;-1:-1:-1;15491:225:0;;;;;:::i;:::-;;:::i;14112:167::-;;;;;;;;;;-1:-1:-1;14112:167:0;;;;;:::i;:::-;;:::i;21940:288::-;;;;;;;;;;-1:-1:-1;21940:288:0;;;;;:::i;:::-;;:::i;21455:477::-;;;;;;;;;;-1:-1:-1;21455:477:0;;;;;:::i;:::-;;:::i;20539:447::-;;;;;;;;;;-1:-1:-1;20539:447:0;;;;;:::i;:::-;;:::i;20994:453::-;;;;;;;;;;-1:-1:-1;20994:453:0;;;;;:::i;:::-;;:::i;8303:172::-;;;;;;;;;;-1:-1:-1;8303:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8125:169;;;;;;;;;;-1:-1:-1;8125:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24074:164;;;;;;;;;;-1:-1:-1;24074:164:0;;;;;:::i;:::-;;:::i;8484:137::-;;;;;;;;;;-1:-1:-1;8484:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9832:6:1;9865:15;;;9847:34;;9917:15;;;9912:2;9897:18;;9890:43;9969:15;;;9949:18;;;9942:43;;;;10021:15;;;10016:2;10001:18;;9994:43;9809:3;9794:19;8484:137:0;9599:444:1;23853:213:0;;;;;;;;;;-1:-1:-1;23853:213:0;;;;;:::i;:::-;;:::i;22236:194::-;;;;;;;;;;-1:-1:-1;22236:194:0;;;;;:::i;:::-;;:::i;13765:133::-;;;;;;;;;;-1:-1:-1;13765:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13867:19:0;;;13849:7;13867:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13765:133;9364:45;;;;;;;;;;;;;;;;29746:482;;;;;;;;;;-1:-1:-1;29746:482:0;;;;;:::i;:::-;;:::i;22438:192::-;;;;;;;;;;-1:-1:-1;22438:192:0;;;;;:::i;:::-;;:::i;15724:542::-;;;;;;;;;;-1:-1:-1;15724:542:0;;;;;:::i;:::-;;:::i;29174:183::-;;;;;;;;;;;;;:::i;19100:145::-;;;;;;;;;;-1:-1:-1;19100:145:0;;;;;:::i;:::-;;:::i;9084:203::-;;;;;;;;;;-1:-1:-1;9084:203:0;;;;;;-1:-1:-1;;;;;9084:203:0;;;;;;;;;;;-1:-1:-1;;;;;11961:15:1;;;11943:34;;12013:15;;;;12008:2;11993:18;;11986:43;11855:18;9084:203:0;11676:359:1;9318:39:0;;;;;;;;;;-1:-1:-1;9318:39:0;;;;;;;;;;;19433:125;;;;;;;;;;-1:-1:-1;19433:125:0;;;;;:::i;:::-;;:::i;19253:172::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;;;;;;;;;19361:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;19361:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;19399:8;;19409:7;;19361:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19253:172:::0;;:::o;19997:150::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;20081:3:::1;20074;:10;;20066:31;;;::::0;-1:-1:-1;;;20066:31:0;;13424:2:1;20066:31:0::1;::::0;::::1;13406:21:1::0;13463:1;13443:18;;;13436:29;13501:10;13481:18;;;13474:38;13529:18;;20066:31:0::1;13222:331:1::0;20066:31:0::1;20108:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;20108:9:0;;;::::1;-1:-1:-1::0;;;;;20108:9:0::1;::::0;:26:::1;::::0;364:18:1;;20108:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19997:150:::0;:::o;14287:161::-;14362:4;14379:39;189:10;14402:7;14411:6;14379:8;:39::i;:::-;-1:-1:-1;14436:4:0;14287:161;;;;;:::o;23350:149::-;23395:7;23477:13;7461:1;23477:2;:13;:::i;:::-;23467:5;23449:14;;23424:22;:20;:22::i;:::-;:39;;;;:::i;:::-;23423:49;;;;:::i;:::-;23422:69;;;;:::i;:::-;23415:76;;23350:149;:::o;17059:1519::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;17153:7:::1;17149:1422;;;-1:-1:-1::0;;;;;17186:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;17185:21;17177:62;;;::::0;-1:-1:-1;;;17177:62:0;;15964:2:1;17177:62:0::1;::::0;::::1;15946:21:1::0;16003:2;15983:18;;;15976:30;16042;16022:18;;;16015:58;16090:18;;17177:62:0::1;15762:352:1::0;17177:62:0::1;-1:-1:-1::0;;;;;17257:16:0;::::1;17276:1;17257:16:::0;;;:7:::1;:16;::::0;;;;;:20;17254:116:::1;;-1:-1:-1::0;;;;;17337:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;17317:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;17298:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;17254:116:::1;-1:-1:-1::0;;;;;17384:20:0;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;17384:27:0::1;17407:4;17384:27;::::0;;17440:6:::1;::::0;;;::::1;17429:17;17426:79;;17466:9;:23:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;17466:23:0;;;;;::::1;::::0;;-1:-1:-1;;17466:23:0::1;-1:-1:-1::0;;;;;17466:23:0;::::1;;::::0;;17426:79:::1;17059:1519:::0;;:::o;17149:1422::-:1;17527:7;17522:1049;;-1:-1:-1::0;;;;;17559:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;17551:61;;;::::0;-1:-1:-1;;;17551:61:0;;16321:2:1;17551:61:0::1;::::0;::::1;16303:21:1::0;16360:2;16340:18;;;16333:30;16399;16379:18;;;16372:58;16447:18;;17551:61:0::1;16119:352:1::0;17551:61:0::1;17642:6;::::0;-1:-1:-1;;;;;17631:17:0;;::::1;17642:6:::0;::::1;17631:17;17627:933;;;17707:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;17688:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;17669:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:48;;;;17736:7:::1;:16:::0;;;;;:20;;;17775:11:::1;:20:::0;;;:28;;-1:-1:-1;;17775:28:0::1;::::0;;17059:1519;;:::o;17627:933::-:1;17828:9;:16:::0;17848:1:::1;17828:21;17825:735;;;17908:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;17889:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;17870:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:48;;;;17937:7:::1;:16:::0;;;;;:20;;;17976:11:::1;:20:::0;;;:28;;-1:-1:-1;;17976:28:0::1;::::0;;18023:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;18023:15:0;;;;;-1:-1:-1;;18023:15:0::1;::::0;;;;;17059:1519;;:::o;17825:735::-:1;18084:9;18079:466;18103:9;:16:::0;18099:20;::::1;18079:466;;;18169:7;-1:-1:-1::0;;;;;18153:23:0::1;:9;18163:1;18153:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;18153:12:0::1;:23;18149:377;;;18220:9;18230:16:::0;;:20:::1;::::0;18249:1:::1;::::0;18230:20:::1;:::i;:::-;18220:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;18205:9:::1;:12:::0;;-1:-1:-1;;;;;18220:31:0;;::::1;::::0;18215:1;;18205:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;18205:46:0::1;-1:-1:-1::0;;;;;18205:46:0;;::::1;;::::0;;18278:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;18363:10:::1;:8;:10::i;:::-;-1:-1:-1::0;;;;;18344:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;18325:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:48;;;;18400:11:::1;:20:::0;;;:28;;-1:-1:-1;;18400:28:0::1;::::0;;18455:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;18455:15:0;;;;;-1:-1:-1;;18455:15:0::1;::::0;;;;;18079:466:::1;17059:1519:::0;;:::o;18149:377::-:1;18121:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18079:466;;;;17059:1519:::0;;:::o;13296:115::-;13351:7;7523:13;7461:1;7523:2;:13;:::i;:::-;7506:30;;7297:17;7506:30;:::i;:::-;13362:31;;13382:8;;;13362:31;7523:13;7461:1;7523:2;:13;:::i;:::-;7506:30;;7297:17;7506:30;:::i;14954:306::-;-1:-1:-1;;;;;15075:19:0;;15054:4;15075:19;;;:11;:19;;;;;;;;15095:10;15075:31;;;;;;;;-1:-1:-1;;15075:52:0;15071:126;;-1:-1:-1;;;;;15144:19:0;;;;;;:11;:19;;;;;;;;15164:10;15144:31;;;;;;;:41;;15179:6;;15144:19;:41;;15179:6;;15144:41;:::i;:::-;;;;-1:-1:-1;;15071:126:0;15216:36;15226:6;15234:9;15245:6;15216:9;:36::i;:::-;15209:43;14954:306;-1:-1:-1;;;;14954:306:0:o;29365:373::-;29490:7;:14;29471:8;:15;:33;29463:67;;;;-1:-1:-1;;;29463:67:0;;17386:2:1;29463:67:0;;;17368:21:1;17425:2;17405:18;;;17398:30;17464:23;17444:18;;;17437:51;17505:18;;29463:67:0;17184:345:1;29463:67:0;29546:7;29541:190;29563:8;:15;29559:1;:19;;;29541:190;;;29633:7;29641:1;29633:10;;;;;;;;;;:::i;:::-;;;;;;;29608:21;29618:10;29608:9;:21::i;:::-;:35;;29600:44;;;;;;29659:60;29669:10;29681:8;29690:1;29681:11;;;;;;;;;;:::i;:::-;;;;;;;7461:1;29705:2;:13;;;;:::i;:::-;29694:7;29702:1;29694:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;29659:9;:60::i;:::-;-1:-1:-1;29580:3:0;;;;:::i;:::-;;;;29541:190;;19794:195;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;19916:9:::1;::::0;:65:::1;::::0;;;;17946:14:1;;17939:22;19916:65:0::1;::::0;::::1;17921:41:1::0;18005:14;;17998:22;17978:18;;;17971:50;18064:14;;18057:22;18037:18;;;18030:50;18123:14;;18116:22;18096:18;;;18089:50;19916:9:0;;;::::1;-1:-1:-1::0;;;;;19916:9:0::1;::::0;:24:::1;::::0;17893:19:1;;19916:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19794:195:::0;;;;:::o;16782:141::-;16835:7;16892:21;16910:1;16892:9;:21::i;:::-;16874:15;8925:42;16874:9;:15::i;:::-;:39;;;;:::i;:::-;7523:13;7461:1;7523:2;:13;:::i;:::-;7506:30;;7297:17;7506:30;:::i;:::-;16863:51;;;;:::i;18586:250::-;18652:7;18691;;18680;:18;;18672:73;;;;-1:-1:-1;;;18672:73:0;;18485:2:1;18672:73:0;;;18467:21:1;18524:2;18504:18;;;18497:30;18563:34;18543:18;;;18536:62;18634:12;18614:18;;;18607:40;18664:19;;18672:73:0;18283:406:1;18672:73:0;18756:19;18779:10;:8;:10::i;:::-;18756:33;-1:-1:-1;18807:21:0;18756:33;18807:7;:21;:::i;:::-;18800:28;18586:250;-1:-1:-1;;;18586:250:0:o;19678:108::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;19747:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;19747:31:0::1;::::0;::::1;160:74:1::0;19747:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;19747:31:0::1;14:226:1::0;23507:338:0;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;23721:16;23701;7523:13:::1;7461:1;7523:2;:13;:::i;:::-;7506:30;::::0;7297:17:::1;7506:30;:::i;:::-;23691:26;;;;:::i;:::-;23690:47;;;;:::i;:::-;23674:13;:63:::0;23789:13;23772;7523::::1;7461:1;7523:2;:13;:::i;:::-;7506:30;::::0;7297:17:::1;7506:30;:::i;:::-;23762:23;;;;:::i;:::-;23761:41;;;;:::i;:::-;23748:10;:54:::0;23813:17:::1;:24:::0;-1:-1:-1;;;;23507:338:0:o;22638:140::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;-1:-1:-1;;;;;22730:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;22730:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22638:140::o;15268:215::-;189:10;15356:4;15405:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15405:34:0;;;;;;;;;;15356:4;;15373:80;;15396:7;;15405:47;;15442:10;;15405:47;:::i;:::-;15373:8;:80::i;12150:590::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;-1:-1:-1;;;;;12231:22:0;::::1;12223:96;;;::::0;-1:-1:-1;;;12223:96:0;;18896:2:1;12223:96:0::1;::::0;::::1;18878:21:1::0;18935:2;18915:18;;;18908:30;18974:34;18954:18;;;18947:62;19045:31;19025:18;;;19018:59;19094:19;;12223:96:0::1;18694:425:1::0;12223:96:0::1;-1:-1:-1::0;;;;;12338:16:0;::::1;8925:42;12338:16;;12330:90;;;::::0;-1:-1:-1;;;12330:90:0;;18896:2:1;12330:90:0::1;::::0;::::1;18878:21:1::0;18935:2;18915:18;;;18908:30;18974:34;18954:18;;;18947:62;19045:31;19025:18;;;19018:59;19094:19;;12330:90:0::1;18694:425:1::0;12330:90:0::1;12451:6;::::0;;12431:34:::1;::::0;-1:-1:-1;;;;;12451:6:0;;::::1;::::0;12431:19:::1;:34::i;:::-;12476:35;12496:8;12506:4;12476:19;:35::i;:::-;12555:1;12545:6:::0;;12535:17:::1;::::0;-1:-1:-1;;;;;12545:6:0::1;12535:9;:17::i;:::-;:21;12532:99;;;12583:6;::::0;12573:46:::1;::::0;-1:-1:-1;;;;;12583:6:0::1;12591:8:::0;12601:17:::1;12583:6:::0;12601:9:::1;:17::i;12573:46::-;;12532:99;12651:6;:17:::0;;-1:-1:-1;;12651:17:0::1;-1:-1:-1::0;;;;;12651:17:0;::::1;::::0;;::::1;::::0;;12684:38:::1;::::0;12651:17;;;;12684:38:::1;::::0;12651:6;12684:38:::1;12150:590:::0;:::o;19566:104::-;19611:7;19638:9;;;;;;;;;-1:-1:-1;;;;;19638:9:0;-1:-1:-1;;;;;19638:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23057:134::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;-1:-1:-1;;;;;23145:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;23145:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23057:134::o;18844:248::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;18928:16:::1;::::0;::::1;::::0;::::1;;;18927:17;18919:54;;;::::0;-1:-1:-1;;;18919:54:0;;19515:2:1;18919:54:0::1;::::0;::::1;19497:21:1::0;19554:2;19534:18;;;19527:30;19593:26;19573:18;;;19566:54;19637:18;;18919:54:0::1;19313:348:1::0;18919:54:0::1;-1:-1:-1::0;;;;;18992:28:0;::::1;19015:4;18992:28;;18984:55;;;::::0;-1:-1:-1;;;18984:55:0;;19868:2:1;18984:55:0::1;::::0;::::1;19850:21:1::0;19907:2;19887:18;;;19880:30;19946:16;19926:18;;;19919:44;19980:18;;18984:55:0::1;19666:338:1::0;18984:55:0::1;19050:9;:34:::0;;-1:-1:-1;;;;;19050:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;18844:248::o;23199:143::-;23240:7;23320:13;7461:1;23320:2;:13;:::i;:::-;23310:5;23294:12;;23269:22;:20;:22::i;13906:198::-;-1:-1:-1;;;;;13996:20:0;;13972:7;13996:20;;;:11;:20;;;;;;;;13992:49;;;-1:-1:-1;;;;;;14025:16:0;;;;;:7;:16;;;;;;;13906:198::o;13992:49::-;-1:-1:-1;;;;;14079:16:0;;;;;;:7;:16;;;;;;14059:37;;:19;:37::i;12748:195::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;12835:6:::1;::::0;;12815:34:::1;::::0;-1:-1:-1;;;;;12835:6:0;;::::1;::::0;12815:19:::1;:34::i;:::-;12877:1;12860:19:::0;;-1:-1:-1;;12860:19:0::1;::::0;;12895:40:::1;::::0;12877:1;;12895:40:::1;::::0;12877:1;;12895:40:::1;12748:195::o:0;16274:500::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;16355:16;16351:416:::1;;-1:-1:-1::0;;;;;16388:13:0;;::::1;16404:5;16388:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;16388:21:0::1;::::0;;16424:9:::1;::::0;:32;;;;;::::1;::::0;::::1;20177:74:1::0;;;;20267:18;;;20260:50;;;;16424:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;20150:18:1;;16424:32:0::1;;;;;;;;;;;;;;;;;::::0;::::1;16351:416;16493:17;::::0;:22;16489:136:::1;;16582:6;16562:17;;16544:15;:35;;;;:::i;:::-;:44;16536:73;;;::::0;-1:-1:-1;;;16536:73:0;;20523:2:1;16536:73:0::1;::::0;::::1;20505:21:1::0;20562:2;20542:18;;;20535:30;20601:18;20581;;;20574:46;20637:18;;16536:73:0::1;20321:340:1::0;16536:73:0::1;-1:-1:-1::0;;;;;16639:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;16639:20:0::1;16655:4;16639:20:::0;;::::1;::::0;;;16694:15:::1;16674:17;:35:::0;;;16724:9:::1;::::0;:31;;;;;;;::::1;20177:74:1::0;;;;20267:18;;;20260:50;16724:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;20150:18:1;;16724:31:0::1;20009:307:1::0;14773:173:0;14837:4;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;14886:9:::1;::::0;14854:62:::1;::::0;14871:4:::1;::::0;-1:-1:-1;;;;;14886:9:0::1;-1:-1:-1::0;;14854:8:0::1;:62::i;:::-;-1:-1:-1::0;14934:4:0::1;14773:173:::0;:::o;28737:429::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;28799:14:::1;::::0;::::1;;28798:15;28790:52;;;::::0;-1:-1:-1;;;28790:52:0;;20868:2:1;28790:52:0::1;::::0;::::1;20850:21:1::0;20907:2;20887:18;;;20880:30;20946:26;20926:18;;;20919:54;20990:18;;28790:52:0::1;20666:348:1::0;28790:52:0::1;28861:16;::::0;::::1;::::0;::::1;;;28853:53;;;::::0;-1:-1:-1;;;28853:53:0;;21221:2:1;28853:53:0::1;::::0;::::1;21203:21:1::0;21260:2;21240:18;;;21233:30;21299:26;21279:18;;;21272:54;21343:18;;28853:53:0::1;21019:348:1::0;28853:53:0::1;28928:9;::::0;;;::::1;-1:-1:-1::0;;;;;28928:9:0::1;28917:99;;28968:9;:36:::0;;;::::1;28998:4;28968:36:::0;::::1;;::::0;;28917:99:::1;29030:9;::::0;29050:6:::1;::::0;29030:85:::1;::::0;;;;-1:-1:-1;;;;;29050:6:0;;::::1;29030:85;::::0;::::1;21595:74:1::0;21717:10;29065:12:0::1;21705:23:1::0;21685:18;;;21678:51;21777:18;29087:15:0::1;21765:31:1::0;21745:18;;;21738:59;7461:1:0::1;21813:18:1::0;;;21806:45;29030:9:0;;;::::1;;::::0;:19:::1;::::0;21567::1;;29030:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;29026:101:::0;29137:14:::1;:21:::0;;-1:-1:-1;;29137:21:0::1;29154:4;29137:21;::::0;;28737:429::o;20155:372::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;20217:10:::1;:26:::0;;20365:27;;;;;;20403:7:::1;:21:::0;;20326:28;20501:18;;;;;20155:372::o;15491:225::-;189:10;15584:4;15633:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15633:34:0;;;;;;;;;;15584:4;;15601:85;;15624:7;;15633:52;;15670:15;;15633:52;:::i;14112:167::-;14190:4;14207:42;189:10;14231:9;14242:6;14207:9;:42::i;:::-;-1:-1:-1;14267:4:0;;14112:167;-1:-1:-1;;;14112:167:0:o;21940:288::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;22045:7:::1;:29:::0;;::::1;22125:33:::0;;::::1;::::0;::::1;::::0;22085:29;;::::1;::::0;::::1;::::0;;;;22045;;::::1;22085::::0;;;;;;;::::1;22125:33;;::::0;;22147:11;22185:21:::1;22105:9:::0;22065;22185:21:::1;:::i;:::-;:35;;;;:::i;:::-;22169:7;:51:::0;;::::1;::::0;;;::::1;::::0;::::1;-1:-1:-1::0;;22169:51:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;21940:288:0:o;21455:477::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;21583:12:::1;21632:11:::0;21620:9;21598:19:::1;21608:9:::0;21598:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:45;;;;:::i;:::-;21583:60;;8668:4;21662:5;:20;;;;21654:29;;;::::0;::::1;;21694:14;:36:::0;;::::1;21741:32:::0;;::::1;21784:36:::0;;;;21694;;;::::1;;21784::::0;;;;;;;;;;::::1;;;-1:-1:-1::0;;21831:40:0::1;::::0;;;::::1;::::0;;;::::1;;::::0;;21909:15:::1;21741:32:::0;21909:5;:15:::1;:::i;:::-;21882:14;:42:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;21455:477:0:o;20539:447::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;20662:12:::1;20711:11:::0;20699:9;20677:19:::1;20687:9:::0;20677:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:45;;;;:::i;:::-;20662:60;;8668:4;20741:5;:20;;;;20733:29;;;::::0;::::1;;20773:9;:31:::0;;::::1;20815:27:::0;;::::1;20853:31:::0;;;;20773;;;::::1;;20853::::0;;;;;;;;;;::::1;;;-1:-1:-1::0;;20895:35:0::1;::::0;;;::::1;::::0;;;::::1;;::::0;;20963:15:::1;20815:27:::0;20963:5;:15:::1;:::i;:::-;20941:9;:37:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;20539:447:0:o;20994:453::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;21118:12:::1;21167:11:::0;21155:9;21133:19:::1;21143:9:::0;21133:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:45;;;;:::i;:::-;21118:60;;8668:4;21197:5;:20;;;;21189:29;;;::::0;::::1;;21229:10;:32:::0;;::::1;21272:28:::0;;::::1;21311:32:::0;;;;21229;;;::::1;;21311::::0;;;;;;;;;;::::1;;;-1:-1:-1::0;;21354:36:0::1;::::0;;;::::1;::::0;;;::::1;;::::0;;21424:15:::1;21272:28:::0;21424:5;:15:::1;:::i;:::-;21401:10;:38:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;20994:453:0:o;24074:164::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;24150:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;24150:29:0;;::::1;;::::0;;24195:35:::1;::::0;::::1;::::0;::::1;::::0;24172:7;4228:14:1;4221:22;4203:41;;4191:2;4176:18;;4063:187;24195:35:0::1;;;;;;;;24074:164:::0;:::o;23853:213::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;23959:23;:46;;-1:-1:-1;;;;;23959:46:0;;::::1;-1:-1:-1::0;;23959:46:0;;::::1;;::::0;;;:11:::1;24016:42:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;23853:213::o;22236:194::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;22327:2:::1;22316:7;:13;;22308:81;;;::::0;-1:-1:-1;;;22308:81:0;;22515:2:1;22308:81:0::1;::::0;::::1;22497:21:1::0;22554:2;22534:18;;;22527:30;22593:34;22573:18;;;22566:62;22664:25;22644:18;;;22637:53;22707:19;;22308:81:0::1;22313:419:1::0;22308:81:0::1;22400:12;:22:::0;22236:194::o;29746:482::-;29901:8;:15;29882:8;:15;:34;:72;;;;;29939:8;:15;29920:8;:15;:34;29882:72;29874:106;;;;-1:-1:-1;;;29874:106:0;;17386:2:1;29874:106:0;;;17368:21:1;17425:2;17405:18;;;17398:30;17464:23;17444:18;;;17437:51;17505:18;;29874:106:0;17184:345:1;29874:106:0;29996:7;29991:230;30013:8;:15;30009:1;:19;;;29991:230;;;30109:8;30118:1;30109:11;;;;;;;;;;:::i;:::-;;;;;;;30094:8;30103:1;30094:11;;;;;;;;;;:::i;:::-;;;;;;;7461:1;7523:2;:13;;;;:::i;:::-;7506:30;;7297:17;7506:30;:::i;:::-;30084:21;;;;:::i;:::-;30083:37;;;;:::i;:::-;30058:21;30068:10;30058:9;:21::i;:::-;:62;;30050:71;;;;;;30136:73;30146:10;30158:8;30167:1;30158:11;;;;;;;;;;:::i;:::-;;;;;;;30197:8;30206:1;30197:11;;;;;;;;;;:::i;:::-;;;;;;;30182:8;30191:1;30182:11;;;;;;;;;;:::i;:::-;;;;;;;7461:1;7523:2;:13;;;;:::i;:::-;7506:30;;7297:17;7506:30;:::i;:::-;30172:21;;;;:::i;:::-;30171:37;;;;:::i;30136:73::-;-1:-1:-1;30030:3:0;;;;:::i;:::-;;;;29991:230;;;;29746:482;;;:::o;22438:192::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;22530:2:::1;22519:7;:13;;22511:76;;;::::0;-1:-1:-1;;;22511:76:0;;22939:2:1;22511:76:0::1;::::0;::::1;22921:21:1::0;22978:2;22958:18;;;22951:30;23017:34;22997:18;;;22990:62;23088:20;23068:18;;;23061:48;23126:19;;22511:76:0::1;22737:414:1::0;22511:76:0::1;22598:14;:24:::0;22438:192::o;15724:542::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;15795:20:::1;15828:9;15795:43;;15849:16;15879:10;-1:-1:-1::0;;;;;15879:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15868:40:0::1;;15917:4;15924:10;-1:-1:-1::0;;;;;15924:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15868:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;11961:15:1;;;15868:74:0::1;::::0;::::1;11943:34:1::0;12013:15;;11993:18;;;11986:43;11855:18;;15868:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15849:93:::0;-1:-1:-1;;;;;;15957:22:0;::::1;15953:200;;16016:10;-1:-1:-1::0;;;;;16016:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16005:43:0::1;;16057:4;16064:10;-1:-1:-1::0;;;;;16064:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16005:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;11961:15:1;;;16005:77:0::1;::::0;::::1;11943:34:1::0;12013:15;;11993:18;;;11986:43;11855:18;;16005:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15996:6;:86:::0;;-1:-1:-1;;15996:86:0::1;-1:-1:-1::0;;;;;15996:86:0;;;::::1;::::0;;;::::1;::::0;;15953:200:::1;;;16124:6;:17:::0;;-1:-1:-1;;16124:17:0::1;-1:-1:-1::0;;;;;16124:17:0;::::1;;::::0;;15953:200:::1;16163:9;:22:::0;;-1:-1:-1;;16163:22:0::1;-1:-1:-1::0;;;;;16163:22:0;::::1;::::0;;::::1;::::0;;;16196:62:::1;::::0;16213:4:::1;::::0;-1:-1:-1;;16196:8:0::1;:62::i;29174:183::-:0;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;29241:16:::1;::::0;::::1;::::0;::::1;;;29240:17;29232:58;;;::::0;-1:-1:-1;;;29232:58:0;;23946:2:1;29232:58:0::1;::::0;::::1;23928:21:1::0;23985:2;23965:18;;;23958:30;24024;24004:18;;;23997:58;24072:18;;29232:58:0::1;23744:352:1::0;29232:58:0::1;12101:7:::0;12128:6;;29301:48:::1;::::0;-1:-1:-1;;;;;12128:6:0;;;;29327:21:::1;29301:48:::0;::::1;;;::::0;29327:21;;29301:48;12101:7;29301:48;29327:21;12128:6;29301:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;29174:183::o:0;19100:145::-;10124:6;;-1:-1:-1;;;;;10124:6:0;189:10;10124:22;10116:52;;;;-1:-1:-1;;;10116:52:0;;12242:2:1;10116:52:0;;;12224:21:1;12281:2;12261:18;;;12254:30;-1:-1:-1;;;12300:18:1;;;12293:47;12357:18;;10116:52:0;12040:341:1;10116:52:0;19190:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;20195:55:1;;;19190:47:0::1;::::0;::::1;20177:74:1::0;20294:14;;20287:22;20267:18;;;20260:50;19190:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;20150:18:1;;19190:47:0::1;20009:307:1::0;19433:125:0;19518:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;19518:32:0;;;160:74:1;19494:4:0;;19518:9;;;;;:23;;133:18:1;;19518:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14456:309::-;-1:-1:-1;;;;;14550:20:0;;14542:52;;;;-1:-1:-1;;;14542:52:0;;24553:2:1;14542:52:0;;;24535:21:1;24592:2;24572:18;;;24565:30;24631:21;24611:18;;;24604:49;24670:18;;14542:52:0;24351:343:1;14542:52:0;-1:-1:-1;;;;;14613:21:0;;14605:53;;;;-1:-1:-1;;;14605:53:0;;24553:2:1;14605:53:0;;;24535:21:1;24592:2;24572:18;;;24565:30;24631:21;24611:18;;;24604:49;24670:18;;14605:53:0;24351:343:1;14605:53:0;-1:-1:-1;;;;;14671:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;14724:33;;391:25:1;;;14724:33:0;;364:18:1;14724:33:0;;;;;;;14456:309;;;:::o;33643:818::-;33723:7;;33685;;;7523:13;7461:1;7523:2;:13;:::i;:::-;7506:30;;7297:17;7506:30;:::i;:::-;33792:6;;-1:-1:-1;;;;;33792:6:0;33780:19;;;;:11;:19;;;;;;33741:25;;-1:-1:-1;33780:19:0;;33777:217;;;33828:6;;-1:-1:-1;;;;;33828:6:0;33820:15;;;;:7;:15;;;;;;:25;-1:-1:-1;33820:25:0;:54;;-1:-1:-1;33857:6:0;;-1:-1:-1;;;;;33857:6:0;33849:15;;;;:7;:15;;;;;;:25;-1:-1:-1;33820:54:0;33816:84;;;7523:13;7461:1;7523:2;:13;:::i;:::-;7506:30;;7297:17;7506:30;:::i;:::-;33883:7;;:17;;;;:::i;:::-;33876:24;;;;33643:818;:::o;33816:84::-;33934:6;;-1:-1:-1;;;;;33934:6:0;33926:15;;;;:7;:15;;;;;;33915:26;;;;:::i;:::-;33975:6;;-1:-1:-1;;;;;33975:6:0;33967:15;;;;:7;:15;;;;;;33915:26;;-1:-1:-1;33956:26:0;;;;:::i;:::-;;;33777:217;34007:9;:16;:20;34004:347;;34049:7;34044:296;34066:9;:16;34062:20;;;;34044:296;;;34136:7;34112;:21;34120:9;34130:1;34120:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34120:12:0;34112:21;;;;;;;;;;;;;:31;;:66;;;34171:7;34147;:21;34155:9;34165:1;34155:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34155:12:0;34147:21;;;;;;;;;;;;;:31;34112:66;34108:96;;;7523:13;7461:1;7523:2;:13;:::i;:::-;7506:30;;7297:17;7506:30;:::i;:::-;34187:7;;:17;;;;:::i;:::-;34180:24;;;;;33643:818;:::o;34108:96::-;34243:7;:21;34251:9;34261:1;34251:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34251:12:0;34243:21;;;;;;;;;;;;;34233:31;;:7;:31;:::i;:::-;34223:41;;34303:7;:21;34311:9;34321:1;34311:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34311:12:0;34303:21;;;;;;;;;;;;;34293:31;;:7;:31;:::i;:::-;34283:41;-1:-1:-1;34084:3:0;;;;:::i;:::-;;;;34044:296;;;;34004:347;7523:13;7461:1;7523:2;:13;:::i;:::-;7506:30;;7297:17;7506:30;:::i;:::-;34375:7;;:17;;;;:::i;:::-;34365:7;:27;34361:57;;;7523:13;7461:1;7523:2;:13;:::i;34361:57::-;34436:17;34446:7;34436;:17;:::i;24614:1802::-;24693:4;-1:-1:-1;;;;;24718:18:0;;24710:68;;;;-1:-1:-1;;;24710:68:0;;24901:2:1;24710:68:0;;;24883:21:1;24940:2;24920:18;;;24913:30;24979:34;24959:18;;;24952:62;25050:7;25030:18;;;25023:35;25075:19;;24710:68:0;24699:401:1;24710:68:0;-1:-1:-1;;;;;24797:16:0;;24789:64;;;;-1:-1:-1;;;24789:64:0;;25307:2:1;24789:64:0;;;25289:21:1;25346:2;25326:18;;;25319:30;25385:34;25365:18;;;25358:62;25456:5;25436:18;;;25429:33;25479:19;;24789:64:0;25105:399:1;24789:64:0;24881:1;24872:6;:10;24864:64;;;;-1:-1:-1;;;24864:64:0;;25711:2:1;24864:64:0;;;25693:21:1;25750:2;25730:18;;;25723:30;25789:34;25769:18;;;25762:62;25860:11;25840:18;;;25833:39;25889:19;;24864:64:0;25509:405:1;24864:64:0;24942:20;24953:4;24959:2;24942:10;:20::i;:::-;24939:649;;;24983:14;;;;24979:89;;25018:34;;-1:-1:-1;;;25018:34:0;;26121:2:1;25018:34:0;;;26103:21:1;26160:2;26140:18;;;26133:30;26199:26;26179:18;;;26172:54;26243:18;;25018:34:0;25919:348:1;24979:89:0;-1:-1:-1;;;;;25085:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;25102:11:0;;;;;;:7;:11;;;;;;;;25085:28;25082:245;;;25152:5;25137:12;;:20;25133:179;;;25242:5;25216:22;:20;:22::i;:::-;25201:12;;:37;;;;:::i;:::-;25200:47;;;;:::i;:::-;25190:6;:57;;25182:110;;;;-1:-1:-1;;;25182:110:0;;26474:2:1;25182:110:0;;;26456:21:1;26513:2;26493:18;;;26486:30;26552:34;26532:18;;;26525:62;26623:10;26603:18;;;26596:38;26651:19;;25182:110:0;26272:404:1;25182:110:0;25358:9;;-1:-1:-1;;;;;25344:24:0;;;25358:9;;25344:24;;;;:40;;-1:-1:-1;;;;;;25373:11:0;;;;;;:7;:11;;;;;;;;25372:12;25344:40;:66;;;;;25405:5;25388:14;;:22;25344:66;25341:236;;;25509:5;25483:22;:20;:22::i;:::-;25466:14;;:39;;;;:::i;:::-;25465:49;;;;:::i;:::-;25455:6;25439:13;25449:2;25439:9;:13::i;:::-;:22;;;;:::i;:::-;:75;;25431:130;;;;-1:-1:-1;;;25431:130:0;;26883:2:1;25431:130:0;;;26865:21:1;26922:2;26902:18;;;26895:30;26961:34;26941:18;;;26934:62;27032:12;27012:18;;;27005:40;27062:19;;25431:130:0;26681:406:1;25431:130:0;-1:-1:-1;;;;;25633:25:0;;25600:12;25633:25;;;:19;:25;;;;;;25615:4;;25633:25;;;:52;;-1:-1:-1;;;;;;25662:23:0;;;;;;:19;:23;;;;;;;;25633:52;25630:98;;;-1:-1:-1;25711:5:0;25630:98;-1:-1:-1;;;;;25744:11:0;;;;;;:7;:11;;;;;;;;25740:606;;;25777:6;;;;25776:7;:47;;;;-1:-1:-1;25804:19:0;;;;;;;25776:47;25772:557;;;25893:15;25873:17;;25862:8;;:28;;;;:::i;:::-;:46;25858:456;;;25933:28;25964:24;25982:4;25964:9;:24::i;:::-;25933:55;;26039:13;;26015:20;:37;26011:284;;26108:10;;26084:20;:34;26081:77;;-1:-1:-1;26145:10:0;;26081:77;26184:34;26197:20;26184:12;:34::i;:::-;26256:15;26245:8;:26;26011:284;25910:404;25858:456;26364:44;26382:4;26388:2;26392:6;26400:7;26364:17;:44::i;:::-;26357:51;24614:1802;-1:-1:-1;;;;;24614:1802:0:o;24246:360::-;24314:4;12128:6;;-1:-1:-1;;;;;24338:15:0;;;12128:6;;24338:15;;;;:45;;-1:-1:-1;12101:7:0;12128:6;-1:-1:-1;;;;;24370:13:0;;;12128:6;;24370:13;;24338:45;:82;;;;-1:-1:-1;12101:7:0;12128:6;-1:-1:-1;;;;;12128:6:0;24400:9;:20;;24338:82;:121;;;;-1:-1:-1;;;;;;24438:21:0;;;;;;:17;:21;;;;;;;;24437:22;24338:121;:162;;;;-1:-1:-1;;;;;;24477:23:0;;;;;;:17;:23;;;;;;;;24476:24;24338:162;:189;;;;-1:-1:-1;;;;;;24517:10:0;;8925:42;24517:10;;24338:189;:222;;;;-1:-1:-1;;;;;;24544:16:0;;;;24338:222;:260;;;;-1:-1:-1;;;;;;24577:21:0;;24593:4;24577:21;;24331:267;24246:360;-1:-1:-1;;;24246:360:0:o;26424:1789::-;10018:6;:13;;-1:-1:-1;;10018:13:0;10027:4;10018:13;;;26507:30:::1;::::0;;::::1;::::0;::::1;::::0;;26530:7:::1;26507:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;26548:56:::1;;26586:7;;;26548:56;26639:4;26619:26;::::0;;;:11:::1;:26;::::0;;;;;;;26654:9:::1;::::0;-1:-1:-1;;;;;26654:9:0::1;26619:46:::0;;;;;;;;-1:-1:-1;;26619:67:0::1;26616:165;;26723:4;26703:26;::::0;;;:11:::1;:26;::::0;;;;;;;26738:9:::1;::::0;-1:-1:-1;;;;;26738:9:0::1;26703:46:::0;;;;;;;-1:-1:-1;;26703:66:0;;26616:165:::1;26793:17;26874:1;26858:6;:12;;;26814:56;;26838:6;:16;;;26815:39;;:20;:39;;;;:::i;:::-;26814:56;;;;:::i;:::-;26813:62;;;;:::i;:::-;26793:82:::0;-1:-1:-1;26886:15:0::1;26904:32;26793:82:::0;26904:20;:32:::1;:::i;:::-;26981:16;::::0;;26995:1:::1;26981:16:::0;;;;;::::1;::::0;;26886:50;;-1:-1:-1;26957:21:0::1;::::0;26981:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;26981:16:0::1;26957:40;;27026:4;27008;27013:1;27008:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27008:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;27052:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;27008:7;;27052:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27042:4;27047:1;27042:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27042:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;27081:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;27156:7;;27081:9:::1;::::0;27194:4;;27221::::1;::::0;27241:15:::1;::::0;27081:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;27301:21:0::1;::::0;-1:-1:-1;27280:18:0::1;::::0;-1:-1:-1;27387:7:0;;-1:-1:-1;27361:22:0::1;27374:9:::0;27301:21;27361:22:::1;:::i;:::-;27360:34;;;;:::i;:::-;27333:61:::0;-1:-1:-1;27411:13:0;;27407:328:::1;;27441:9;::::0;:222:::1;::::0;;;;27518:4:::1;27441:222;::::0;::::1;28066:34:1::0;28116:18;;;28109:34;;;27441:9:0::1;28159:18:1::0;;;28152:34;;;28202:18;;;28195:34;8925:42:0::1;28245:19:1::0;;;28238:44;27633:15:0::1;28298:19:1::0;;;28291:35;-1:-1:-1;;;;;27441:9:0;;::::1;::::0;:25:::1;::::0;27474:16;;27977:19:1;;27441:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;27683:40:0::1;::::0;;28822:25:1;;;28878:2;28863:18;;28856:34;;;27683:40:0::1;::::0;-1:-1:-1;28795:18:1;27683:40:0::1;;;;;;;27407:328;27747:30;27761:16:::0;27747:30;::::1;:::i;:::-;;;27804:6;:16;;;27788:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;27896:12:::1;::::0;::::1;::::0;27874:18:::1;::::0;::::1;::::0;27831:26:::1;::::0;-1:-1:-1;27860:48:0;;::::1;::::0;27861:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;27860:48;;;;:::i;:::-;27831:77:::0;-1:-1:-1;27919:24:0::1;27946:31;27831:77:::0;27946:10;:31:::1;:::i;:::-;27992:18;::::0;::::1;::::0;27919:58;;-1:-1:-1;27992:22:0::1;;::::0;27988:107:::1;;28031:23:::0;;:52:::1;::::0;-1:-1:-1;;;;;28031:23:0;;::::1;::::0;:52;::::1;;;::::0;28064:18;;28031:23:::1;:52:::0;:23;:52;28064:18;28031:23;:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27988:107;28109:16;::::0;::::1;::::0;:20:::1;;::::0;28105:101:::1;;28146:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;28146:21:0;;::::1;::::0;:48;::::1;;;::::0;28177:16;;28146:21:::1;:48:::0;:21;:48;28177:16;28146:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28105:101;26496:1717;;;;;;;;10042:1;-1:-1:-1::0;10054:6:0;:14;;-1:-1:-1;;10054:14:0;;;26424:1789::o;30469:909::-;30592:16;;30570:4;;30592:16;;;;;30587:221;;30625:28;30644:4;30650:2;30625:18;:28::i;:::-;30673:16;;;;;;;30672:17;:41;;;;;30693:20;30704:4;30710:2;30693:10;:20::i;:::-;30668:129;;;30734:47;;-1:-1:-1;;;30734:47:0;;29103:2:1;30734:47:0;;;29085:21:1;29142:2;29122:18;;;29115:30;29181:34;29161:18;;;29154:62;29252:7;29232:18;;;29225:35;29277:19;;30734:47:0;28901:401:1;30668:129:0;30820:25;30848:38;30859:4;30865:2;30869:7;30878;30848:10;:38::i;:::-;30916:14;;;;-1:-1:-1;;;;;30899:13:0;;;;;;:7;:13;;;;;:31;;30820:66;;-1:-1:-1;30916:14:0;;30899:31;;30916:14;;30899:31;:::i;:::-;;;;-1:-1:-1;;30956:22:0;;;;-1:-1:-1;;;;;30941:11:0;;;;;;:7;:11;;;;;:37;;:11;;;:37;;30956:22;;30941:37;:::i;:::-;;;;-1:-1:-1;;;;;;;30995:17:0;;;;;;:11;:17;;;;;;;;30991:89;;;-1:-1:-1;;;;;31045:13:0;;;;;;:7;:13;;;;;;:23;;31061:7;;31045:23;:::i;:::-;-1:-1:-1;;;;;31029:13:0;;;;;;:7;:13;;;;;:39;30991:89;-1:-1:-1;;;;;31094:15:0;;;;;;:11;:15;;;;;;;;31090:98;;;31154:22;;-1:-1:-1;;;;;31140:11:0;;31154:22;31140:11;;;:7;:11;;;;;;:36;;31154:22;31140:36;:::i;:::-;-1:-1:-1;;;;;31126:11:0;;;;;;:7;:11;;;;;:50;31090:98;31218:1;31204:6;:11;;;:15;:34;;;;31237:1;31223:6;:11;;;:15;31204:34;31200:89;;;31266:6;:11;;;31255:7;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;31200:89:0;31321:2;-1:-1:-1;;;;;31306:42:0;31315:4;-1:-1:-1;;;;;31306:42:0;;31325:6;:22;;;31306:42;;;;391:25:1;;379:2;364:18;;245:177;31306:42:0;;;;;;;;-1:-1:-1;31366:4:0;;30469:909;-1:-1:-1;;;;;30469:909:0:o;28221:508::-;28303:16;;;;;;;28302:17;28294:65;;;;-1:-1:-1;;;28294:65:0;;29509:2:1;28294:65:0;;;29491:21:1;29548:2;29528:18;;;29521:30;29587:34;29567:18;;;29560:62;29658:5;29638:18;;;29631:33;29681:19;;28294:65:0;29307:399:1;28294:65:0;28375:20;28386:4;28392:2;28375:10;:20::i;:::-;28374:21;:37;;;;-1:-1:-1;28405:6:0;;-1:-1:-1;;;;;28399:12:0;;;28405:6;;28399:12;28374:37;28370:352;;;-1:-1:-1;;;;;28428:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;28428:30:0;28454:4;28428:30;;;28473:16;:23;;-1:-1:-1;;28473:23:0;28428:30;28473:23;;;;;28522:9;;;;28511:107;;28566:9;:36;;;;28596:4;28566:36;;;;;28511:107;28632:19;:26;;-1:-1:-1;;28632:26:0;;;;;28678:32;;-1:-1:-1;4203:41:1;;28678:32:0;;4191:2:1;4176:18;28678:32:0;;;;;;;28221:508;;:::o;31386:2249::-;31480:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31480:18:0;31511:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31511:25:0;31568:10;:8;:10::i;:::-;31547:18;;;:31;;;31608:28;;:7;:28;:::i;:::-;31591:14;;;:45;31653:20;31664:4;31670:2;31653:10;:20::i;:::-;31649:315;;;31721:9;;:38;;;;;-1:-1:-1;;;;;29992:15:1;;;31721:38:0;;;29974:34:1;30044:15;;;30024:18;;;30017:43;30076:18;;;30069:34;;;31690:12:0;;31721:9;;;;;:19;;29886:18:1;;31721:38:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;31721:38:0;;;;;;;;-1:-1:-1;;31721:38:0;;;;;;;;;;;;:::i;:::-;;;31717:164;;31857:8;;;31717:164;31810:5;-1:-1:-1;31901:7:0;31897:56;;31929:8;;;31897:56;31675:289;31649:315;31979:7;31976:1182;;;32003:22;32040:19;32074:15;8819:5;32074:34;;32123:17;32143:9;;;;;;;;;-1:-1:-1;;;;;32143:9:0;-1:-1:-1;;;;;32143:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32123:38;;32182:12;32178:540;;;32232:4;32215:21;;32269:4;32255:18;;32178:540;;;-1:-1:-1;;;;;32299:11:0;;;;;;:7;:11;;;;;;;;32295:423;;;32348:10;:18;;;;;;-1:-1:-1;32399:20:0;;;;;;-1:-1:-1;32295:423:0;;;-1:-1:-1;;;;;32445:13:0;;;;;;:7;:13;;;;;;;;32441:277;;;32496:9;:17;;;;;;-1:-1:-1;32546:19:0;;;;;;-1:-1:-1;32441:277:0;;;32623:14;:22;;;;;;-1:-1:-1;32678:24:0;;;;;;-1:-1:-1;32441:277:0;32777:7;32749:24;32759:14;32749:7;:24;:::i;:::-;32748:36;;;;:::i;:::-;32734:11;;;:50;32840:7;32815:21;32825:11;32815:7;:21;:::i;:::-;32814:33;;;;:::i;:::-;32799:12;;;:48;;;32898:11;;;;:26;;32799:48;32898:26;:::i;:::-;32887:38;;:7;:38;:::i;:::-;32862:63;;32970:18;;;;32956:11;;;;:32;;32970:18;32956:32;:::i;:::-;32942:11;;;:46;-1:-1:-1;31976:1182:0;;-1:-1:-1;;;31976:1182:0;;33035:1;33021:11;;;:15;;;33051:12;;;:16;;;33082:32;;;33131:11;;;:15;31976:1182;33174:12;;;;:16;33170:328;;33248:6;:18;;;33233:6;:12;;;:33;;;;:::i;:::-;33223:4;33207:22;;;;:7;:22;;;;;:59;;:22;;;:59;;;;;:::i;:::-;;;;-1:-1:-1;;33304:4:0;33284:26;;;;:11;:26;;;;;;;;33281:104;;;33357:12;;;;;33347:4;33331:22;;;;:7;:22;;;;;:38;;33357:12;;33331:22;;:38;;33357:12;;33331:38;:::i;:::-;;;;-1:-1:-1;;33281:104:0;33427:4;-1:-1:-1;;;;;33404:43:0;33413:4;-1:-1:-1;;;;;33404:43:0;;33434:6;:12;;;33404:43;;;;391:25:1;;379:2;364:18;;245:177;33404:43:0;;;;;;;;33170:328;33583:6;:18;;;33568:6;:12;;;:33;;;;:::i;:::-;33553:6;:11;;;:49;;;;:::i;:::-;33535:6;:14;;;:68;;;;:::i;:::-;33510:22;;;:93;:22;31386:2249;-1:-1:-1;;;;;31386:2249:0:o;427:184:1:-;479:77;476:1;469:88;576:4;573:1;566:15;600:4;597:1;590:15;616:334;687:2;681:9;743:2;733:13;;-1:-1:-1;;729:86:1;717:99;;846:18;831:34;;867:22;;;828:62;825:88;;;893:18;;:::i;:::-;929:2;922:22;616:334;;-1:-1:-1;616:334:1:o;955:183::-;1015:4;1048:18;1040:6;1037:30;1034:56;;;1070:18;;:::i;:::-;-1:-1:-1;1115:1:1;1111:14;1127:4;1107:25;;955:183::o;1143:154::-;-1:-1:-1;;;;;1222:5:1;1218:54;1211:5;1208:65;1198:93;;1287:1;1284;1277:12;1302:737;1356:5;1409:3;1402:4;1394:6;1390:17;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:6;1450:20;1489:4;1513:60;1529:43;1569:2;1529:43;:::i;:::-;1513:60;:::i;:::-;1607:15;;;1693:1;1689:10;;;;1677:23;;1673:32;;;1638:12;;;;1717:15;;;1714:35;;;1745:1;1742;1735:12;1714:35;1781:2;1773:6;1769:15;1793:217;1809:6;1804:3;1801:15;1793:217;;;1889:3;1876:17;1906:31;1931:5;1906:31;:::i;:::-;1950:18;;1988:12;;;;1826;;1793:217;;;-1:-1:-1;2028:5:1;1302:737;-1:-1:-1;;;;;;1302:737:1:o;2044:118::-;2130:5;2123:13;2116:21;2109:5;2106:32;2096:60;;2152:1;2149;2142:12;2167:477;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:52;;;2334:1;2331;2324:12;2286:52;2374:9;2361:23;2407:18;2399:6;2396:30;2393:50;;;2439:1;2436;2429:12;2393:50;2462:61;2515:7;2506:6;2495:9;2491:22;2462:61;:::i;:::-;2452:71;;;2573:2;2562:9;2558:18;2545:32;2586:28;2608:5;2586:28;:::i;:::-;2633:5;2623:15;;;2167:477;;;;;:::o;2649:656::-;2761:4;2790:2;2819;2808:9;2801:21;2851:6;2845:13;2894:6;2889:2;2878:9;2874:18;2867:34;2919:1;2929:140;2943:6;2940:1;2937:13;2929:140;;;3038:14;;;3034:23;;3028:30;3004:17;;;3023:2;3000:26;2993:66;2958:10;;2929:140;;;3087:6;3084:1;3081:13;3078:91;;;3157:1;3152:2;3143:6;3132:9;3128:22;3124:31;3117:42;3078:91;-1:-1:-1;3221:2:1;3209:15;-1:-1:-1;;3205:88:1;3190:104;;;;3296:2;3186:113;;2649:656;-1:-1:-1;;;2649:656:1:o;3558:180::-;3617:6;3670:2;3658:9;3649:7;3645:23;3641:32;3638:52;;;3686:1;3683;3676:12;3638:52;-1:-1:-1;3709:23:1;;3558:180;-1:-1:-1;3558:180:1:o;3743:315::-;3811:6;3819;3872:2;3860:9;3851:7;3847:23;3843:32;3840:52;;;3888:1;3885;3878:12;3840:52;3927:9;3914:23;3946:31;3971:5;3946:31;:::i;:::-;3996:5;4048:2;4033:18;;;;4020:32;;-1:-1:-1;;;3743:315:1:o;4255:382::-;4320:6;4328;4381:2;4369:9;4360:7;4356:23;4352:32;4349:52;;;4397:1;4394;4387:12;4349:52;4436:9;4423:23;4455:31;4480:5;4455:31;:::i;:::-;4505:5;-1:-1:-1;4562:2:1;4547:18;;4534:32;4575:30;4534:32;4575:30;:::i;4642:456::-;4719:6;4727;4735;4788:2;4776:9;4767:7;4763:23;4759:32;4756:52;;;4804:1;4801;4794:12;4756:52;4843:9;4830:23;4862:31;4887:5;4862:31;:::i;:::-;4912:5;-1:-1:-1;4969:2:1;4954:18;;4941:32;4982:33;4941:32;4982:33;:::i;:::-;4642:456;;5034:7;;-1:-1:-1;;;5088:2:1;5073:18;;;;5060:32;;4642:456::o;5103:662::-;5157:5;5210:3;5203:4;5195:6;5191:17;5187:27;5177:55;;5228:1;5225;5218:12;5177:55;5264:6;5251:20;5290:4;5314:60;5330:43;5370:2;5330:43;:::i;5314:60::-;5408:15;;;5494:1;5490:10;;;;5478:23;;5474:32;;;5439:12;;;;5518:15;;;5515:35;;;5546:1;5543;5536:12;5515:35;5582:2;5574:6;5570:15;5594:142;5610:6;5605:3;5602:15;5594:142;;;5676:17;;5664:30;;5714:12;;;;5627;;5594:142;;5770:595;5888:6;5896;5949:2;5937:9;5928:7;5924:23;5920:32;5917:52;;;5965:1;5962;5955:12;5917:52;6005:9;5992:23;6034:18;6075:2;6067:6;6064:14;6061:34;;;6091:1;6088;6081:12;6061:34;6114:61;6167:7;6158:6;6147:9;6143:22;6114:61;:::i;:::-;6104:71;;6228:2;6217:9;6213:18;6200:32;6184:48;;6257:2;6247:8;6244:16;6241:36;;;6273:1;6270;6263:12;6241:36;;6296:63;6351:7;6340:8;6329:9;6325:24;6296:63;:::i;:::-;6286:73;;;5770:595;;;;;:::o;6370:647::-;6444:6;6452;6460;6468;6521:3;6509:9;6500:7;6496:23;6492:33;6489:53;;;6538:1;6535;6528:12;6489:53;6577:9;6564:23;6596:28;6618:5;6596:28;:::i;:::-;6643:5;-1:-1:-1;6700:2:1;6685:18;;6672:32;6713:30;6672:32;6713:30;:::i;:::-;6762:7;-1:-1:-1;6821:2:1;6806:18;;6793:32;6834:30;6793:32;6834:30;:::i;:::-;6883:7;-1:-1:-1;6942:2:1;6927:18;;6914:32;6955:30;6914:32;6955:30;:::i;:::-;6370:647;;;;-1:-1:-1;6370:647:1;;-1:-1:-1;;6370:647:1:o;7211:247::-;7270:6;7323:2;7311:9;7302:7;7298:23;7294:32;7291:52;;;7339:1;7336;7329:12;7291:52;7378:9;7365:23;7397:31;7422:5;7397:31;:::i;7463:454::-;7558:6;7566;7574;7582;7590;7643:3;7631:9;7622:7;7618:23;7614:33;7611:53;;;7660:1;7657;7650:12;7611:53;-1:-1:-1;;7683:23:1;;;7753:2;7738:18;;7725:32;;-1:-1:-1;7804:2:1;7789:18;;7776:32;;7855:2;7840:18;;7827:32;;-1:-1:-1;7906:3:1;7891:19;7878:33;;-1:-1:-1;7463:454:1;-1:-1:-1;7463:454:1:o;8450:159::-;8517:20;;8577:6;8566:18;;8556:29;;8546:57;;8599:1;8596;8589:12;8546:57;8450:159;;;:::o;8614:328::-;8688:6;8696;8704;8757:2;8745:9;8736:7;8732:23;8728:32;8725:52;;;8773:1;8770;8763:12;8725:52;8796:28;8814:9;8796:28;:::i;:::-;8786:38;;8843:37;8876:2;8865:9;8861:18;8843:37;:::i;:::-;8833:47;;8899:37;8932:2;8921:9;8917:18;8899:37;:::i;:::-;8889:47;;8614:328;;;;;:::o;8947:401::-;9029:6;9037;9045;9053;9106:3;9094:9;9085:7;9081:23;9077:33;9074:53;;;9123:1;9120;9113:12;9074:53;9146:28;9164:9;9146:28;:::i;:::-;9136:38;;9193:37;9226:2;9215:9;9211:18;9193:37;:::i;:::-;9183:47;;9249:37;9282:2;9271:9;9267:18;9249:37;:::i;:::-;9239:47;;9305:37;9338:2;9327:9;9323:18;9305:37;:::i;:::-;9295:47;;8947:401;;;;;;;:::o;9353:241::-;9409:6;9462:2;9450:9;9441:7;9437:23;9433:32;9430:52;;;9478:1;9475;9468:12;9430:52;9517:9;9504:23;9536:28;9558:5;9536:28;:::i;10048:404::-;10132:6;10140;10193:2;10181:9;10172:7;10168:23;10164:32;10161:52;;;10209:1;10206;10199:12;10161:52;10248:9;10235:23;10267:31;10292:5;10267:31;:::i;:::-;10317:5;-1:-1:-1;10374:2:1;10359:18;;10346:32;10387:33;10346:32;10387:33;:::i;10850:821::-;11002:6;11010;11018;11071:2;11059:9;11050:7;11046:23;11042:32;11039:52;;;11087:1;11084;11077:12;11039:52;11127:9;11114:23;11156:18;11197:2;11189:6;11186:14;11183:34;;;11213:1;11210;11203:12;11183:34;11236:61;11289:7;11280:6;11269:9;11265:22;11236:61;:::i;:::-;11226:71;;11350:2;11339:9;11335:18;11322:32;11306:48;;11379:2;11369:8;11366:16;11363:36;;;11395:1;11392;11385:12;11363:36;11418:63;11473:7;11462:8;11451:9;11447:24;11418:63;:::i;:::-;11408:73;;11534:2;11523:9;11519:18;11506:32;11490:48;;11563:2;11553:8;11550:16;11547:36;;;11579:1;11576;11569:12;11547:36;;11602:63;11657:7;11646:8;11635:9;11631:24;11602:63;:::i;:::-;11592:73;;;10850:821;;;;;:::o;12386:484::-;12439:3;12477:5;12471:12;12504:6;12499:3;12492:19;12530:4;12559:2;12554:3;12550:12;12543:19;;12596:2;12589:5;12585:14;12617:1;12627:218;12641:6;12638:1;12635:13;12627:218;;;12706:13;;-1:-1:-1;;;;;12702:62:1;12690:75;;12785:12;;;;12820:15;;;;12663:1;12656:9;12627:218;;;-1:-1:-1;12861:3:1;;12386:484;-1:-1:-1;;;;;12386:484:1:o;12875:342::-;13076:2;13065:9;13058:21;13039:4;13096:56;13148:2;13137:9;13133:18;13125:6;13096:56;:::i;:::-;13088:64;;13202:6;13195:14;13188:22;13183:2;13172:9;13168:18;13161:50;12875:342;;;;;:::o;13558:184::-;13610:77;13607:1;13600:88;13707:4;13704:1;13697:15;13731:4;13728:1;13721:15;13747:482;13836:1;13879:5;13836:1;13893:330;13914:7;13904:8;13901:21;13893:330;;;14033:4;-1:-1:-1;;13961:77:1;13955:4;13952:87;13949:113;;;14042:18;;:::i;:::-;14092:7;14082:8;14078:22;14075:55;;;14112:16;;;;14075:55;14191:22;;;;14151:15;;;;13893:330;;;13897:3;13747:482;;;;;:::o;14234:866::-;14283:5;14313:8;14303:80;;-1:-1:-1;14354:1:1;14368:5;;14303:80;14402:4;14392:76;;-1:-1:-1;14439:1:1;14453:5;;14392:76;14484:4;14502:1;14497:59;;;;14570:1;14565:130;;;;14477:218;;14497:59;14527:1;14518:10;;14541:5;;;14565:130;14602:3;14592:8;14589:17;14586:43;;;14609:18;;:::i;:::-;-1:-1:-1;;14665:1:1;14651:16;;14680:5;;14477:218;;14779:2;14769:8;14766:16;14760:3;14754:4;14751:13;14747:36;14741:2;14731:8;14728:16;14723:2;14717:4;14714:12;14710:35;14707:77;14704:159;;;-1:-1:-1;14816:19:1;;;14848:5;;14704:159;14895:34;14920:8;14914:4;14895:34;:::i;:::-;15025:6;-1:-1:-1;;14953:79:1;14944:7;14941:92;14938:118;;;15036:18;;:::i;:::-;15074:20;;14234:866;-1:-1:-1;;;14234:866:1:o;15105:140::-;15163:5;15192:47;15233:4;15223:8;15219:19;15213:4;15192:47;:::i;15250:228::-;15290:7;15416:1;-1:-1:-1;;15344:74:1;15341:1;15338:81;15333:1;15326:9;15319:17;15315:105;15312:131;;;15423:18;;:::i;:::-;-1:-1:-1;15463:9:1;;15250:228::o;15483:274::-;15523:1;15549;15539:189;;15584:77;15581:1;15574:88;15685:4;15682:1;15675:15;15713:4;15710:1;15703:15;15539:189;-1:-1:-1;15742:9:1;;15483:274::o;16476:184::-;16528:77;16525:1;16518:88;16625:4;16622:1;16615:15;16649:4;16646:1;16639:15;16665:184;16717:77;16714:1;16707:88;16814:4;16811:1;16804:15;16838:4;16835:1;16828:15;16854:125;16894:4;16922:1;16919;16916:8;16913:34;;;16927:18;;:::i;:::-;-1:-1:-1;16964:9:1;;16854:125::o;16984:195::-;17023:3;-1:-1:-1;;17047:5:1;17044:77;17041:103;;;17124:18;;:::i;:::-;-1:-1:-1;17171:1:1;17160:13;;16984:195::o;17534:175::-;17571:3;17615:4;17608:5;17604:16;17644:4;17635:7;17632:17;17629:43;;;17652:18;;:::i;:::-;17701:1;17688:15;;17534:175;-1:-1:-1;;17534:175:1:o;18150:128::-;18190:3;18221:1;18217:6;18214:1;18211:13;18208:39;;;18227:18;;:::i;:::-;-1:-1:-1;18263:9:1;;18150:128::o;19124:184::-;19194:6;19247:2;19235:9;19226:7;19222:23;19218:32;19215:52;;;19263:1;19260;19253:12;19215:52;-1:-1:-1;19286:16:1;;19124:184;-1:-1:-1;19124:184:1:o;21862:224::-;21901:3;21929:6;21962:2;21959:1;21955:10;21992:2;21989:1;21985:10;22023:3;22019:2;22015:12;22010:3;22007:21;22004:47;;;22031:18;;:::i;:::-;22067:13;;21862:224;-1:-1:-1;;;;21862:224:1:o;22091:217::-;22130:4;22159:6;22215:10;;;;22185;;22237:12;;;22234:38;;;22252:18;;:::i;:::-;22289:13;;22091:217;-1:-1:-1;;;22091:217:1:o;23156:251::-;23226:6;23279:2;23267:9;23258:7;23254:23;23250:32;23247:52;;;23295:1;23292;23285:12;23247:52;23327:9;23321:16;23346:31;23371:5;23346:31;:::i;24101:245::-;24168:6;24221:2;24209:9;24200:7;24196:23;24192:32;24189:52;;;24237:1;24234;24227:12;24189:52;24269:9;24263:16;24288:28;24310:5;24288:28;:::i;27092:605::-;27391:6;27380:9;27373:25;27434:6;27429:2;27418:9;27414:18;27407:34;27477:3;27472:2;27461:9;27457:18;27450:31;27354:4;27498:57;27550:3;27539:9;27535:19;27527:6;27498:57;:::i;:::-;-1:-1:-1;;;;;27591:55:1;;;;27586:2;27571:18;;27564:83;-1:-1:-1;27678:3:1;27663:19;27656:35;27490:65;27092:605;-1:-1:-1;;;27092:605:1:o;28337:306::-;28425:6;28433;28441;28494:2;28482:9;28473:7;28469:23;28465:32;28462:52;;;28510:1;28507;28500:12;28462:52;28539:9;28533:16;28523:26;;28589:2;28578:9;28574:18;28568:25;28558:35;;28633:2;28622:9;28618:18;28612:25;28602:35;;28337:306;;;;;:::o
Swarm Source
ipfs://d36b1abc9f7419357f8b4c2355b167862cf897dca444dbbfe5fae3c6dccf1447
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.