Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 $NODAC
Holders
263
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
5,542.930822923847910526 $NODACValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
NodeAggregatorCapital
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-30 */ // 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 removeBlacklisted(address account) external; function isBlacklisted(address account) external view returns (bool); function transfer(address sender) external; function isSniper(address account) external view returns (bool); } interface Cashier { function whomst() external view returns(address); function whomst_router() external view returns (address); function whomst_token() external view returns (address); function setToken(address token) external; function setReflectionCriteria(uint256 _minPeriod, uint256 _minReflection) external; function tally(address shareholder, uint256 amount) external; function load() external payable; function cashout(uint256 gas) external; function giveMeWelfarePlease(address hobo) external; function getTotalDistributed() external view returns(uint256); function getShareholderInfo(address shareholder) external view returns(string memory, string memory, string memory, string memory); function getShareholderRealized(address shareholder) external view returns (uint256); function getPendingRewards(address shareholder) external view returns (uint256); function initialize() external; } contract NodeAggregatorCapital is IERC20 { // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedFromLimits; mapping (address => bool) private _isExcludedFromDividends; mapping (address => bool) private _liquidityHolders; uint256 constant private startingSupply = 100_000_000; string constant private _name = "Node Aggregator Capital"; string constant private _symbol = "$NODAC"; uint8 constant private _decimals = 18; uint256 private _tTotal = startingSupply * (10 ** _decimals); struct Fees { uint16 buyFee; uint16 sellFee; uint16 transferFee; uint16 sniperFee; } struct Ratios { uint16 rewards; uint16 liquidity; uint16 marketing; uint16 nodeTreasury; uint16 total; } Fees public _taxRates = Fees({ buyFee: 1300, sellFee: 1300, transferFee: 1300, sniperFee: 2500 }); Ratios public _ratios = Ratios({ rewards: 15, liquidity: 2, marketing: 4, nodeTreasury: 16, total: 15+2+4+16 // Too lazy to open my calculator, too tired to mental math }); uint256 constant public maxBuyTaxes = 2000; uint256 constant public maxSellTaxes = 2000; uint256 constant public maxTransferTaxes = 2000; uint256 constant public maxSniperFee = 3000; uint256 constant masterTaxDivisor = 10000; IRouter02 public dexRouter; address public lpPair; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; address constant private ZERO = 0x0000000000000000000000000000000000000000; struct TaxWallets { address payable marketing; address payable nodeTreasury; } TaxWallets public _taxWallets = TaxWallets({ marketing: payable(0xF0514944Cc02706EC364FCa78e75b0c7e19CE85D), nodeTreasury: payable(0xEd56a7F78b830518ff00808e2bAff0F4bDc722Ed) }); uint256 private _maxTxAmount = (_tTotal * 5) / 1000; uint256 private _maxWalletSize = (_tTotal * 25) / 1000; Cashier reflector; uint256 reflectorGas = 300000; 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; bool public processReflect = false; bool public tradingEnabled = false; bool public _hasLiqBeenAdded = false; AntiSnipe antiSnipe; uint256 launchStamp; uint256 public boostTime = 24 hours; bool public boostTimeEnabled = true; modifier swapping() { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ContractSwapEnabledUpdated(bool enabled); event AutoLiquify(uint256 amountBNB, uint256 amount); event SniperCaught(address sniperAddress); constructor () payable { _tOwned[msg.sender] = _tTotal; // 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; _isExcludedFromDividends[_owner] = true; _isExcludedFromDividends[lpPair] = true; _isExcludedFromDividends[address(this)] = true; _isExcludedFromDividends[DEAD] = true; _isExcludedFromDividends[ZERO] = true; emit Transfer(ZERO, msg.sender, _tTotal); emit OwnershipTransferred(address(0), _owner); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // 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 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."); _isExcludedFromFees[_owner] = false; _isExcludedFromDividends[_owner] = false; _isExcludedFromFees[newOwner] = true; _isExcludedFromDividends[newOwner] = true; if(_tOwned[_owner] > 0) { _transfer(_owner, newOwner, _tOwned[_owner]); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner { _isExcludedFromFees[_owner] = false; _isExcludedFromDividends[_owner] = false; _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== receive() external payable {} function totalSupply() external view 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 balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) private { require(sender != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the 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 transfer(address recipient, uint256 amount) external override returns (bool) { return _transfer(msg.sender, recipient, amount); } 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 isBlacklisted(address account) public view returns (bool) { return antiSnipe.isBlacklisted(account); } function setInitializers(address aInitializer, address cInitializer) external onlyOwner { require(cInitializer != address(this) && aInitializer != address(this) && cInitializer != aInitializer); reflector = Cashier(cInitializer); antiSnipe = AntiSnipe(aInitializer); } function removeSniper(address account) external onlyOwner { antiSnipe.removeSniper(account); } function removeBlacklisted(address account) external onlyOwner { antiSnipe.removeBlacklisted(account); } function getSniperAmt() public view returns (uint256) { return antiSnipe.getSniperAmt(); } function setProtectionSettings(bool _antiSnipe, bool _antiGas, bool _antiBlock, bool _antiSpecial) external onlyOwner { antiSnipe.setProtections(_antiSnipe, _antiGas, _antiBlock, _antiSpecial); } function setGasPriceLimit(uint256 gas) external onlyOwner { require(gas >= 150, "Too low."); antiSnipe.setGasPriceLimit(gas); } 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; launchStamp = block.timestamp; } function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee, uint16 sniperFee) external onlyOwner { require(buyFee <= maxBuyTaxes && sellFee <= maxSellTaxes && transferFee <= maxTransferTaxes && sniperFee <= maxSniperFee); _taxRates.buyFee = buyFee; _taxRates.sellFee = sellFee; _taxRates.transferFee = transferFee; _taxRates.sniperFee = sniperFee; } function setRatios(uint16 rewards, uint16 liquidity, uint16 marketing, uint16 node) external onlyOwner { _ratios.rewards = rewards; _ratios.liquidity = liquidity; _ratios.marketing = marketing; _ratios.nodeTreasury = node; _ratios.total = rewards + liquidity + marketing + node; } function setWallets(address payable marketing, address payable node) external onlyOwner { _taxWallets.marketing = payable(marketing); _taxWallets.nodeTreasury = payable(node); } function setContractSwapSettings(bool _enabled, bool processReflectEnabled) external onlyOwner { contractSwapEnabled = _enabled; processReflect = processReflectEnabled; } 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 setReflectionCriteria(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner { _minReflection = _minReflection * 10**minReflectionMultiplier; reflector.setReflectionCriteria(_minPeriod, _minReflection); } function setReflectorSettings(uint256 gas) external onlyOwner { require(gas < 750000); reflectorGas = gas; } function giveMeWelfarePlease() external { reflector.giveMeWelfarePlease(msg.sender); } function getTotalReflected() external view returns (uint256) { return reflector.getTotalDistributed(); } function getUserInfo(address shareholder) external view returns (string memory, string memory, string memory, string memory) { return reflector.getShareholderInfo(shareholder); } function getUserRealizedGains(address shareholder) external view returns (uint256) { return reflector.getShareholderRealized(shareholder); } function getUserUnpaidEarnings(address shareholder) external view returns (uint256) { return reflector.getPendingRewards(shareholder); } 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, "Cannot set a new pair this week!"); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; antiSnipe.setLpPair(pair, true); } } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function isExcludedFromDividends(address account) public view returns(bool) { return _isExcludedFromDividends[account]; } function isExcludedFromLimits(address account) public view returns (bool) { return _isExcludedFromLimits[account]; } function setExcludedFromLimits(address account, bool enabled) external onlyOwner { _isExcludedFromLimits[account] = enabled; } function setDividendExcluded(address holder, bool enabled) public onlyOwner { require(holder != address(this) && holder != lpPair); _isExcludedFromDividends[holder] = enabled; if (enabled) { reflector.tally(holder, 0); } else { reflector.tally(holder, _tOwned[holder]); } } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply."); _maxTxAmount = (_tTotal * percent) / divisor; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply."); _maxWalletSize = (_tTotal * percent) / divisor; } function getMaxTX() public view returns (uint256) { return _maxTxAmount / (10**_decimals); } function getMaxWallet() public view returns (uint256) { return _maxWalletSize / (10**_decimals); } function setBoostTime(uint256 time) external onlyOwner { require (time <= 24 hours); boostTime = time; } function setBoostTimeEnabled(bool enabled) external onlyOwner { boostTimeEnabled = 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 (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } } if(to != address(dexRouter) && !lpPairs[to]) { if (!_isExcludedFromLimits[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } return _finalizeTransfer(from, to, amount, takeFee); } function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) internal returns (bool) { if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } if(_hasLimits(from, to)) { bool checked; try antiSnipe.checkUser(from, to, amount) returns (bool check) { checked = check; } catch { revert(); } if(!checked) { revert(); } } if (inSwap) { return _basicTransfer(from, to, amount); } else { _tOwned[from] -= amount; } 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; } } } } uint256 amountReceived = amount; if (takeFee) { amountReceived = takeTaxes(from, to, amount); } _tOwned[to] += amountReceived; processTokenReflect(from, to); emit Transfer(from, to, amountReceived); return true; } function processTokenReflect(address from, address to) internal { if (!_isExcludedFromDividends[from]) { try reflector.tally(from, _tOwned[from]) {} catch {} } if (!_isExcludedFromDividends[to]) { try reflector.tally(to, _tOwned[to]) {} catch {} } if (processReflect) { try reflector.cashout(reflectorGas) {} catch {} } } function forceRewardsDistribution(uint256 gas) external { if (gas == 0) { gas = reflectorGas; } else { require(gas >= reflectorGas); } try reflector.cashout(gas) {} catch {} } function _basicTransfer(address from, address to, uint256 amount) internal returns (bool) { _tOwned[from] -= amount; _tOwned[to] += amount; emit Transfer(from, to, amount); return true; } function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) { uint256 currentFee; if (lpPairs[from]) { currentFee = _taxRates.buyFee; } else if (lpPairs[to]) { if (antiSnipe.isSniper(from) && launchStamp + boostTime > block.timestamp && boostTimeEnabled) { currentFee = _taxRates.sniperFee; } else { currentFee = _taxRates.sellFee; } } else { currentFee = _taxRates.transferFee; } if (currentFee == 0) { return amount; } uint256 feeAmount = amount * currentFee / masterTaxDivisor; _tOwned[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); return amount - feeAmount; } function contractSwap(uint256 contractTokenBalance) internal swapping { 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 rewardsBalance = (amtBalance * ratios.rewards) / ratios.total; uint256 nodeBalance = (amtBalance * ratios.nodeTreasury) / ratios.total; uint256 marketingBalance = amtBalance - (rewardsBalance + nodeBalance); try reflector.load{value: rewardsBalance}() {} catch {} if(ratios.nodeTreasury > 0){ _taxWallets.nodeTreasury.transfer(nodeBalance); } if(ratios.marketing > 0){ _taxWallets.marketing.transfer(marketingBalance); } } function manualDeposit() external onlyOwner { try reflector.load{value: address(this).balance}() {} catch {} } 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)); } if(address(reflector) == address(0)) { reflector = Cashier(address(this)); } try reflector.initialize() {} catch {} contractSwapEnabled = true; emit ContractSwapEnabledUpdated(true); } } 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]); } } }
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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"nodeTreasury","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"},{"internalType":"uint16","name":"sniperFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"nodeTreasury","type":"address"}],"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":"boostTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boostTimeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"forceRewardsDistribution","outputs":[],"stateMutability":"nonpayable","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":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUserRealizedGains","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUserUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveMeWelfarePlease","outputs":[],"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":"isExcludedFromDividends","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":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","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":"maxSniperFee","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":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"time","type":"uint256"}],"name":"setBoostTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBoostTimeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"processReflectEnabled","type":"bool"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setDividendExcluded","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":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"aInitializer","type":"address"},{"internalType":"address","name":"cInitializer","type":"address"}],"name":"setInitializers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_antiSpecial","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"node","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setReflectionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setReflectorSettings","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":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"},{"internalType":"uint16","name":"sniperFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"node","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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
60806040526000600355620000176012600a62000812565b62000027906305f5e1006200082a565b600981905560408051608080820183526105148083526020808401829052838501919091526109c4606093840152600a80546001600160401b0319166709c4051405140514179055835160a081018552600f8082526002828401526004828701526010948201949094526025920191909152600b80546001600160501b0319166825001000040002000f179055825180840190935273f0514944cc02706ec364fca78e75b0c7e19ce85d80845273ed56a7f78b830518ff00808e2baff0f4bdc722ed93909101839052600e80546001600160a01b0319908116909217905581541690911790556103e8906200011e9060056200082a565b6200012a91906200084c565b6010556103e860095460196200014191906200082a565b6200014d91906200084c565b601155620493e06013556014805461ff0019169055600a601555600954612710906200017b9060056200082a565b6200018791906200084c565b60175561271060095460146200019e91906200082a565b620001aa91906200084c565b6018556019805462ffffff1916905562015180601b55601c805460ff19166001908117909155600954336000818152602093909352604083209190915581546001600160a01b03191617905560384614156200023157600c80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e1790556003601555620002b8565b46606114156200026c57600c80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c31790556003601555620002b8565b46600114806200027c5750466004145b15620002b357600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600a601555620002b8565b600080fd5b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033291906200086f565b6001600160a01b031663c9c65396600c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ba91906200086f565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042d91906200086f565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055600c546200047991339116600019620005d1565b600c54620004959030906001600160a01b0316600019620005d1565b600080546001600160a01b0390811682526005602090815260408084208054600160ff199182168117909255308087528387208054831684179055865486168752600785528387208054831684179055600d549095168652828620805482168317905593855281852080548516821790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548516821790558480527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80549094161790925560095491519182523392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600080546040516001600160a01b0390911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36200089a565b6001600160a01b038316620006395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200069c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000630565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000754578160001904821115620007385762000738620006fd565b808516156200074657918102915b93841c939080029062000718565b509250929050565b6000826200076d575060016200080c565b816200077c575060006200080c565b8160018114620007955760028114620007a057620007c0565b60019150506200080c565b60ff841115620007b457620007b4620006fd565b50506001821b6200080c565b5060208310610133831016604e8410600b8410161715620007e5575081810a6200080c565b620007f1838362000713565b8060001904821115620008085762000808620006fd565b0290505b92915050565b60006200082360ff8416836200075c565b9392505050565b6000816000190483118215151615620008475762000847620006fd565b500290565b6000826200086a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200088257600080fd5b81516001600160a01b03811681146200082357600080fd5b6150ee80620008aa6000396000f3fe6080604052600436106104695760003560e01c80636b639a2511610243578063c705c56911610143578063e8a0e3f9116100bb578063f2e4109c1161008a578063f94aa1b41161006f578063f94aa1b414610da4578063fdb78c0e14610deb578063fe575a8714610e0a57600080fd5b8063f2e4109c14610d79578063f7c245ea14610d8f57600080fd5b8063e8a0e3f914610cff578063eafb5a3c14610d1f578063ecfc021f14610d3f578063efe7dc9014610d5f57600080fd5b8063db40e30211610112578063dd62ed3e116100f7578063dd62ed3e14610c83578063dea528a114610cc9578063e4fcfd1814610ce957600080fd5b8063db40e30214610c43578063dbc1d6ca14610c6357600080fd5b8063c705c56914610b48578063cf84770614610b81578063d0b1449d14610c03578063d3f6a15714610c2357600080fd5b806395d89b41116101d6578063b1b08f71116101a5578063b3d514fb1161018a578063b3d514fb14610722578063b8e0e96d14610b12578063c6a276c214610b2857600080fd5b8063b1b08f7114610722578063b26e0beb14610af857600080fd5b806395d89b4114610a5d5780639dc6761514610aa3578063a9059cbb14610ab8578063ab5cb5a614610ad857600080fd5b806380c581d11161021257806380c581d1146109f5578063893d20e814610a155780638a63bd9b14610a335780638a8c523c14610a4857600080fd5b80636b639a25146109755780636ebd00781461099557806370a08231146109aa578063715018a6146109e057600080fd5b80632b28fc7a116103695780634fb2e45d116102e1578063590ffdce116102b05780636372c68f116102955780636372c68f146109105780636386c1c7146109305780636ab86dc11461096057600080fd5b8063590ffdce146108b75780635cce86cd146108d757600080fd5b80634fb2e45d146108295780634fbee1931461084957806350a8e0161461088257806355dbc369146108a257600080fd5b806334cd8260116103385780633f3cf56c1161031d5780633f3cf56c146107ca578063452ed4f1146107ea5780634ada218b1461080a57600080fd5b806334cd82601461078a57806336fddb04146107aa57600080fd5b80632b28fc7a146107225780632e8fa82114610738578063313ce5671461074e57806333251a0b1461076a57600080fd5b806309a8f179116103fc578063218950bc116103cb57806326003957116103b057806326003957146106c25780632610eaca146106e257806329dd87981461070257600080fd5b8063218950bc1461068257806323b872dd146106a257600080fd5b806309a8f179146106185780630fa604e41461063857806318160ddd1461064d5780631de3b1c71461066257600080fd5b80630712d165116104385780630712d165146105865780630758d924146105a857806309231602146105c8578063095ea7b3146105e857600080fd5b806303fd2a45146104755780630445b667146104a8578063069d955f146104cc57806306fdde031461053757600080fd5b3661047057005b600080fd5b34801561048157600080fd5b5061048b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104b457600080fd5b506104be60175481565b60405190815260200161049f565b3480156104d857600080fd5b50600a546105099061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161049f565b34801561054357600080fd5b5060408051808201909152601781527f4e6f64652041676772656761746f72204361706974616c00000000000000000060208201525b60405161049f9190614704565b34801561059257600080fd5b506105a66105a136600461472e565b610e2a565b005b3480156105b457600080fd5b50600c5461048b906001600160a01b031681565b3480156105d457600080fd5b506105a66105e3366004614782565b610f8b565b3480156105f457600080fd5b506106086106033660046147b0565b6110b7565b604051901515815260200161049f565b34801561062457600080fd5b506105a66106333660046147dc565b611124565b34801561064457600080fd5b506104be611217565b34801561065957600080fd5b506104be611237565b34801561066e57600080fd5b506105a661067d366004614816565b611250565b34801561068e57600080fd5b506105a661069d366004614833565b6112bd565b3480156106ae57600080fd5b506106086106bd36600461486c565b6113c1565b3480156106ce57600080fd5b506105a66106dd3660046148ad565b61143b565b3480156106ee57600080fd5b506105a66106fd366004614a22565b611552565b34801561070e57600080fd5b506105a661071d366004614a86565b61166c565b34801561072e57600080fd5b506104be6107d081565b34801561074457600080fd5b506104be60185481565b34801561075a57600080fd5b506040516012815260200161049f565b34801561077657600080fd5b506105a6610785366004614ae2565b611762565b34801561079657600080fd5b506105a66107a5366004614aff565b61180f565b3480156107b657600080fd5b506105a66107c5366004614b3a565b6118ab565b3480156107d657600080fd5b506105a66107e53660046148ad565b611930565b3480156107f657600080fd5b50600d5461048b906001600160a01b031681565b34801561081657600080fd5b5060195461060890610100900460ff1681565b34801561083557600080fd5b506105a6610844366004614ae2565b611a47565b34801561085557600080fd5b50610608610864366004614ae2565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561088e57600080fd5b506019546106089062010000900460ff1681565b3480156108ae57600080fd5b506104be611c91565b3480156108c357600080fd5b506105a66108d2366004614b3a565b611d0a565b3480156108e357600080fd5b506106086108f2366004614ae2565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561091c57600080fd5b506104be61092b366004614ae2565b611d8f565b34801561093c57600080fd5b5061095061094b366004614ae2565b611e18565b60405161049f9493929190614b68565b34801561096c57600080fd5b506105a6611eb9565b34801561098157600080fd5b506105a6610990366004614b3a565b611f78565b3480156109a157600080fd5b506104be612119565b3480156109b657600080fd5b506104be6109c5366004614ae2565b6001600160a01b031660009081526001602052604090205490565b3480156109ec57600080fd5b506105a6612134565b348015610a0157600080fd5b506105a6610a10366004614b3a565b612212565b348015610a2157600080fd5b506000546001600160a01b031661048b565b348015610a3f57600080fd5b506106086123c6565b348015610a5457600080fd5b506105a6612441565b348015610a6957600080fd5b5060408051808201909152600681527f244e4f44414300000000000000000000000000000000000000000000000000006020820152610579565b348015610aaf57600080fd5b506105a6612646565b348015610ac457600080fd5b50610608610ad33660046147b0565b6126be565b348015610ae457600080fd5b506104be610af3366004614ae2565b6126cb565b348015610b0457600080fd5b50601c546106089060ff1681565b348015610b1e57600080fd5b506104be601b5481565b348015610b3457600080fd5b506105a6610b43366004614ae2565b612717565b348015610b5457600080fd5b50610608610b63366004614ae2565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b8d57600080fd5b50600b54610bce9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161049f565b348015610c0f57600080fd5b506105a6610c1e366004614782565b6127c4565b348015610c2f57600080fd5b506105a6610c3e366004614833565b612832565b348015610c4f57600080fd5b506105a6610c5e366004614782565b6128c7565b348015610c6f57600080fd5b506105a6610c7e366004614782565b612936565b348015610c8f57600080fd5b506104be610c9e366004614833565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610cd557600080fd5b506105a6610ce4366004614bc0565b6129c3565b348015610cf557600080fd5b506104be60155481565b348015610d0b57600080fd5b506105a6610d1a366004614bde565b612a4a565b348015610d2b57600080fd5b506105a6610d3a366004614ae2565b612ba8565b348015610d4b57600080fd5b506105a6610d5a36600461472e565b612f63565b348015610d6b57600080fd5b506019546106089060ff1681565b348015610d8557600080fd5b506104be610bb881565b348015610d9b57600080fd5b506104be6130ae565b348015610db057600080fd5b50600e54600f54610dcb916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161049f565b348015610df757600080fd5b5060145461060890610100900460ff1681565b348015610e1657600080fd5b50610608610e25366004614ae2565b613111565b6000546001600160a01b03163314610e895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600b805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610f318587614c95565b610f3b9190614c95565b610f459190614c95565b600b805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff90921691909117905550505050565b6000546001600160a01b03163314610fe55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b60968110156110365760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610e80565b6019546040517f092316020000000000000000000000000000000000000000000000000000000081526004810183905263010000009091046001600160a01b0316906309231602906024015b600060405180830381600087803b15801561109c57600080fd5b505af11580156110b0573d6000803e3d6000fd5b5050505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906111129086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461117e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b61118981600a614d9f565b6111939083614dab565b6012546040517f8cd7f02e00000000000000000000000000000000000000000000000000000000815260048101869052602481018390529193506001600160a01b031690638cd7f02e90604401600060405180830381600087803b1580156111fa57600080fd5b505af115801561120e573d6000803e3d6000fd5b50505050505050565b60006112256012600a614dca565b6011546112329190614dd9565b905090565b60006009546000141561124957600080fd5b5060095490565b6000546001600160a01b031633146112aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b601c805460ff1916911515919091179055565b6000546001600160a01b031633146113175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b038116301480159061133957506001600160a01b0382163014155b80156113575750816001600160a01b0316816001600160a01b031614155b61136057600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055601980547fffffffffffffffffff0000000000000000000000000000000000000000ffffff1663010000009390921692909202179055565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914611426576001600160a01b038416600090815260046020908152604080832033845290915281208054849290611420908490614e14565b90915550505b6114318484846131a0565b90505b9392505050565b6000546001600160a01b031633146114955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6103e86009546114a59190614dd9565b81836009546114b49190614dab565b6114be9190614dd9565b10156115325760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610e80565b80826009546115419190614dab565b61154b9190614dd9565b6011555050565b80518251146115a35760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610e80565b60005b82518160ff16101561166757818160ff16815181106115c7576115c7614e2b565b60200260200101516115ee336001600160a01b031660009081526001602052604090205490565b10156115f957600080fd5b61165433848360ff168151811061161257611612614e2b565b60200260200101516012600a6116289190614dca565b858560ff168151811061163d5761163d614e2b565b602002602001015161164f9190614dab565b6131a0565b508061165f81614e5a565b9150506115a6565b505050565b6000546001600160a01b031633146116c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6019546040517f0109da69000000000000000000000000000000000000000000000000000000008152851515600482015284151560248201528315156044820152821515606482015263010000009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146117bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6019546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401611082565b6000546001600160a01b031633146118695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b83856009546118789190614dab565b6118829190614dd9565b6017556009548290611895908590614dab565b61189f9190614dd9565b60185560155550505050565b6000546001600160a01b031633146119055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461198a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6103e860095461199a9190614dd9565b81836009546119a99190614dab565b6119b39190614dd9565b1015611a275760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610e80565b8082600954611a369190614dab565b611a409190614dd9565b6010555050565b6000546001600160a01b03163314611aa15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b038116611b1d5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610e80565b6001600160a01b03811661dead1415611b9e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610e80565b600080546001600160a01b039081168252600560208181526040808520805460ff1990811690915585548516865260078084528287208054831690558786168752938352818620805482166001908117909155938352818620805490911684179055845490931684525290205415611c3957600080546001600160a01b03168082526001602052604090912054611c37919083906131a0565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601960039054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112329190614e7a565b6000546001600160a01b03163314611d645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6012546040517fd59b2ffd0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063d59b2ffd906024015b602060405180830381865afa158015611df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111e9190614e7a565b6012546040517f5e6056bb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526060928392839283921690635e6056bb90602401600060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eaa9190810190614ef7565b93509350935093509193509193565b6000546001600160a01b03163314611f135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b601260009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f6357600080fd5b505af193505050508015611f75575060015b50565b6000546001600160a01b03163314611fd25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b0382163014801590611ff95750600d546001600160a01b03838116911614155b61200257600080fd5b6001600160a01b0382166000908152600760205260409020805460ff191682158015919091179091556120b3576012546040517fdf047e9e0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600060248301529091169063df047e9e906044015b600060405180830381600087803b15801561209757600080fd5b505af11580156120ab573d6000803e3d6000fd5b505050505050565b6012546001600160a01b03838116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e9060440161207d565b5050565b60006121276012600a614dca565b6010546112329190614dd9565b6000546001600160a01b0316331461218e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b600080546001600160a01b039081168252600560209081526040808420805460ff199081169091558454909316845260079091528083208054909216909155815473ffffffffffffffffffffffffffffffffffffffff191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461226c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b806122e4576001600160a01b03828116600081815260026020526040808220805460ff1916905560195490517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915263010000009004909116906380c581d19060440161207d565b6003541561234b576203f480600354426122fe9190614e14565b1161234b5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610e80565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560195491517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483015263010000009004909116906380c581d19060440161207d565b600080546001600160a01b031633146124215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b600c5461243b9030906001600160a01b03166000196135d6565b50600190565b6000546001600160a01b0316331461249b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b601954610100900460ff16156124f35760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610e80565b60195462010000900460ff1661254b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610e80565b601954630100000090046001600160a01b031661259357601980547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b601954600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b15801561261f57600080fd5b505af1925050508015612630575060015b506019805461ff00191661010017905542601a55565b6012546040517f2e6f0efd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156126a457600080fd5b505af11580156126b8573d6000803e3d6000fd5b50505050565b60006114343384846131a0565b6012546040517ff6ed20170000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063f6ed201790602401611dd7565b6000546001600160a01b031633146127715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6019546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015263010000009092049091169063c6a276c290602401611082565b6000546001600160a01b0316331461281e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b620b71b0811061282d57600080fd5b601355565b6000546001600160a01b0316331461288c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b600e80546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff1991821617909155600f8054929093169116179055565b6000546001600160a01b031633146129215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6201518081111561293157600080fd5b601b55565b806129445750601354612953565b60135481101561295357600080fd5b6012546040517fa9e732bb000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b1580156129b257600080fd5b505af1925050508015612115575050565b6000546001600160a01b03163314612a1d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6014805461ff00191661010093151593909302929092179091556019805460ff1916911515919091179055565b81518351148015612a5c575080518251145b612aa85760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610e80565b60005b83518160ff1610156126b857818160ff1681518110612acc57612acc614e2b565b6020026020010151838260ff1681518110612ae957612ae9614e2b565b6020026020010151600954612afe9190614dab565b612b089190614dd9565b336000908152600160205260409020541015612b2357600080fd5b612b9533858360ff1681518110612b3c57612b3c614e2b565b6020026020010151848460ff1681518110612b5957612b59614e2b565b6020026020010151868560ff1681518110612b7657612b76614e2b565b6020026020010151600954612b8b9190614dab565b61164f9190614dd9565b5080612ba081614e5a565b915050612aab565b6000546001600160a01b03163314612c025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6b9190614fa4565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cdc9190614fa4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d639190614fa4565b90506001600160a01b038116612f0157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd59190614fa4565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e469190614fa4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecf9190614fa4565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612f2a565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556116679030906000196135d6565b6000546001600160a01b03163314612fbd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6107d08461ffff1611158015612fd957506107d08361ffff1611155b8015612feb57506107d08261ffff1611155b8015612ffd5750610bb88161ffff1611155b61300657600080fd5b600a805461ffff9586167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000094861694909402939093177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000928516929092027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff169190911766010000000000009190931602919091179055565b601254604080517f5695fa5800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015611ce6573d6000803e3d6000fd5b6019546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009263010000009004169063fe575a8790602401602060405180830381865afa15801561317c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111e9190614fc1565b60006001600160a01b03841661321e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610e80565b6001600160a01b03831661329a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610e80565b600082116133105760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610e80565b61331a848461372e565b1561357657601954610100900460ff166133765760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610e80565b6001600160a01b03841660009081526002602052604090205460ff16806133b557506001600160a01b03831660009081526002602052604090205460ff165b15613479576001600160a01b03841660009081526006602052604090205460ff161580156133fc57506001600160a01b03831660009081526006602052604090205460ff16155b15613479576010548211156134795760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610e80565b600c546001600160a01b038481169116148015906134b057506001600160a01b03831660009081526002602052604090205460ff16155b15613576576001600160a01b03831660009081526006602052604090205460ff1661357657601154826134f8856001600160a01b031660009081526001602052604090205490565b6135029190614fde565b11156135765760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610e80565b6001600160a01b03841660009081526005602052604090205460019060ff16806135b857506001600160a01b03841660009081526005602052604090205460ff165b156135c1575060005b6135cd858585846137ff565b95945050505050565b6001600160a01b0383166136515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610e80565b6001600160a01b0382166136cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610e80565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b0384811691161480159061375b57506000546001600160a01b03838116911614155b801561377257506000546001600160a01b03163214155b801561379757506001600160a01b03821660009081526008602052604090205460ff16155b80156137bc57506001600160a01b03831660009081526008602052604090205460ff16155b80156137d357506001600160a01b03821661dead14155b80156137e757506001600160a01b03821615155b8015611434575050506001600160a01b031630141590565b60195460009062010000900460ff166138ad5761381c8585613aeb565b60195462010000900460ff1615801561383a575061383a858561372e565b156138ad5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610e80565b6138b7858561372e565b1561396b576019546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286811660248301526044820186905260009263010000009004169063ecd07a53906064016020604051808303816000875af1925050508015613954575060408051601f3d908101601f1916820190925261395191810190614fc1565b60015b61395d57600080fd5b90508061396957600080fd5b505b60145460ff161561398857613981858585613cfc565b9050613ae3565b6001600160a01b038516600090815260016020526040812080548592906139b0908490614e14565b90915550506001600160a01b03841660009081526002602052604090205460ff1615613a435760145460ff161580156139f05750601454610100900460ff165b15613a435742601554601654613a069190614fde565b1015613a4357306000908152600160205260409020546017548110613a41576018548110613a3357506018545b613a3c81613db1565b426016555b505b828215613a5857613a558686866142e0565b90505b6001600160a01b03851660009081526001602052604081208054839290613a80908490614fde565b90915550613a90905086866144cc565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ad591815260200190565b60405180910390a360019150505b949350505050565b60195462010000900460ff1615613b6a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610e80565b613b74828261372e565b158015613b8e5750600d546001600160a01b038281169116145b15612115576001600160a01b038083166000908152600860205260409020805460ff19166001179055601980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000017908190556301000000900416613c2357601980547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b6012546001600160a01b0316613c53576012805473ffffffffffffffffffffffffffffffffffffffff1916301790555b601260009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ca357600080fd5b505af1925050508015613cb4575060015b506014805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b038316600090815260016020526040812080548391908390613d26908490614e14565b90915550506001600160a01b03831660009081526001602052604081208054849290613d53908490614fde565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d9f91815260200190565b60405180910390a35060019392505050565b6014805460ff191660011790556040805160a081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000081048316606083015268010000000000000000900490911660808201819052613e2257506142d3565b306000908152600460209081526040808320600c546001600160a01b0316845290915290205460001914613e7b57306000908152600460209081526040808320600c546001600160a01b03168452909152902060001990555b60006002826080015161ffff16836020015161ffff1685613e9c9190614dab565b613ea69190614dd9565b613eb09190614dd9565b90506000613ebe8285614e14565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613ef857613ef8614e2b565b6001600160a01b03928316602091820292909201810191909152600c54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8e9190614fa4565b81600181518110613fa157613fa1614e2b565b6001600160a01b039283166020918202929092010152600c546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790614000908590600090869030904290600401614ff6565b600060405180830381600087803b15801561401a57600080fd5b505af115801561402e573d6000803e3d6000fd5b50479250600091508490506140438684614dab565b61404d9190614dd9565b9050841561413e57600c546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156140dc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141019190615067565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6141488183614e14565b91508560200151866080018181516141609190615095565b61ffff908116909152608088015188516000935090821691614183911685614dab565b61418d9190614dd9565b90506000876080015161ffff16886060015161ffff16856141ae9190614dab565b6141b89190614dd9565b905060006141c68284614fde565b6141d09086614e14565b9050601260009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561422257600080fd5b505af193505050508015614234575060015b50606089015161ffff161561427f57600f546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561427d573d6000803e3d6000fd5b505b604089015161ffff16156142c957600e546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156142c7573d6000803e3d6000fd5b505b5050505050505050505b506014805460ff19169055565b6001600160a01b038316600090815260026020526040812054819060ff16156143105750600a5461ffff16614428565b6001600160a01b03841660009081526002602052604090205460ff1615614417576019546040517f0f3a325f0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152630100000090920490911690630f3a325f90602401602060405180830381865afa15801561439c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143c09190614fc1565b80156143da575042601b54601a546143d89190614fde565b115b80156143e85750601c5460ff165b156144045750600a546601000000000000900461ffff16614428565b50600a5462010000900461ffff16614428565b50600a54640100000000900461ffff165b806144365782915050611434565b60006127106144458386614dab565b61444f9190614dd9565b30600090815260016020526040812080549293508392909190614473908490614fde565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36144c28185614e14565b9695505050505050565b6001600160a01b03821660009081526007602052604090205460ff16614576576012546001600160a01b03838116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561456357600080fd5b505af1925050508015614574575060015b505b6001600160a01b03811660009081526007602052604090205460ff16614620576012546001600160a01b03828116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561460d57600080fd5b505af192505050801561461e575060015b505b60195460ff1615612115576012546013546040517fa9e732bb0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163a9e732bb916146799160040190815260200190565b600060405180830381600087803b15801561469357600080fd5b505af19250505080156146a4575060015b612115575050565b60005b838110156146c75781810151838201526020016146af565b838111156126b85750506000910152565b600081518084526146f08160208601602086016146ac565b601f01601f19169290920160200192915050565b60208152600061143460208301846146d8565b803561ffff8116811461472957600080fd5b919050565b6000806000806080858703121561474457600080fd5b61474d85614717565b935061475b60208601614717565b925061476960408601614717565b915061477760608601614717565b905092959194509250565b60006020828403121561479457600080fd5b5035919050565b6001600160a01b0381168114611f7557600080fd5b600080604083850312156147c357600080fd5b82356147ce8161479b565b946020939093013593505050565b6000806000606084860312156147f157600080fd5b505081359360208301359350604090920135919050565b8015158114611f7557600080fd5b60006020828403121561482857600080fd5b813561143481614808565b6000806040838503121561484657600080fd5b82356148518161479b565b915060208301356148618161479b565b809150509250929050565b60008060006060848603121561488157600080fd5b833561488c8161479b565b9250602084013561489c8161479b565b929592945050506040919091013590565b600080604083850312156148c057600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614927576149276148cf565b604052919050565b600067ffffffffffffffff821115614949576149496148cf565b5060051b60200190565b600082601f83011261496457600080fd5b813560206149796149748361492f565b6148fe565b82815260059290921b8401810191818101908684111561499857600080fd5b8286015b848110156149bc5780356149af8161479b565b835291830191830161499c565b509695505050505050565b600082601f8301126149d857600080fd5b813560206149e86149748361492f565b82815260059290921b84018101918181019086841115614a0757600080fd5b8286015b848110156149bc5780358352918301918301614a0b565b60008060408385031215614a3557600080fd5b823567ffffffffffffffff80821115614a4d57600080fd5b614a5986838701614953565b93506020850135915080821115614a6f57600080fd5b50614a7c858286016149c7565b9150509250929050565b60008060008060808587031215614a9c57600080fd5b8435614aa781614808565b93506020850135614ab781614808565b92506040850135614ac781614808565b91506060850135614ad781614808565b939692955090935050565b600060208284031215614af457600080fd5b81356114348161479b565b600080600080600060a08688031215614b1757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215614b4d57600080fd5b8235614b588161479b565b9150602083013561486181614808565b608081526000614b7b60808301876146d8565b8281036020840152614b8d81876146d8565b90508281036040840152614ba181866146d8565b90508281036060840152614bb581856146d8565b979650505050505050565b60008060408385031215614bd357600080fd5b8235614b5881614808565b600080600060608486031215614bf357600080fd5b833567ffffffffffffffff80821115614c0b57600080fd5b614c1787838801614953565b94506020860135915080821115614c2d57600080fd5b614c39878388016149c7565b93506040860135915080821115614c4f57600080fd5b50614c5c868287016149c7565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff808316818516808303821115614cb257614cb2614c66565b01949350505050565b600181815b80851115614cf6578160001904821115614cdc57614cdc614c66565b80851615614ce957918102915b93841c9390800290614cc0565b509250929050565b600082614d0d5750600161111e565b81614d1a5750600061111e565b8160018114614d305760028114614d3a57614d56565b600191505061111e565b60ff841115614d4b57614d4b614c66565b50506001821b61111e565b5060208310610133831016604e8410600b8410161715614d79575081810a61111e565b614d838383614cbb565b8060001904821115614d9757614d97614c66565b029392505050565b60006114348383614cfe565b6000816000190483118215151615614dc557614dc5614c66565b500290565b600061143460ff841683614cfe565b600082614e0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015614e2657614e26614c66565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415614e7157614e71614c66565b60010192915050565b600060208284031215614e8c57600080fd5b5051919050565b600082601f830112614ea457600080fd5b815167ffffffffffffffff811115614ebe57614ebe6148cf565b614ed16020601f19601f840116016148fe565b818152846020838601011115614ee657600080fd5b613ae38260208301602087016146ac565b60008060008060808587031215614f0d57600080fd5b845167ffffffffffffffff80821115614f2557600080fd5b614f3188838901614e93565b95506020870151915080821115614f4757600080fd5b614f5388838901614e93565b94506040870151915080821115614f6957600080fd5b614f7588838901614e93565b93506060870151915080821115614f8b57600080fd5b50614f9887828801614e93565b91505092959194509250565b600060208284031215614fb657600080fd5b81516114348161479b565b600060208284031215614fd357600080fd5b815161143481614808565b60008219821115614ff157614ff1614c66565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156150465784516001600160a01b031683529383019391830191600101615021565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561507c57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156150b0576150b0614c66565b03939250505056fea2646970667358221220af5724edf0f50657d0e65a3be2c7f1dd48aa207f668ebb647d1b6288e6fe499b64736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106104695760003560e01c80636b639a2511610243578063c705c56911610143578063e8a0e3f9116100bb578063f2e4109c1161008a578063f94aa1b41161006f578063f94aa1b414610da4578063fdb78c0e14610deb578063fe575a8714610e0a57600080fd5b8063f2e4109c14610d79578063f7c245ea14610d8f57600080fd5b8063e8a0e3f914610cff578063eafb5a3c14610d1f578063ecfc021f14610d3f578063efe7dc9014610d5f57600080fd5b8063db40e30211610112578063dd62ed3e116100f7578063dd62ed3e14610c83578063dea528a114610cc9578063e4fcfd1814610ce957600080fd5b8063db40e30214610c43578063dbc1d6ca14610c6357600080fd5b8063c705c56914610b48578063cf84770614610b81578063d0b1449d14610c03578063d3f6a15714610c2357600080fd5b806395d89b41116101d6578063b1b08f71116101a5578063b3d514fb1161018a578063b3d514fb14610722578063b8e0e96d14610b12578063c6a276c214610b2857600080fd5b8063b1b08f7114610722578063b26e0beb14610af857600080fd5b806395d89b4114610a5d5780639dc6761514610aa3578063a9059cbb14610ab8578063ab5cb5a614610ad857600080fd5b806380c581d11161021257806380c581d1146109f5578063893d20e814610a155780638a63bd9b14610a335780638a8c523c14610a4857600080fd5b80636b639a25146109755780636ebd00781461099557806370a08231146109aa578063715018a6146109e057600080fd5b80632b28fc7a116103695780634fb2e45d116102e1578063590ffdce116102b05780636372c68f116102955780636372c68f146109105780636386c1c7146109305780636ab86dc11461096057600080fd5b8063590ffdce146108b75780635cce86cd146108d757600080fd5b80634fb2e45d146108295780634fbee1931461084957806350a8e0161461088257806355dbc369146108a257600080fd5b806334cd8260116103385780633f3cf56c1161031d5780633f3cf56c146107ca578063452ed4f1146107ea5780634ada218b1461080a57600080fd5b806334cd82601461078a57806336fddb04146107aa57600080fd5b80632b28fc7a146107225780632e8fa82114610738578063313ce5671461074e57806333251a0b1461076a57600080fd5b806309a8f179116103fc578063218950bc116103cb57806326003957116103b057806326003957146106c25780632610eaca146106e257806329dd87981461070257600080fd5b8063218950bc1461068257806323b872dd146106a257600080fd5b806309a8f179146106185780630fa604e41461063857806318160ddd1461064d5780631de3b1c71461066257600080fd5b80630712d165116104385780630712d165146105865780630758d924146105a857806309231602146105c8578063095ea7b3146105e857600080fd5b806303fd2a45146104755780630445b667146104a8578063069d955f146104cc57806306fdde031461053757600080fd5b3661047057005b600080fd5b34801561048157600080fd5b5061048b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104b457600080fd5b506104be60175481565b60405190815260200161049f565b3480156104d857600080fd5b50600a546105099061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161049f565b34801561054357600080fd5b5060408051808201909152601781527f4e6f64652041676772656761746f72204361706974616c00000000000000000060208201525b60405161049f9190614704565b34801561059257600080fd5b506105a66105a136600461472e565b610e2a565b005b3480156105b457600080fd5b50600c5461048b906001600160a01b031681565b3480156105d457600080fd5b506105a66105e3366004614782565b610f8b565b3480156105f457600080fd5b506106086106033660046147b0565b6110b7565b604051901515815260200161049f565b34801561062457600080fd5b506105a66106333660046147dc565b611124565b34801561064457600080fd5b506104be611217565b34801561065957600080fd5b506104be611237565b34801561066e57600080fd5b506105a661067d366004614816565b611250565b34801561068e57600080fd5b506105a661069d366004614833565b6112bd565b3480156106ae57600080fd5b506106086106bd36600461486c565b6113c1565b3480156106ce57600080fd5b506105a66106dd3660046148ad565b61143b565b3480156106ee57600080fd5b506105a66106fd366004614a22565b611552565b34801561070e57600080fd5b506105a661071d366004614a86565b61166c565b34801561072e57600080fd5b506104be6107d081565b34801561074457600080fd5b506104be60185481565b34801561075a57600080fd5b506040516012815260200161049f565b34801561077657600080fd5b506105a6610785366004614ae2565b611762565b34801561079657600080fd5b506105a66107a5366004614aff565b61180f565b3480156107b657600080fd5b506105a66107c5366004614b3a565b6118ab565b3480156107d657600080fd5b506105a66107e53660046148ad565b611930565b3480156107f657600080fd5b50600d5461048b906001600160a01b031681565b34801561081657600080fd5b5060195461060890610100900460ff1681565b34801561083557600080fd5b506105a6610844366004614ae2565b611a47565b34801561085557600080fd5b50610608610864366004614ae2565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561088e57600080fd5b506019546106089062010000900460ff1681565b3480156108ae57600080fd5b506104be611c91565b3480156108c357600080fd5b506105a66108d2366004614b3a565b611d0a565b3480156108e357600080fd5b506106086108f2366004614ae2565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561091c57600080fd5b506104be61092b366004614ae2565b611d8f565b34801561093c57600080fd5b5061095061094b366004614ae2565b611e18565b60405161049f9493929190614b68565b34801561096c57600080fd5b506105a6611eb9565b34801561098157600080fd5b506105a6610990366004614b3a565b611f78565b3480156109a157600080fd5b506104be612119565b3480156109b657600080fd5b506104be6109c5366004614ae2565b6001600160a01b031660009081526001602052604090205490565b3480156109ec57600080fd5b506105a6612134565b348015610a0157600080fd5b506105a6610a10366004614b3a565b612212565b348015610a2157600080fd5b506000546001600160a01b031661048b565b348015610a3f57600080fd5b506106086123c6565b348015610a5457600080fd5b506105a6612441565b348015610a6957600080fd5b5060408051808201909152600681527f244e4f44414300000000000000000000000000000000000000000000000000006020820152610579565b348015610aaf57600080fd5b506105a6612646565b348015610ac457600080fd5b50610608610ad33660046147b0565b6126be565b348015610ae457600080fd5b506104be610af3366004614ae2565b6126cb565b348015610b0457600080fd5b50601c546106089060ff1681565b348015610b1e57600080fd5b506104be601b5481565b348015610b3457600080fd5b506105a6610b43366004614ae2565b612717565b348015610b5457600080fd5b50610608610b63366004614ae2565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b8d57600080fd5b50600b54610bce9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161049f565b348015610c0f57600080fd5b506105a6610c1e366004614782565b6127c4565b348015610c2f57600080fd5b506105a6610c3e366004614833565b612832565b348015610c4f57600080fd5b506105a6610c5e366004614782565b6128c7565b348015610c6f57600080fd5b506105a6610c7e366004614782565b612936565b348015610c8f57600080fd5b506104be610c9e366004614833565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610cd557600080fd5b506105a6610ce4366004614bc0565b6129c3565b348015610cf557600080fd5b506104be60155481565b348015610d0b57600080fd5b506105a6610d1a366004614bde565b612a4a565b348015610d2b57600080fd5b506105a6610d3a366004614ae2565b612ba8565b348015610d4b57600080fd5b506105a6610d5a36600461472e565b612f63565b348015610d6b57600080fd5b506019546106089060ff1681565b348015610d8557600080fd5b506104be610bb881565b348015610d9b57600080fd5b506104be6130ae565b348015610db057600080fd5b50600e54600f54610dcb916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161049f565b348015610df757600080fd5b5060145461060890610100900460ff1681565b348015610e1657600080fd5b50610608610e25366004614ae2565b613111565b6000546001600160a01b03163314610e895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600b805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610f318587614c95565b610f3b9190614c95565b610f459190614c95565b600b805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff90921691909117905550505050565b6000546001600160a01b03163314610fe55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b60968110156110365760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610e80565b6019546040517f092316020000000000000000000000000000000000000000000000000000000081526004810183905263010000009091046001600160a01b0316906309231602906024015b600060405180830381600087803b15801561109c57600080fd5b505af11580156110b0573d6000803e3d6000fd5b5050505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906111129086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461117e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b61118981600a614d9f565b6111939083614dab565b6012546040517f8cd7f02e00000000000000000000000000000000000000000000000000000000815260048101869052602481018390529193506001600160a01b031690638cd7f02e90604401600060405180830381600087803b1580156111fa57600080fd5b505af115801561120e573d6000803e3d6000fd5b50505050505050565b60006112256012600a614dca565b6011546112329190614dd9565b905090565b60006009546000141561124957600080fd5b5060095490565b6000546001600160a01b031633146112aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b601c805460ff1916911515919091179055565b6000546001600160a01b031633146113175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b038116301480159061133957506001600160a01b0382163014155b80156113575750816001600160a01b0316816001600160a01b031614155b61136057600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055601980547fffffffffffffffffff0000000000000000000000000000000000000000ffffff1663010000009390921692909202179055565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914611426576001600160a01b038416600090815260046020908152604080832033845290915281208054849290611420908490614e14565b90915550505b6114318484846131a0565b90505b9392505050565b6000546001600160a01b031633146114955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6103e86009546114a59190614dd9565b81836009546114b49190614dab565b6114be9190614dd9565b10156115325760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610e80565b80826009546115419190614dab565b61154b9190614dd9565b6011555050565b80518251146115a35760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610e80565b60005b82518160ff16101561166757818160ff16815181106115c7576115c7614e2b565b60200260200101516115ee336001600160a01b031660009081526001602052604090205490565b10156115f957600080fd5b61165433848360ff168151811061161257611612614e2b565b60200260200101516012600a6116289190614dca565b858560ff168151811061163d5761163d614e2b565b602002602001015161164f9190614dab565b6131a0565b508061165f81614e5a565b9150506115a6565b505050565b6000546001600160a01b031633146116c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6019546040517f0109da69000000000000000000000000000000000000000000000000000000008152851515600482015284151560248201528315156044820152821515606482015263010000009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146117bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6019546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401611082565b6000546001600160a01b031633146118695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b83856009546118789190614dab565b6118829190614dd9565b6017556009548290611895908590614dab565b61189f9190614dd9565b60185560155550505050565b6000546001600160a01b031633146119055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461198a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6103e860095461199a9190614dd9565b81836009546119a99190614dab565b6119b39190614dd9565b1015611a275760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610e80565b8082600954611a369190614dab565b611a409190614dd9565b6010555050565b6000546001600160a01b03163314611aa15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b038116611b1d5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610e80565b6001600160a01b03811661dead1415611b9e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610e80565b600080546001600160a01b039081168252600560208181526040808520805460ff1990811690915585548516865260078084528287208054831690558786168752938352818620805482166001908117909155938352818620805490911684179055845490931684525290205415611c3957600080546001600160a01b03168082526001602052604090912054611c37919083906131a0565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601960039054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112329190614e7a565b6000546001600160a01b03163314611d645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6012546040517fd59b2ffd0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063d59b2ffd906024015b602060405180830381865afa158015611df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111e9190614e7a565b6012546040517f5e6056bb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526060928392839283921690635e6056bb90602401600060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eaa9190810190614ef7565b93509350935093509193509193565b6000546001600160a01b03163314611f135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b601260009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f6357600080fd5b505af193505050508015611f75575060015b50565b6000546001600160a01b03163314611fd25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6001600160a01b0382163014801590611ff95750600d546001600160a01b03838116911614155b61200257600080fd5b6001600160a01b0382166000908152600760205260409020805460ff191682158015919091179091556120b3576012546040517fdf047e9e0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600060248301529091169063df047e9e906044015b600060405180830381600087803b15801561209757600080fd5b505af11580156120ab573d6000803e3d6000fd5b505050505050565b6012546001600160a01b03838116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e9060440161207d565b5050565b60006121276012600a614dca565b6010546112329190614dd9565b6000546001600160a01b0316331461218e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b600080546001600160a01b039081168252600560209081526040808420805460ff199081169091558454909316845260079091528083208054909216909155815473ffffffffffffffffffffffffffffffffffffffff191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461226c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b806122e4576001600160a01b03828116600081815260026020526040808220805460ff1916905560195490517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915263010000009004909116906380c581d19060440161207d565b6003541561234b576203f480600354426122fe9190614e14565b1161234b5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610e80565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560195491517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483015263010000009004909116906380c581d19060440161207d565b600080546001600160a01b031633146124215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b600c5461243b9030906001600160a01b03166000196135d6565b50600190565b6000546001600160a01b0316331461249b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b601954610100900460ff16156124f35760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610e80565b60195462010000900460ff1661254b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610e80565b601954630100000090046001600160a01b031661259357601980547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b601954600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b15801561261f57600080fd5b505af1925050508015612630575060015b506019805461ff00191661010017905542601a55565b6012546040517f2e6f0efd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156126a457600080fd5b505af11580156126b8573d6000803e3d6000fd5b50505050565b60006114343384846131a0565b6012546040517ff6ed20170000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063f6ed201790602401611dd7565b6000546001600160a01b031633146127715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6019546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015263010000009092049091169063c6a276c290602401611082565b6000546001600160a01b0316331461281e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b620b71b0811061282d57600080fd5b601355565b6000546001600160a01b0316331461288c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b600e80546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff1991821617909155600f8054929093169116179055565b6000546001600160a01b031633146129215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6201518081111561293157600080fd5b601b55565b806129445750601354612953565b60135481101561295357600080fd5b6012546040517fa9e732bb000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b1580156129b257600080fd5b505af1925050508015612115575050565b6000546001600160a01b03163314612a1d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6014805461ff00191661010093151593909302929092179091556019805460ff1916911515919091179055565b81518351148015612a5c575080518251145b612aa85760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610e80565b60005b83518160ff1610156126b857818160ff1681518110612acc57612acc614e2b565b6020026020010151838260ff1681518110612ae957612ae9614e2b565b6020026020010151600954612afe9190614dab565b612b089190614dd9565b336000908152600160205260409020541015612b2357600080fd5b612b9533858360ff1681518110612b3c57612b3c614e2b565b6020026020010151848460ff1681518110612b5957612b59614e2b565b6020026020010151868560ff1681518110612b7657612b76614e2b565b6020026020010151600954612b8b9190614dab565b61164f9190614dd9565b5080612ba081614e5a565b915050612aab565b6000546001600160a01b03163314612c025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6b9190614fa4565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cdc9190614fa4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d639190614fa4565b90506001600160a01b038116612f0157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd59190614fa4565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e469190614fa4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecf9190614fa4565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612f2a565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556116679030906000196135d6565b6000546001600160a01b03163314612fbd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e80565b6107d08461ffff1611158015612fd957506107d08361ffff1611155b8015612feb57506107d08261ffff1611155b8015612ffd5750610bb88161ffff1611155b61300657600080fd5b600a805461ffff9586167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000094861694909402939093177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000928516929092027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff169190911766010000000000009190931602919091179055565b601254604080517f5695fa5800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015611ce6573d6000803e3d6000fd5b6019546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009263010000009004169063fe575a8790602401602060405180830381865afa15801561317c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111e9190614fc1565b60006001600160a01b03841661321e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610e80565b6001600160a01b03831661329a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610e80565b600082116133105760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610e80565b61331a848461372e565b1561357657601954610100900460ff166133765760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610e80565b6001600160a01b03841660009081526002602052604090205460ff16806133b557506001600160a01b03831660009081526002602052604090205460ff165b15613479576001600160a01b03841660009081526006602052604090205460ff161580156133fc57506001600160a01b03831660009081526006602052604090205460ff16155b15613479576010548211156134795760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610e80565b600c546001600160a01b038481169116148015906134b057506001600160a01b03831660009081526002602052604090205460ff16155b15613576576001600160a01b03831660009081526006602052604090205460ff1661357657601154826134f8856001600160a01b031660009081526001602052604090205490565b6135029190614fde565b11156135765760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610e80565b6001600160a01b03841660009081526005602052604090205460019060ff16806135b857506001600160a01b03841660009081526005602052604090205460ff165b156135c1575060005b6135cd858585846137ff565b95945050505050565b6001600160a01b0383166136515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610e80565b6001600160a01b0382166136cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610e80565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b0384811691161480159061375b57506000546001600160a01b03838116911614155b801561377257506000546001600160a01b03163214155b801561379757506001600160a01b03821660009081526008602052604090205460ff16155b80156137bc57506001600160a01b03831660009081526008602052604090205460ff16155b80156137d357506001600160a01b03821661dead14155b80156137e757506001600160a01b03821615155b8015611434575050506001600160a01b031630141590565b60195460009062010000900460ff166138ad5761381c8585613aeb565b60195462010000900460ff1615801561383a575061383a858561372e565b156138ad5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610e80565b6138b7858561372e565b1561396b576019546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286811660248301526044820186905260009263010000009004169063ecd07a53906064016020604051808303816000875af1925050508015613954575060408051601f3d908101601f1916820190925261395191810190614fc1565b60015b61395d57600080fd5b90508061396957600080fd5b505b60145460ff161561398857613981858585613cfc565b9050613ae3565b6001600160a01b038516600090815260016020526040812080548592906139b0908490614e14565b90915550506001600160a01b03841660009081526002602052604090205460ff1615613a435760145460ff161580156139f05750601454610100900460ff165b15613a435742601554601654613a069190614fde565b1015613a4357306000908152600160205260409020546017548110613a41576018548110613a3357506018545b613a3c81613db1565b426016555b505b828215613a5857613a558686866142e0565b90505b6001600160a01b03851660009081526001602052604081208054839290613a80908490614fde565b90915550613a90905086866144cc565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ad591815260200190565b60405180910390a360019150505b949350505050565b60195462010000900460ff1615613b6a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610e80565b613b74828261372e565b158015613b8e5750600d546001600160a01b038281169116145b15612115576001600160a01b038083166000908152600860205260409020805460ff19166001179055601980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000017908190556301000000900416613c2357601980547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b6012546001600160a01b0316613c53576012805473ffffffffffffffffffffffffffffffffffffffff1916301790555b601260009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ca357600080fd5b505af1925050508015613cb4575060015b506014805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b038316600090815260016020526040812080548391908390613d26908490614e14565b90915550506001600160a01b03831660009081526001602052604081208054849290613d53908490614fde565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d9f91815260200190565b60405180910390a35060019392505050565b6014805460ff191660011790556040805160a081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000081048316606083015268010000000000000000900490911660808201819052613e2257506142d3565b306000908152600460209081526040808320600c546001600160a01b0316845290915290205460001914613e7b57306000908152600460209081526040808320600c546001600160a01b03168452909152902060001990555b60006002826080015161ffff16836020015161ffff1685613e9c9190614dab565b613ea69190614dd9565b613eb09190614dd9565b90506000613ebe8285614e14565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613ef857613ef8614e2b565b6001600160a01b03928316602091820292909201810191909152600c54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8e9190614fa4565b81600181518110613fa157613fa1614e2b565b6001600160a01b039283166020918202929092010152600c546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790614000908590600090869030904290600401614ff6565b600060405180830381600087803b15801561401a57600080fd5b505af115801561402e573d6000803e3d6000fd5b50479250600091508490506140438684614dab565b61404d9190614dd9565b9050841561413e57600c546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156140dc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141019190615067565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6141488183614e14565b91508560200151866080018181516141609190615095565b61ffff908116909152608088015188516000935090821691614183911685614dab565b61418d9190614dd9565b90506000876080015161ffff16886060015161ffff16856141ae9190614dab565b6141b89190614dd9565b905060006141c68284614fde565b6141d09086614e14565b9050601260009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561422257600080fd5b505af193505050508015614234575060015b50606089015161ffff161561427f57600f546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561427d573d6000803e3d6000fd5b505b604089015161ffff16156142c957600e546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156142c7573d6000803e3d6000fd5b505b5050505050505050505b506014805460ff19169055565b6001600160a01b038316600090815260026020526040812054819060ff16156143105750600a5461ffff16614428565b6001600160a01b03841660009081526002602052604090205460ff1615614417576019546040517f0f3a325f0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152630100000090920490911690630f3a325f90602401602060405180830381865afa15801561439c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143c09190614fc1565b80156143da575042601b54601a546143d89190614fde565b115b80156143e85750601c5460ff165b156144045750600a546601000000000000900461ffff16614428565b50600a5462010000900461ffff16614428565b50600a54640100000000900461ffff165b806144365782915050611434565b60006127106144458386614dab565b61444f9190614dd9565b30600090815260016020526040812080549293508392909190614473908490614fde565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36144c28185614e14565b9695505050505050565b6001600160a01b03821660009081526007602052604090205460ff16614576576012546001600160a01b03838116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561456357600080fd5b505af1925050508015614574575060015b505b6001600160a01b03811660009081526007602052604090205460ff16614620576012546001600160a01b03828116600081815260016020526040908190205490517fdf047e9e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561460d57600080fd5b505af192505050801561461e575060015b505b60195460ff1615612115576012546013546040517fa9e732bb0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163a9e732bb916146799160040190815260200190565b600060405180830381600087803b15801561469357600080fd5b505af19250505080156146a4575060015b612115575050565b60005b838110156146c75781810151838201526020016146af565b838111156126b85750506000910152565b600081518084526146f08160208601602086016146ac565b601f01601f19169290920160200192915050565b60208152600061143460208301846146d8565b803561ffff8116811461472957600080fd5b919050565b6000806000806080858703121561474457600080fd5b61474d85614717565b935061475b60208601614717565b925061476960408601614717565b915061477760608601614717565b905092959194509250565b60006020828403121561479457600080fd5b5035919050565b6001600160a01b0381168114611f7557600080fd5b600080604083850312156147c357600080fd5b82356147ce8161479b565b946020939093013593505050565b6000806000606084860312156147f157600080fd5b505081359360208301359350604090920135919050565b8015158114611f7557600080fd5b60006020828403121561482857600080fd5b813561143481614808565b6000806040838503121561484657600080fd5b82356148518161479b565b915060208301356148618161479b565b809150509250929050565b60008060006060848603121561488157600080fd5b833561488c8161479b565b9250602084013561489c8161479b565b929592945050506040919091013590565b600080604083850312156148c057600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614927576149276148cf565b604052919050565b600067ffffffffffffffff821115614949576149496148cf565b5060051b60200190565b600082601f83011261496457600080fd5b813560206149796149748361492f565b6148fe565b82815260059290921b8401810191818101908684111561499857600080fd5b8286015b848110156149bc5780356149af8161479b565b835291830191830161499c565b509695505050505050565b600082601f8301126149d857600080fd5b813560206149e86149748361492f565b82815260059290921b84018101918181019086841115614a0757600080fd5b8286015b848110156149bc5780358352918301918301614a0b565b60008060408385031215614a3557600080fd5b823567ffffffffffffffff80821115614a4d57600080fd5b614a5986838701614953565b93506020850135915080821115614a6f57600080fd5b50614a7c858286016149c7565b9150509250929050565b60008060008060808587031215614a9c57600080fd5b8435614aa781614808565b93506020850135614ab781614808565b92506040850135614ac781614808565b91506060850135614ad781614808565b939692955090935050565b600060208284031215614af457600080fd5b81356114348161479b565b600080600080600060a08688031215614b1757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215614b4d57600080fd5b8235614b588161479b565b9150602083013561486181614808565b608081526000614b7b60808301876146d8565b8281036020840152614b8d81876146d8565b90508281036040840152614ba181866146d8565b90508281036060840152614bb581856146d8565b979650505050505050565b60008060408385031215614bd357600080fd5b8235614b5881614808565b600080600060608486031215614bf357600080fd5b833567ffffffffffffffff80821115614c0b57600080fd5b614c1787838801614953565b94506020860135915080821115614c2d57600080fd5b614c39878388016149c7565b93506040860135915080821115614c4f57600080fd5b50614c5c868287016149c7565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff808316818516808303821115614cb257614cb2614c66565b01949350505050565b600181815b80851115614cf6578160001904821115614cdc57614cdc614c66565b80851615614ce957918102915b93841c9390800290614cc0565b509250929050565b600082614d0d5750600161111e565b81614d1a5750600061111e565b8160018114614d305760028114614d3a57614d56565b600191505061111e565b60ff841115614d4b57614d4b614c66565b50506001821b61111e565b5060208310610133831016604e8410600b8410161715614d79575081810a61111e565b614d838383614cbb565b8060001904821115614d9757614d97614c66565b029392505050565b60006114348383614cfe565b6000816000190483118215151615614dc557614dc5614c66565b500290565b600061143460ff841683614cfe565b600082614e0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015614e2657614e26614c66565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415614e7157614e71614c66565b60010192915050565b600060208284031215614e8c57600080fd5b5051919050565b600082601f830112614ea457600080fd5b815167ffffffffffffffff811115614ebe57614ebe6148cf565b614ed16020601f19601f840116016148fe565b818152846020838601011115614ee657600080fd5b613ae38260208301602087016146ac565b60008060008060808587031215614f0d57600080fd5b845167ffffffffffffffff80821115614f2557600080fd5b614f3188838901614e93565b95506020870151915080821115614f4757600080fd5b614f5388838901614e93565b94506040870151915080821115614f6957600080fd5b614f7588838901614e93565b93506060870151915080821115614f8b57600080fd5b50614f9887828801614e93565b91505092959194509250565b600060208284031215614fb657600080fd5b81516114348161479b565b600060208284031215614fd357600080fd5b815161143481614808565b60008219821115614ff157614ff1614c66565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156150465784516001600160a01b031683529383019391830191600101615021565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561507c57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156150b0576150b0614c66565b03939250505056fea2646970667358221220af5724edf0f50657d0e65a3be2c7f1dd48aa207f668ebb647d1b6288e6fe499b64736f6c634300080b0033
Deployed Bytecode Sourcemap
7513:25076:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9376:73;;;;;;;;;;;;9407:42;9376:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;9376:73:0;;;;;;;;10191:52;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;10191:52:0;245:177:1;8675:142:0;;;;;;;;;;-1:-1:-1;8675:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;660:6:1;693:15;;;675:34;;745:15;;;740:2;725:18;;718:43;797:15;;;777:18;;;770:43;;;;849:15;;;844:2;829:18;;822:43;637:3;622:19;8675:142:0;427:444:1;14663:80:0;;;;;;;;;;-1:-1:-1;14735:5:0;;;;;;;;;;;;;;;;;14663:80;;;;;;;:::i;18426:330::-;;;;;;;;;;-1:-1:-1;18426:330:0;;;;;:::i;:::-;;:::i;:::-;;9313:26;;;;;;;;;;-1:-1:-1;9313:26:0;;;;-1:-1:-1;;;;;9313:26:0;;;17324:150;;;;;;;;;;-1:-1:-1;17324:150:0;;;;;:::i;:::-;;:::i;15084:216::-;;;;;;;;;;-1:-1:-1;15084:216:0;;;;;:::i;:::-;;:::i;:::-;;;3333:14:1;;3326:22;3308:41;;3296:2;3281:18;15084:216:0;3168:187:1;19519:277:0;;;;;;;;;;-1:-1:-1;19519:277:0;;;;;:::i;:::-;;:::i;23496:112::-;;;;;;;;;;;;;:::i;14366:115::-;;;;;;;;;;;;;:::i;23751:107::-;;;;;;;;;;-1:-1:-1;23751:107:0;;;;;:::i;:::-;;:::i;16445:300::-;;;;;;;;;;-1:-1:-1;16445:300:0;;;;;:::i;:::-;;:::i;15998:306::-;;;;;;;;;;-1:-1:-1;15998:306:0;;;;;:::i;:::-;;:::i;23107:267::-;;;;;;;;;;-1:-1:-1;23107:267:0;;;;;:::i;:::-;;:::i;31723:373::-;;;;;;;;;;-1:-1:-1;31723:373:0;;;;;:::i;:::-;;:::i;17107:209::-;;;;;;;;;;-1:-1:-1;17107:209:0;;;;;:::i;:::-;;:::i;9060:42::-;;;;;;;;;;;;9098:4;9060:42;;10250:50;;;;;;;;;;;;;;;;14487:80;;;;;;;;;;-1:-1:-1;14487:80:0;;8302:2;8676:36:1;;8664:2;8649:18;14487:80:0;8534:184:1;16753:108:0;;;;;;;;;;-1:-1:-1;16753:108:0;;;;;:::i;:::-;;:::i;19173:338::-;;;;;;;;;;-1:-1:-1;19173:338:0;;;;;:::i;:::-;;:::i;22183:140::-;;;;;;;;;;-1:-1:-1;22183:140:0;;;;;:::i;:::-;;:::i;22830:269::-;;;;;;;;;;-1:-1:-1;22830:269:0;;;;;:::i;:::-;;:::i;9346:21::-;;;;;;;;;;-1:-1:-1;9346:21:0;;;;-1:-1:-1;;;;;9346:21:0;;;10350:34;;;;;;;;;;-1:-1:-1;10350:34:0;;;;;;;;;;;13034:689;;;;;;;;;;-1:-1:-1;13034:689:0;;;;;:::i;:::-;;:::i;21769:125::-;;;;;;;;;;-1:-1:-1;21769:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;21858:28:0;21834:4;21858:28;;;:19;:28;;;;;;;;;21769:125;10391:36;;;;;;;;;;-1:-1:-1;10391:36:0;;;;;;;;;;;16995:104;;;;;;;;;;;;;:::i;22688:134::-;;;;;;;;;;-1:-1:-1;22688:134:0;;;;;:::i;:::-;;:::i;22045:130::-;;;;;;;;;;-1:-1:-1;22045:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;22137:30:0;22113:4;22137:30;;;:21;:30;;;;;;;;;22045:130;20377:154;;;;;;;;;;-1:-1:-1;20377:154:0;;;;;:::i;:::-;;:::i;20177:192::-;;;;;;;;;;-1:-1:-1;20177:192:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;30901:124::-;;;;;;;;;;;;;:::i;22331:349::-;;;;;;;;;;-1:-1:-1;22331:349:0;;;;;:::i;:::-;;:::i;23382:106::-;;;;;;;;;;;;;:::i;14834:103::-;;;;;;;;;;-1:-1:-1;14834:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;14918:16:0;14900:7;14918:16;;;:7;:16;;;;;;;14834:103;13731:245;;;;;;;;;;;;;:::i;21245:516::-;;;;;;;;;;-1:-1:-1;21245:516:0;;;;;:::i;:::-;;:::i;14749:79::-;;;;;;;;;;-1:-1:-1;14801:7:0;14819:6;-1:-1:-1;;;;;14819:6:0;14749:79;;15657:173;;;;;;;;;;;;;:::i;17482:469::-;;;;;;;;;;;;;:::i;14573:84::-;;;;;;;;;;-1:-1:-1;14647:7:0;;;;;;;;;;;;;;;;;14573:84;;19943:100;;;;;;;;;;;;;:::i;15838:152::-;;;;;;;;;;-1:-1:-1;15838:152:0;;;;;:::i;:::-;;:::i;20539:150::-;;;;;;;;;;-1:-1:-1;20539:150:0;;;;;:::i;:::-;;:::i;10528:35::-;;;;;;;;;;-1:-1:-1;10528:35:0;;;;;;;;10486;;;;;;;;;;;;;;;;16869:118;;;;;;;;;;-1:-1:-1;16869:118:0;;;;;:::i;:::-;;:::i;21902:135::-;;;;;;;;;;-1:-1:-1;21902:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;21996:33:0;21972:4;21996:33;;;:24;:33;;;;;;;;;21902:135;8826:225;;;;;;;;;;-1:-1:-1;8826:225:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10796:6:1;10829:15;;;10811:34;;10881:15;;;10876:2;10861:18;;10854:43;10933:15;;;10913:18;;;10906:43;;;;10985:15;;10980:2;10965:18;;10958:43;11038:15;;;11032:3;11017:19;;11010:44;10773:3;10758:19;8826:225:0;10537:523:1;19804:131:0;;;;;;;;;;-1:-1:-1;19804:131:0;;;;;:::i;:::-;;:::i;18764:200::-;;;;;;;;;;-1:-1:-1;18764:200:0;;;;;:::i;:::-;;:::i;23616:127::-;;;;;;;;;;-1:-1:-1;23616:127:0;;;;;:::i;:::-;;:::i;27619:242::-;;;;;;;;;;-1:-1:-1;27619:242:0;;;;;:::i;:::-;;:::i;14943:133::-;;;;;;;;;;-1:-1:-1;14943:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15045:19:0;;;15027:7;15045:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14943:133;18972:193;;;;;;;;;;-1:-1:-1;18972:193:0;;;;;:::i;:::-;;:::i;10108:45::-;;;;;;;;;;;;;;;;32104:482;;;;;;;;;;-1:-1:-1;32104:482:0;;;;;:::i;:::-;;:::i;20697:540::-;;;;;;;;;;-1:-1:-1;20697:540:0;;;;;:::i;:::-;;:::i;17959:459::-;;;;;;;;;;-1:-1:-1;17959:459:0;;;;;:::i;:::-;;:::i;10307:34::-;;;;;;;;;;-1:-1:-1;10307:34:0;;;;;;;;9213:43;;;;;;;;;;;;9252:4;9213:43;;20051:118;;;;;;;;;;;;;:::i;9648:204::-;;;;;;;;;;-1:-1:-1;9648:204:0;;;;;;-1:-1:-1;;;;;9648:204:0;;;;;;;;;;;-1:-1:-1;;;;;12966:15:1;;;12948:34;;13018:15;;;;13013:2;12998:18;;12991:43;12860:18;9648:204:0;12681:359:1;10062:39:0;;;;;;;;;;-1:-1:-1;10062:39:0;;;;;;;;;;;16312:125;;;;;;;;;;-1:-1:-1;16312:125:0;;;;;:::i;:::-;;:::i;18426:330::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;;;;;;;;;18540:7:::1;:25:::0;;::::1;::::0;;::::1;18576:29:::0;;;;;;;;;;;::::1;;;18656:27:::0;;18616:29;;;::::1;;18656:27:::0;;;;;;::::1;::::0;;;::::1;;::::0;;;18616:29;18710:19:::1;18576:29:::0;18540:25;18710:19:::1;:::i;:::-;:31;;;;:::i;:::-;:38;;;;:::i;:::-;18694:7;:54:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;18426:330:0:o;17324:150::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;17408:3:::1;17401;:10;;17393:31;;;::::0;-1:-1:-1;;;17393:31:0;;14026:2:1;17393:31:0::1;::::0;::::1;14008:21:1::0;14065:1;14045:18;;;14038:29;14103:10;14083:18;;;14076:38;14131:18;;17393:31:0::1;13824:331:1::0;17393:31:0::1;17435:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;17435:9:0;;;::::1;-1:-1:-1::0;;;;;17435:9:0::1;::::0;:26:::1;::::0;364:18:1;;17435:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17324:150:::0;:::o;15084:216::-;15188:10;15159:4;15176:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15176:32:0;;;;;;;;;;:41;;;15233:37;15159:4;;15176:32;;15233:37;;;;15211:6;391:25:1;;379:2;364:18;;245:177;15233:37:0;;;;;;;;-1:-1:-1;15288:4:0;15084:216;;;;;:::o;19519:277::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;19691:27:::1;19695:23:::0;19691:2:::1;:27;:::i;:::-;19674:44;::::0;:14;:44:::1;:::i;:::-;19729:9;::::0;:59:::1;::::0;;;;::::1;::::0;::::1;16061:25:1::0;;;16102:18;;;16095:34;;;19657:61:0;;-1:-1:-1;;;;;;19729:9:0::1;::::0;:31:::1;::::0;16034:18:1;;19729:59:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19519:277:::0;;;:::o;23496:112::-;23541:7;23586:13;8302:2;23586;:13;:::i;:::-;23568:14;;:32;;;;:::i;:::-;23561:39;;23496:112;:::o;14366:115::-;14421:7;14436;;14447:1;14436:12;14432:31;;;14452:8;;;14432:31;-1:-1:-1;14471:7:0;;;14366:115::o;23751:107::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;23824:16:::1;:26:::0;;-1:-1:-1;;23824:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23751:107::o;16445:300::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;-1:-1:-1;;;;;16552:29:0;::::1;16576:4;16552:29;::::0;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;16585:29:0;::::1;16609:4;16585:29;;16552:62;:94;;;;;16634:12;-1:-1:-1::0;;;;;16618:28:0::1;:12;-1:-1:-1::0;;;;;16618:28:0::1;;;16552:94;16544:103;;;::::0;::::1;;16658:9;:33:::0;;-1:-1:-1;;16658:33:0::1;-1:-1:-1::0;;;;;16658:33:0;;::::1;;::::0;;16702:9:::1;:35:::0;;;::::1;::::0;;;;::::1;::::0;;;::::1;;::::0;;16445:300::o;15998:306::-;-1:-1:-1;;;;;16119:19:0;;16098:4;16119:19;;;:11;:19;;;;;;;;16139:10;16119:31;;;;;;;;-1:-1:-1;;16119:52:0;16115:126;;-1:-1:-1;;;;;16188:19:0;;;;;;:11;:19;;;;;;;;16208:10;16188:31;;;;;;;:41;;16223:6;;16188:19;:41;;16223:6;;16188:41;:::i;:::-;;;;-1:-1:-1;;16115:126:0;16260:36;16270:6;16278:9;16289:6;16260:9;:36::i;:::-;16253:43;;15998:306;;;;;;:::o;23107:267::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;23249:4:::1;23239:7;;:14;;;;:::i;:::-;23227:7;23216;23206;;:17;;;;:::i;:::-;23205:29;;;;:::i;:::-;:49;;23197:112;;;::::0;-1:-1:-1;;;23197:112:0;;16896:2:1;23197:112:0::1;::::0;::::1;16878:21:1::0;16935:2;16915:18;;;16908:30;16974:34;16954:18;;;16947:62;17045:20;17025:18;;;17018:48;17083:19;;23197:112:0::1;16694:414:1::0;23197:112:0::1;23359:7;23348;23338;;:17;;;;:::i;:::-;23337:29;;;;:::i;:::-;23320:14;:46:::0;-1:-1:-1;;23107:267:0:o;31723:373::-;31848:7;:14;31829:8;:15;:33;31821:67;;;;-1:-1:-1;;;31821:67:0;;17315:2:1;31821:67:0;;;17297:21:1;17354:2;17334:18;;;17327:30;17393:23;17373:18;;;17366:51;17434:18;;31821:67:0;17113:345:1;31821:67:0;31904:7;31899:190;31921:8;:15;31917:1;:19;;;31899:190;;;31991:7;31999:1;31991:10;;;;;;;;;;:::i;:::-;;;;;;;31966:21;31976:10;-1:-1:-1;;;;;14918:16:0;14900:7;14918:16;;;:7;:16;;;;;;;14834:103;31966:21;:35;;31958:44;;;;;;32017:60;32027:10;32039:8;32048:1;32039:11;;;;;;;;;;:::i;:::-;;;;;;;8302:2;32063;:13;;;;:::i;:::-;32052:7;32060:1;32052:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;32017:9;:60::i;:::-;-1:-1:-1;31938:3:0;;;;:::i;:::-;;;;31899:190;;;;31723:373;;:::o;17107:209::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;17236:9:::1;::::0;:72:::1;::::0;;;;18064:14:1;;18057:22;17236:72:0::1;::::0;::::1;18039:41:1::0;18123:14;;18116:22;18096:18;;;18089:50;18182:14;;18175:22;18155:18;;;18148:50;18241:14;;18234:22;18214:18;;;18207:50;17236:9:0;;;::::1;-1:-1:-1::0;;;;;17236:9:0::1;::::0;:24:::1;::::0;18011:19:1;;17236:72:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17107:209:::0;;;;:::o;16753:108::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;16822:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16822:31:0::1;::::0;::::1;160:74:1::0;16822:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;16822:31:0::1;14:226:1::0;19173:338:0;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;19387:16:::1;19367;19357:7;;:26;;;;:::i;:::-;19356:47;;;;:::i;:::-;19340:13;:63:::0;19428:7:::1;::::0;19455:13;;19428:23:::1;::::0;19438:13;;19428:23:::1;:::i;:::-;19427:41;;;;:::i;:::-;19414:10;:54:::0;19479:17:::1;:24:::0;-1:-1:-1;;;;19173:338:0:o;22183:140::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;-1:-1:-1;;;;;22275:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;22275:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22183:140::o;22830:269::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;22971:4:::1;22961:7;;:14;;;;:::i;:::-;22949:7;22938;22928;;:17;;;;:::i;:::-;22927:29;;;;:::i;:::-;:49;;22919:117;;;::::0;-1:-1:-1;;;22919:117:0;;18470:2:1;22919:117:0::1;::::0;::::1;18452:21:1::0;18509:2;18489:18;;;18482:30;18548:34;18528:18;;;18521:62;18619:25;18599:18;;;18592:53;18662:19;;22919:117:0::1;18268:419:1::0;22919:117:0::1;23084:7;23073;23063;;:17;;;;:::i;:::-;23062:29;;;;:::i;:::-;23047:12;:44:::0;-1:-1:-1;;22830:269:0:o;13034:689::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;-1:-1:-1;;;;;13113:22:0;::::1;13105:96;;;::::0;-1:-1:-1;;;13105:96:0;;18894:2:1;13105:96:0::1;::::0;::::1;18876:21:1::0;18933:2;18913:18;;;18906:30;18972:34;18952:18;;;18945:62;19043:31;19023:18;;;19016:59;19092:19;;13105:96:0::1;18692:425:1::0;13105:96:0::1;-1:-1:-1::0;;;;;13220:16:0;::::1;9407:42;13220:16;;13212:90;;;::::0;-1:-1:-1;;;13212:90:0;;18894:2:1;13212:90:0::1;::::0;::::1;18876:21:1::0;18933:2;18913:18;;;18906:30;18972:34;18952:18;;;18945:62;19043:31;19023:18;;;19016:59;19092:19;;13212:90:0::1;18692:425:1::0;13212:90:0::1;13343:5;13333:6:::0;;-1:-1:-1;;;;;13333:6:0;;::::1;13313:27:::0;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;13313:35:0;;::::1;::::0;;;13384:6;;;::::1;13359:32:::0;;:24:::1;:32:::0;;;;;;:40;;;::::1;::::0;;13410:29;;::::1;::::0;;;;;;;;:36;;;::::1;13333:6:::0;13410:36;;::::1;::::0;;;13457:34;;;;;;:41;;;;::::1;::::0;::::1;::::0;;13530:6;;;;::::1;13522:15:::0;;;;;;:19;13519:95:::1;;13568:6;::::0;;-1:-1:-1;;;;;13568:6:0::1;13586:15:::0;;;13568:6;13586:15:::1;::::0;;;;;;13558:44:::1;::::0;13568:6;13576:8;;13558:9:::1;:44::i;:::-;;13519:95;13634:6;:17:::0;;-1:-1:-1;;13634:17:0::1;-1:-1:-1::0;;;;;13634:17:0;::::1;::::0;;::::1;::::0;;13667:38:::1;::::0;13634:17;;;;13667:38:::1;::::0;13634:6;13667:38:::1;13034:689:::0;:::o;16995:104::-;17040:7;17067:9;;;;;;;;;-1:-1:-1;;;;;17067:9:0;-1:-1:-1;;;;;17067:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22688:134::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;-1:-1:-1;;;;;22776:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;22776:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22688:134::o;20377:154::-;20478:9;;:45;;;;;-1:-1:-1;;;;;178:55:1;;;20478:45:0;;;160:74:1;20451:7:0;;20478:9;;:32;;133:18:1;;20478:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20177:192::-;20320:9;;:41;;;;;-1:-1:-1;;;;;178:55:1;;;20320:41:0;;;160:74:1;20242:13:0;;;;;;;;20320:9;;:28;;133:18:1;;20320:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20320:41:0;;;;;;;;;;;;:::i;:::-;20313:48;;;;;;;;20177:192;;;;;:::o;30901:124::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;30960:9:::1;;;;;;;;;-1:-1:-1::0;;;;;30960:9:0::1;-1:-1:-1::0;;;;;30960:14:0::1;;30982:21;30960:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;30956:62:::0;30901:124::o;22331:349::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;-1:-1:-1;;;;;22426:23:0;::::1;22444:4;22426:23;::::0;::::1;::::0;:43:::1;;-1:-1:-1::0;22463:6:0::1;::::0;-1:-1:-1;;;;;22453:16:0;;::::1;22463:6:::0;::::1;22453:16;;22426:43;22418:52;;;::::0;::::1;;-1:-1:-1::0;;;;;22481:32:0;::::1;;::::0;;;:24:::1;:32;::::0;;;;:42;;-1:-1:-1;;22481:42:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;22534:139:::1;;22562:9;::::0;:26:::1;::::0;;;;-1:-1:-1;;;;;21048:55:1;;;22562:26:0::1;::::0;::::1;21030:74:1::0;22562:9:0::1;21120:18:1::0;;;21113:34;22562:9:0;;::::1;::::0;:15:::1;::::0;21003:18:1;;22562:26:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22331:349:::0;;:::o;22534:139::-:1;22621:9;::::0;-1:-1:-1;;;;;22645:15:0;;::::1;22621:9;22645:15:::0;;;22621:9;22645:15:::1;::::0;;;;;;;22621:40;;;;;::::1;::::0;::::1;21030:74:1::0;;;;21120:18;;;21113:34;22621:9:0;::::1;::::0;:15:::1;::::0;21003:18:1;;22621:40:0::1;20848:305:1::0;22534:139:0::1;22331:349:::0;;:::o;23382:106::-;23423:7;23466:13;8302:2;23466;:13;:::i;:::-;23450:12;;:30;;;;:::i;13731:245::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;13826:5:::1;13816:6:::0;;-1:-1:-1;;;;;13816:6:0;;::::1;13796:27:::0;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;13796:35:0;;::::1;::::0;;;13867:6;;;;::::1;13842:32:::0;;:24:::1;:32:::0;;;;;;:40;;;;::::1;::::0;;;13893:19;;-1:-1:-1;;13893:19:0::1;::::0;;13928:40;13826:5;;13928:40:::1;::::0;13826:5;;13928:40:::1;13731:245::o:0;21245:516::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;21326:16;21322:432:::1;;-1:-1:-1::0;;;;;21359:13:0;;::::1;21375:5;21359:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;21359:21:0::1;::::0;;21395:9:::1;::::0;:32;;;;;::::1;::::0;::::1;21628:74:1::0;;;;21718:18;;;21711:50;;;;21395:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;21601:18:1;;21395:32:0::1;21460:307:1::0;21322:432:0::1;21464:17;::::0;:22;21460:152:::1;;21553:6;21533:17;;21515:15;:35;;;;:::i;:::-;:44;21507:89;;;::::0;-1:-1:-1;;;21507:89:0;;21974:2:1;21507:89:0::1;::::0;::::1;21956:21:1::0;;;21993:18;;;21986:30;22052:34;22032:18;;;22025:62;22104:18;;21507:89:0::1;21772:356:1::0;21507:89:0::1;-1:-1:-1::0;;;;;21626:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;21626:20:0::1;21642:4;21626:20:::0;;::::1;::::0;;;21681:15:::1;21661:17;:35:::0;21711:9:::1;::::0;:31;;;;;::::1;::::0;::::1;21628:74:1::0;;;;21718:18;;;21711:50;:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;21601:18:1;;21711:31:0::1;21460:307:1::0;15657:173:0;15721:4;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;15770:9:::1;::::0;15738:62:::1;::::0;15755:4:::1;::::0;-1:-1:-1;;;;;15770:9:0::1;-1:-1:-1::0;;15738:8:0::1;:62::i;:::-;-1:-1:-1::0;15818:4:0::1;15657:173:::0;:::o;17482:469::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;17544:14:::1;::::0;::::1;::::0;::::1;;;17543:15;17535:52;;;::::0;-1:-1:-1;;;17535:52:0;;22335:2:1;17535:52:0::1;::::0;::::1;22317:21:1::0;22374:2;22354:18;;;22347:30;22413:26;22393:18;;;22386:54;22457:18;;17535:52:0::1;22133:348:1::0;17535:52:0::1;17606:16;::::0;;;::::1;;;17598:53;;;::::0;-1:-1:-1;;;17598:53:0;;22688:2:1;17598:53:0::1;::::0;::::1;22670:21:1::0;22727:2;22707:18;;;22700:30;22766:26;22746:18;;;22739:54;22810:18;;17598:53:0::1;22486:348:1::0;17598:53:0::1;17673:9;::::0;;;::::1;-1:-1:-1::0;;;;;17673:9:0::1;17662:99;;17713:9;:36:::0;;;::::1;17743:4;17713:36:::0;::::1;;::::0;;17662:99:::1;17775:9;::::0;17795:6:::1;::::0;17775:85:::1;::::0;;;;-1:-1:-1;;;;;17795:6:0;;::::1;17775:85;::::0;::::1;23062:74:1::0;23184:10;17810:12:0::1;23172:23:1::0;23152:18;;;23145:51;23244:18;17832:15:0::1;23232:31:1::0;23212:18;;;23205:59;8302:2:0::1;23280:18:1::0;;;23273:45;17775:9:0;;;::::1;;::::0;:19:::1;::::0;23034::1;;17775:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17771:101:::0;17882:14:::1;:21:::0;;-1:-1:-1;;17882:21:0::1;;;::::0;;17928:15:::1;17914:11;:29:::0;17482:469::o;19943:100::-;19994:9;;:41;;;;;20024:10;19994:41;;;160:74:1;-1:-1:-1;;;;;19994:9:0;;;;:29;;133:18:1;;19994:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19943:100::o;15838:152::-;15918:4;15942:40;15952:10;15964:9;15975:6;15942:9;:40::i;20539:150::-;20641:9;;:40;;;;;-1:-1:-1;;;;;178:55:1;;;20641:40:0;;;160:74:1;20614:7:0;;20641:9;;:27;;133:18:1;;20641:40:0;14:226:1;16869:118:0;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;16943:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16943:36:0::1;::::0;::::1;160:74:1::0;16943:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;16943:36:0::1;14:226:1::0;19804:131:0;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;19891:6:::1;19885:3;:12;19877:21;;;::::0;::::1;;19909:12;:18:::0;19804:131::o;18764:200::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;18863:11:::1;:42:::0;;-1:-1:-1;;;;;18863:42:0;;::::1;-1:-1:-1::0;;18863:42:0;;::::1;;::::0;;;18916:24;:40;;;;;::::1;::::0;::::1;;::::0;;18764:200::o;23616:127::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;23699:8:::1;23691:4;:16;;23682:26;;;::::0;::::1;;23719:9;:16:::0;23616:127::o;27619:242::-;27690:8;27686:120;;-1:-1:-1;27721:12:0;;27686:120;;;27781:12;;27774:3;:19;;27766:28;;;;;;27820:9;;:22;;;;;;;;391:25:1;;;-1:-1:-1;;;;;27820:9:0;;;;:17;;364:18:1;;27820:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27619:242;:::o;18972:193::-;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;19078:19:::1;:30:::0;;-1:-1:-1;;19078:30:0::1;;::::0;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;19119:14:::1;:38:::0;;-1:-1:-1;;19119:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18972:193::o;32104:482::-;32259:8;:15;32240:8;:15;:34;:72;;;;;32297:8;:15;32278:8;:15;:34;32240:72;32232:106;;;;-1:-1:-1;;;32232:106:0;;17315:2:1;32232:106:0;;;17297:21:1;17354:2;17334:18;;;17327:30;17393:23;17373:18;;;17366:51;17434:18;;32232:106:0;17113:345:1;32232:106:0;32354:7;32349:230;32371:8;:15;32367:1;:19;;;32349:230;;;32467:8;32476:1;32467:11;;;;;;;;;;:::i;:::-;;;;;;;32452:8;32461:1;32452:11;;;;;;;;;;:::i;:::-;;;;;;;32442:7;;:21;;;;:::i;:::-;32441:37;;;;:::i;:::-;32426:10;14900:7;14918:16;;;:7;:16;;;;;;32416:62;;32408:71;;;;;;32494:73;32504:10;32516:8;32525:1;32516:11;;;;;;;;;;:::i;:::-;;;;;;;32555:8;32564:1;32555:11;;;;;;;;;;:::i;:::-;;;;;;;32540:8;32549:1;32540:11;;;;;;;;;;:::i;:::-;;;;;;;32530:7;;:21;;;;:::i;:::-;32529:37;;;;:::i;32494:73::-;-1:-1:-1;32388:3:0;;;;:::i;:::-;;;;32349:230;;20697:540;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;20766:20:::1;20799:9;20766:43;;20820:16;20850:10;-1:-1:-1::0;;;;;20850:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20839:40:0::1;;20888:4;20895:10;-1:-1:-1::0;;;;;20895:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20839:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;12966:15:1;;;20839:74:0::1;::::0;::::1;12948:34:1::0;13018:15;;12998:18;;;12991:43;12860:18;;20839:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20820:93:::0;-1:-1:-1;;;;;;20928:22:0;::::1;20924:200;;20987:10;-1:-1:-1::0;;;;;20987:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20976:43:0::1;;21028:4;21035:10;-1:-1:-1::0;;;;;21035:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20976:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;12966:15:1;;;20976:77:0::1;::::0;::::1;12948:34:1::0;13018:15;;12998:18;;;12991:43;12860:18;;20976:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20967:6;:86:::0;;-1:-1:-1;;20967:86:0::1;-1:-1:-1::0;;;;;20967:86:0;;;::::1;::::0;;;::::1;::::0;;20924:200:::1;;;21095:6;:17:::0;;-1:-1:-1;;21095:17:0::1;-1:-1:-1::0;;;;;21095:17:0;::::1;;::::0;;20924:200:::1;21134:9;:22:::0;;-1:-1:-1;;21134:22:0::1;-1:-1:-1::0;;;;;21134:22:0;::::1;::::0;;::::1;::::0;;;21167:62:::1;::::0;21184:4:::1;::::0;-1:-1:-1;;21167:8:0::1;:62::i;17959:459::-:0;10709:6;;-1:-1:-1;;;;;10709:6:0;10719:10;10709:20;10701:65;;;;-1:-1:-1;;;10701:65:0;;13247:2:1;10701:65:0;;;13229:21:1;;;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13377:18;;10701:65:0;13045:356:1;10701:65:0;9098:4:::1;18084:6;:21;;;;:65;;;;;9148:4;18126:7;:23;;;;18084:65;:117;;;;;9202:4;18170:11;:31;;;;18084:117;:163;;;;;9252:4;18222:9;:25;;;;18084:163;18076:172;;;::::0;::::1;;18259:9;:25:::0;;::::1;::::0;;::::1;18295:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;18379:31:::0;;18333:35;;;::::1;::::0;;;::::1;18379:31:::0;;;;;;;;;;::::1;;::::0;;;::::1;::::0;;17959:459::o;20051:118::-;20130:9;;:31;;;;;;;;20103:7;;-1:-1:-1;;;;;20130:9:0;;:29;;:31;;;;;;;;;;;;;;:9;:31;;;;;;;;;;;;;;16312:125;16397:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;16397:32:0;;;160:74:1;16373:4:0;;16397:9;;;;;:23;;133:18:1;;16397:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24231:1211::-;24310:4;-1:-1:-1;;;;;24335:18:0;;24327:68;;;;-1:-1:-1;;;24327:68:0;;24369:2:1;24327:68:0;;;24351:21:1;24408:2;24388:18;;;24381:30;24447:34;24427:18;;;24420:62;24518:7;24498:18;;;24491:35;24543:19;;24327:68:0;24167:401:1;24327:68:0;-1:-1:-1;;;;;24414:16:0;;24406:64;;;;-1:-1:-1;;;24406:64:0;;24775:2:1;24406:64:0;;;24757:21:1;24814:2;24794:18;;;24787:30;24853:34;24833:18;;;24826:62;24924:5;24904:18;;;24897:33;24947:19;;24406:64:0;24573:399:1;24406:64:0;24498:1;24489:6;:10;24481:64;;;;-1:-1:-1;;;24481:64:0;;25179:2:1;24481:64:0;;;25161:21:1;25218:2;25198:18;;;25191:30;25257:34;25237:18;;;25230:62;25328:11;25308:18;;;25301:39;25357:19;;24481:64:0;24977:405:1;24481:64:0;24559:20;24570:4;24576:2;24559:10;:20::i;:::-;24556:665;;;24600:14;;;;;;;24596:89;;24635:34;;-1:-1:-1;;;24635:34:0;;25589:2:1;24635:34:0;;;25571:21:1;25628:2;25608:18;;;25601:30;25667:26;25647:18;;;25640:54;25711:18;;24635:34:0;25387:348:1;24596:89:0;-1:-1:-1;;;;;24702:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;24719:11:0;;;;;;:7;:11;;;;;;;;24702:28;24699:248;;;-1:-1:-1;;;;;24755:27:0;;;;;;:21;:27;;;;;;;;24754:28;:58;;;;-1:-1:-1;;;;;;24787:25:0;;;;;;:21;:25;;;;;;;;24786:26;24754:58;24750:182;;;24855:12;;24845:6;:22;;24837:75;;;;-1:-1:-1;;;24837:75:0;;25942:2:1;24837:75:0;;;25924:21:1;25981:2;25961:18;;;25954:30;26020:34;26000:18;;;25993:62;26091:10;26071:18;;;26064:38;26119:19;;24837:75:0;25740:404:1;24837:75:0;24978:9;;-1:-1:-1;;;;;24964:24:0;;;24978:9;;24964:24;;;;:40;;-1:-1:-1;;;;;;24993:11:0;;;;;;:7;:11;;;;;;;;24992:12;24964:40;24961:249;;;-1:-1:-1;;;;;25030:25:0;;;;;;:21;:25;;;;;;;;25025:170;;25114:14;;25104:6;25088:13;25098:2;-1:-1:-1;;;;;14918:16:0;14900:7;14918:16;;;:7;:16;;;;;;;14834:103;25088:13;:22;;;;:::i;:::-;:40;;25080:95;;;;-1:-1:-1;;;25080:95:0;;26484:2:1;25080:95:0;;;26466:21:1;26523:2;26503:18;;;26496:30;26562:34;26542:18;;;26535:62;26633:12;26613:18;;;26606:40;26663:19;;25080:95:0;26282:406:1;25080:95:0;-1:-1:-1;;;;;25276:25:0;;25233:12;25276:25;;;:19;:25;;;;;;25248:4;;25276:25;;;:52;;-1:-1:-1;;;;;;25305:23:0;;;;;;:19;:23;;;;;;;;25276:52;25273:98;;;-1:-1:-1;25354:5:0;25273:98;25390:44;25408:4;25414:2;25418:6;25426:7;25390:17;:44::i;:::-;25383:51;24231:1211;-1:-1:-1;;;;;24231:1211:0:o;15308:341::-;-1:-1:-1;;;;;15402:20:0;;15394:69;;;;-1:-1:-1;;;15394:69:0;;26895:2:1;15394:69:0;;;26877:21:1;26934:2;26914:18;;;26907:30;26973:34;26953:18;;;26946:62;27044:6;27024:18;;;27017:34;27068:19;;15394:69:0;26693:400:1;15394:69:0;-1:-1:-1;;;;;15482:21:0;;15474:68;;;;-1:-1:-1;;;15474:68:0;;27300:2:1;15474:68:0;;;27282:21:1;27339:2;27319:18;;;27312:30;27378:34;27358:18;;;27351:62;27449:4;27429:18;;;27422:32;27471:19;;15474:68:0;27098:398:1;15474:68:0;-1:-1:-1;;;;;15555:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;15608:33;;391:25:1;;;15608:33:0;;364:18:1;15608:33:0;;;;;;;15308:341;;;:::o;23866:357::-;23934:4;23966:6;;-1:-1:-1;;;;;23958:14:0;;;23966:6;;23958:14;;;;:43;;-1:-1:-1;23995:6:0;;-1:-1:-1;;;;;23989:12:0;;;23995:6;;23989:12;;23958:43;:79;;;;-1:-1:-1;24031:6:0;;-1:-1:-1;;;;;24031:6:0;24018:9;:19;;23958:79;:118;;;;-1:-1:-1;;;;;;24055:21:0;;;;;;:17;:21;;;;;;;;24054:22;23958:118;:159;;;;-1:-1:-1;;;;;;24094:23:0;;;;;;:17;:23;;;;;;;;24093:24;23958:159;:186;;;;-1:-1:-1;;;;;;24134:10:0;;9407:42;24134:10;;23958:186;:219;;;;-1:-1:-1;;;;;;24161:16:0;;;;23958:219;:257;;;;-1:-1:-1;;;;;;;;24194:21:0;24210:4;24194:21;;;23866:357::o;25450:1734::-;25573:16;;25551:4;;25573:16;;;;;25568:221;;25606:28;25625:4;25631:2;25606:18;:28::i;:::-;25654:16;;;;;;;25653:17;:41;;;;;25674:20;25685:4;25691:2;25674:10;:20::i;:::-;25649:129;;;25715:47;;-1:-1:-1;;;25715:47:0;;27703:2:1;25715:47:0;;;27685:21:1;27742:2;27722:18;;;27715:30;27781:34;27761:18;;;27754:62;27852:7;27832:18;;;27825:35;27877:19;;25715:47:0;27501:401:1;25649:129:0;25804:20;25815:4;25821:2;25804:10;:20::i;:::-;25801:313;;;25872:9;;:37;;;;;-1:-1:-1;;;;;28188:15:1;;;25872:37:0;;;28170:34:1;28240:15;;;28220:18;;;28213:43;28272:18;;;28265:34;;;25841:12:0;;25872:9;;;;;:19;;28082:18:1;;25872:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25872:37:0;;;;;;;;-1:-1:-1;;25872:37:0;;;;;;;;;;;;:::i;:::-;;;25868:163;;26007:8;;;25868:163;25960:5;-1:-1:-1;26051:7:0;26047:56;;26079:8;;;26047:56;25826:288;25801:313;26130:6;;;;26126:134;;;26160:32;26175:4;26181:2;26185:6;26160:14;:32::i;:::-;26153:39;;;;26126:134;-1:-1:-1;;;;;26225:13:0;;;;;;:7;:13;;;;;:23;;26242:6;;26225:13;:23;;26242:6;;26225:23;:::i;:::-;;;;-1:-1:-1;;;;;;;26276:11:0;;;;;;:7;:11;;;;;;;;26272:606;;;26309:6;;;;26308:7;:47;;;;-1:-1:-1;26336:19:0;;;;;;;26308:47;26304:557;;;26425:15;26405:17;;26394:8;;:28;;;;:::i;:::-;:46;26390:456;;;26514:4;26465:28;14918:16;;;:7;:16;;;;;;26571:13;;26547:37;;26543:284;;26640:10;;26616:20;:34;26613:77;;-1:-1:-1;26677:10:0;;26613:77;26716:34;26729:20;26716:12;:34::i;:::-;26788:15;26777:8;:26;26543:284;26442:404;26390:456;26916:6;26935:84;;;;26980:27;26990:4;26996:2;27000:6;26980:9;:27::i;:::-;26963:44;;26935:84;-1:-1:-1;;;;;27031:11:0;;;;;;:7;:11;;;;;:29;;27046:14;;27031:11;:29;;27046:14;;27031:29;:::i;:::-;;;;-1:-1:-1;27073:29:0;;-1:-1:-1;27093:4:0;27099:2;27073:19;:29::i;:::-;27135:2;-1:-1:-1;;;;;27120:34:0;27129:4;-1:-1:-1;;;;;27120:34:0;;27139:14;27120:34;;;;391:25:1;;379:2;364:18;;245:177;27120:34:0;;;;;;;;27172:4;27165:11;;;25450:1734;;;;;;;:::o;31033:682::-;31115:16;;;;;;;31114:17;31106:65;;;;-1:-1:-1;;;31106:65:0;;28512:2:1;31106:65:0;;;28494:21:1;28551:2;28531:18;;;28524:30;28590:34;28570:18;;;28563:62;28661:5;28641:18;;;28634:33;28684:19;;31106:65:0;28310:399:1;31106:65:0;31187:20;31198:4;31204:2;31187:10;:20::i;:::-;31186:21;:37;;;;-1:-1:-1;31217:6:0;;-1:-1:-1;;;;;31211:12:0;;;31217:6;;31211:12;31186:37;31182:526;;;-1:-1:-1;;;;;31240:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;31240:30:0;31266:4;31240:30;;;31285:16;:23;;;;;;;;;;31334:9;;;;31323:108;;31379:9;:36;;;;31409:4;31379:36;;;;;31323:108;31456:9;;-1:-1:-1;;;;;31456:9:0;31445:107;;31502:9;:34;;-1:-1:-1;;31502:34:0;31530:4;31502:34;;;31445:107;31570:9;;;;;;;;;-1:-1:-1;;;;;31570:9:0;-1:-1:-1;;;;;31570:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31618:19:0;:26;;-1:-1:-1;;31618:26:0;;;;;31664:32;;-1:-1:-1;3308:41:1;;31664:32:0;;3296:2:1;3281:18;31664:32:0;;;;;;;31033:682;;:::o;27869:228::-;-1:-1:-1;;;;;27970:13:0;;27953:4;27970:13;;;:7;:13;;;;;:23;;27987:6;;27970:13;27953:4;;27970:23;;27987:6;;27970:23;:::i;:::-;;;;-1:-1:-1;;;;;;;28004:11:0;;;;;;:7;:11;;;;;:21;;28019:6;;28004:11;:21;;28019:6;;28004:21;:::i;:::-;;;;;;;;28056:2;-1:-1:-1;;;;;28041:26:0;28050:4;-1:-1:-1;;;;;28041:26:0;;28060:6;28041:26;;;;391:25:1;;379:2;364:18;;245:177;28041:26:0;;;;;;;;-1:-1:-1;28085:4:0;27869:228;;;;;:::o;28958:1935::-;10603:6;:13;;-1:-1:-1;;10603:13:0;10612:4;10603:13;;;29039:30:::1;::::0;;::::1;::::0;::::1;::::0;;29062:7:::1;29039:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;29080:56:::1;;29118:7;;;29080:56;29179:4;29159:26;::::0;;;:11:::1;:26;::::0;;;;;;;29194:9:::1;::::0;-1:-1:-1;;;;;29194:9:0::1;29159:46:::0;;;;;;;;-1:-1:-1;;29159:67:0::1;29156:165;;29263:4;29243:26;::::0;;;:11:::1;:26;::::0;;;;;;;29278:9:::1;::::0;-1:-1:-1;;;;;29278:9:0::1;29243:46:::0;;;;;;;-1:-1:-1;;29243:66:0;;29156:165:::1;29333:17;29416:1;29399:6;:12;;;29354:58;;29378:6;:16;;;29355:39;;:20;:39;;;;:::i;:::-;29354:58;;;;:::i;:::-;29353:64;;;;:::i;:::-;29333:84:::0;-1:-1:-1;29428:15:0::1;29446:32;29333:84:::0;29446:20;:32:::1;:::i;:::-;29515:16;::::0;;29529:1:::1;29515:16:::0;;;;;::::1;::::0;;29428:50;;-1:-1:-1;29491:21:0::1;::::0;29515:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;29515:16:0::1;29491:40;;29560:4;29542;29547:1;29542:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29542:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;29586:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;29542:7;;29586:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29576:4;29581:1;29576:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29576:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;29615:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;29690:7;;29615:9:::1;::::0;29728:4;;29755::::1;::::0;29775:15:::1;::::0;29615:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;29835:21:0::1;::::0;-1:-1:-1;29814:18:0::1;::::0;-1:-1:-1;29921:7:0;;-1:-1:-1;29895:22:0::1;29908:9:::0;29835:21;29895:22:::1;:::i;:::-;29894:34;;;;:::i;:::-;29867:61:::0;-1:-1:-1;29945:13:0;;29941:328:::1;;29975:9;::::0;:222:::1;::::0;;;;30052:4:::1;29975:222;::::0;::::1;30109:34:1::0;30159:18;;;30152:34;;;29975:9:0::1;30202:18:1::0;;;30195:34;;;30245:18;;;30238:34;9407:42:0::1;30288:19:1::0;;;30281:44;30167:15:0::1;30341:19:1::0;;;30334:35;-1:-1:-1;;;;;29975:9:0;;::::1;::::0;:25:::1;::::0;30008:16;;30020:19:1;;29975:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;30217:40:0::1;::::0;;16061:25:1;;;16117:2;16102:18;;16095:34;;;30217:40:0::1;::::0;-1:-1:-1;16034:18:1;30217:40:0::1;;;;;;;29941:328;30281:30;30295:16:::0;30281:30;::::1;:::i;:::-;;;30338:6;:16;;;30322:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;30422:12:::1;::::0;::::1;::::0;30404:14;;30365:22:::1;::::0;-1:-1:-1;30390:44:0;;::::1;::::0;30391:27:::1;::::0;::::1;:10:::0;:27:::1;:::i;:::-;30390:44;;;;:::i;:::-;30365:69;;30445:19;30504:6;:12;;;30467:49;;30481:6;:19;;;30468:32;;:10;:32;;;;:::i;:::-;30467:49;;;;:::i;:::-;30445:71:::0;-1:-1:-1;30527:24:0::1;30568:28;30445:71:::0;30568:14;:28:::1;:::i;:::-;30554:43;::::0;:10;:43:::1;:::i;:::-;30527:70;;30614:9;;;;;;;;;-1:-1:-1::0;;;;;30614:9:0::1;-1:-1:-1::0;;;;;30614:14:0::1;;30636;30614:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;30610:55:::0;30680:19:::1;::::0;::::1;::::0;:23:::1;;::::0;30677:100:::1;;30719:24:::0;;:46:::1;::::0;-1:-1:-1;;;;;30719:24:0;;::::1;::::0;:46;::::1;;;::::0;30753:11;;30719:24:::1;:46:::0;:24;:46;30753:11;30719:24;:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30677:100;30790:16;::::0;::::1;::::0;:20:::1;;::::0;30787:99:::1;;30826:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;30826:21:0;;::::1;::::0;:48;::::1;;;::::0;30857:16;;30826:21:::1;:48:::0;:21;:48;30857:16;30826:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30787:99;29028:1865;;;;;;;;;10627:1;-1:-1:-1::0;10639:6:0;:14;;-1:-1:-1;;10639:14:0;;;28958:1935::o;28105:845::-;-1:-1:-1;;;;;28237:13:0;;28184:7;28237:13;;;:7;:13;;;;;;28184:7;;28237:13;;28233:424;;;-1:-1:-1;28280:9:0;:16;;;28233:424;;;-1:-1:-1;;;;;28318:11:0;;;;;;:7;:11;;;;;;;;28314:343;;;28350:9;;:24;;;;;-1:-1:-1;;;;;178:55:1;;;28350:24:0;;;160:74:1;28350:9:0;;;;;;;;:18;;133::1;;28350:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;;;;28404:15;28392:9;;28378:11;;:23;;;;:::i;:::-;:41;28350:69;:89;;;;-1:-1:-1;28423:16:0;;;;28350:89;28346:233;;;-1:-1:-1;28473:9:0;:19;;;;;;28314:343;;28346:233;-1:-1:-1;28546:9:0;:17;;;;;;28314:343;;;-1:-1:-1;28624:9:0;:21;;;;;;28314:343;28673:15;28669:61;;28712:6;28705:13;;;;;28669:61;28742:17;9299:5;28762:19;28771:10;28762:6;:19;:::i;:::-;:38;;;;:::i;:::-;28829:4;28813:22;;;;:7;:22;;;;;:35;;28742:58;;-1:-1:-1;28742:58:0;;28813:22;;;:35;;28742:58;;28813:35;:::i;:::-;;;;-1:-1:-1;;28864:40:0;;391:25:1;;;28887:4:0;;-1:-1:-1;;;;;28864:40:0;;;;;379:2:1;364:18;28864:40:0;;;;;;;28924:18;28933:9;28924:6;:18;:::i;:::-;28917:25;28105:845;-1:-1:-1;;;;;;28105:845:0:o;27192:419::-;-1:-1:-1;;;;;27272:30:0;;;;;;:24;:30;;;;;;;;27267:115;;27323:9;;-1:-1:-1;;;;;27345:13:0;;;27323:9;27345:13;;;27323:9;27345:13;;;;;;;;27323:36;;;;;;;;21030:74:1;;;;21120:18;;;21113:34;27323:9:0;;;:15;;21003:18:1;;27323:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27319:52;;-1:-1:-1;;;;;27397:28:0;;;;;;:24;:28;;;;;;;;27392:109;;27446:9;;-1:-1:-1;;;;;27466:11:0;;;27446:9;27466:11;;;27446:9;27466:11;;;;;;;;27446:32;;;;;;;;21030:74:1;;;;21120:18;;;21113:34;27446:9:0;;;:15;;21003:18:1;;27446:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27442:48;;27515:14;;;;27511:93;;;27550:9;;27568:12;;27550:31;;;;;-1:-1:-1;;;;;27550:9:0;;;;:17;;:31;;;;391:25:1;;;379:2;364:18;;245:177;27550:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27546:47;;22331:349;;:::o;876:258:1:-;948:1;958:113;972:6;969:1;966:13;958:113;;;1048:11;;;1042:18;1029:11;;;1022:39;994:2;987:10;958:113;;;1089:6;1086:1;1083:13;1080:48;;;-1:-1:-1;;1124:1:1;1106:16;;1099:27;876:258::o;1139:317::-;1181:3;1219:5;1213:12;1246:6;1241:3;1234:19;1262:63;1318:6;1311:4;1306:3;1302:14;1295:4;1288:5;1284:16;1262:63;:::i;:::-;1370:2;1358:15;-1:-1:-1;;1354:88:1;1345:98;;;;1445:4;1341:109;;1139:317;-1:-1:-1;;1139:317:1:o;1461:220::-;1610:2;1599:9;1592:21;1573:4;1630:45;1671:2;1660:9;1656:18;1648:6;1630:45;:::i;1686:159::-;1753:20;;1813:6;1802:18;;1792:29;;1782:57;;1835:1;1832;1825:12;1782:57;1686:159;;;:::o;1850:401::-;1932:6;1940;1948;1956;2009:3;1997:9;1988:7;1984:23;1980:33;1977:53;;;2026:1;2023;2016:12;1977:53;2049:28;2067:9;2049:28;:::i;:::-;2039:38;;2096:37;2129:2;2118:9;2114:18;2096:37;:::i;:::-;2086:47;;2152:37;2185:2;2174:9;2170:18;2152:37;:::i;:::-;2142:47;;2208:37;2241:2;2230:9;2226:18;2208:37;:::i;:::-;2198:47;;1850:401;;;;;;;:::o;2504:180::-;2563:6;2616:2;2604:9;2595:7;2591:23;2587:32;2584:52;;;2632:1;2629;2622:12;2584:52;-1:-1:-1;2655:23:1;;2504:180;-1:-1:-1;2504:180:1:o;2689:154::-;-1:-1:-1;;;;;2768:5:1;2764:54;2757:5;2754:65;2744:93;;2833:1;2830;2823:12;2848:315;2916:6;2924;2977:2;2965:9;2956:7;2952:23;2948:32;2945:52;;;2993:1;2990;2983:12;2945:52;3032:9;3019:23;3051:31;3076:5;3051:31;:::i;:::-;3101:5;3153:2;3138:18;;;;3125:32;;-1:-1:-1;;;2848:315:1:o;3360:316::-;3437:6;3445;3453;3506:2;3494:9;3485:7;3481:23;3477:32;3474:52;;;3522:1;3519;3512:12;3474:52;-1:-1:-1;;3545:23:1;;;3615:2;3600:18;;3587:32;;-1:-1:-1;3666:2:1;3651:18;;;3638:32;;3360:316;-1:-1:-1;3360:316:1:o;3681:118::-;3767:5;3760:13;3753:21;3746:5;3743:32;3733:60;;3789:1;3786;3779:12;3804:241;3860:6;3913:2;3901:9;3892:7;3888:23;3884:32;3881:52;;;3929:1;3926;3919:12;3881:52;3968:9;3955:23;3987:28;4009:5;3987:28;:::i;4050:388::-;4118:6;4126;4179:2;4167:9;4158:7;4154:23;4150:32;4147:52;;;4195:1;4192;4185:12;4147:52;4234:9;4221:23;4253:31;4278:5;4253:31;:::i;:::-;4303:5;-1:-1:-1;4360:2:1;4345:18;;4332:32;4373:33;4332:32;4373:33;:::i;:::-;4425:7;4415:17;;;4050:388;;;;;:::o;4443:456::-;4520:6;4528;4536;4589:2;4577:9;4568:7;4564:23;4560:32;4557:52;;;4605:1;4602;4595:12;4557:52;4644:9;4631:23;4663:31;4688:5;4663:31;:::i;:::-;4713:5;-1:-1:-1;4770:2:1;4755:18;;4742:32;4783:33;4742:32;4783:33;:::i;:::-;4443:456;;4835:7;;-1:-1:-1;;;4889:2:1;4874:18;;;;4861:32;;4443:456::o;4904:248::-;4972:6;4980;5033:2;5021:9;5012:7;5008:23;5004:32;5001:52;;;5049:1;5046;5039:12;5001:52;-1:-1:-1;;5072:23:1;;;5142:2;5127:18;;;5114:32;;-1:-1:-1;4904:248:1:o;5157:184::-;5209:77;5206:1;5199:88;5306:4;5303:1;5296:15;5330:4;5327:1;5320:15;5346:334;5417:2;5411:9;5473:2;5463:13;;-1:-1:-1;;5459:86:1;5447:99;;5576:18;5561:34;;5597:22;;;5558:62;5555:88;;;5623:18;;:::i;:::-;5659:2;5652:22;5346:334;;-1:-1:-1;5346:334:1:o;5685:183::-;5745:4;5778:18;5770:6;5767:30;5764:56;;;5800:18;;:::i;:::-;-1:-1:-1;5845:1:1;5841:14;5857:4;5837:25;;5685:183::o;5873:737::-;5927:5;5980:3;5973:4;5965:6;5961:17;5957:27;5947:55;;5998:1;5995;5988:12;5947:55;6034:6;6021:20;6060:4;6084:60;6100:43;6140:2;6100:43;:::i;:::-;6084:60;:::i;:::-;6178:15;;;6264:1;6260:10;;;;6248:23;;6244:32;;;6209:12;;;;6288:15;;;6285:35;;;6316:1;6313;6306:12;6285:35;6352:2;6344:6;6340:15;6364:217;6380:6;6375:3;6372:15;6364:217;;;6460:3;6447:17;6477:31;6502:5;6477:31;:::i;:::-;6521:18;;6559:12;;;;6397;;6364:217;;;-1:-1:-1;6599:5:1;5873:737;-1:-1:-1;;;;;;5873:737:1:o;6615:662::-;6669:5;6722:3;6715:4;6707:6;6703:17;6699:27;6689:55;;6740:1;6737;6730:12;6689:55;6776:6;6763:20;6802:4;6826:60;6842:43;6882:2;6842:43;:::i;6826:60::-;6920:15;;;7006:1;7002:10;;;;6990:23;;6986:32;;;6951:12;;;;7030:15;;;7027:35;;;7058:1;7055;7048:12;7027:35;7094:2;7086:6;7082:15;7106:142;7122:6;7117:3;7114:15;7106:142;;;7188:17;;7176:30;;7226:12;;;;7139;;7106:142;;7282:595;7400:6;7408;7461:2;7449:9;7440:7;7436:23;7432:32;7429:52;;;7477:1;7474;7467:12;7429:52;7517:9;7504:23;7546:18;7587:2;7579:6;7576:14;7573:34;;;7603:1;7600;7593:12;7573:34;7626:61;7679:7;7670:6;7659:9;7655:22;7626:61;:::i;:::-;7616:71;;7740:2;7729:9;7725:18;7712:32;7696:48;;7769:2;7759:8;7756:16;7753:36;;;7785:1;7782;7775:12;7753:36;;7808:63;7863:7;7852:8;7841:9;7837:24;7808:63;:::i;:::-;7798:73;;;7282:595;;;;;:::o;7882:647::-;7956:6;7964;7972;7980;8033:3;8021:9;8012:7;8008:23;8004:33;8001:53;;;8050:1;8047;8040:12;8001:53;8089:9;8076:23;8108:28;8130:5;8108:28;:::i;:::-;8155:5;-1:-1:-1;8212:2:1;8197:18;;8184:32;8225:30;8184:32;8225:30;:::i;:::-;8274:7;-1:-1:-1;8333:2:1;8318:18;;8305:32;8346:30;8305:32;8346:30;:::i;:::-;8395:7;-1:-1:-1;8454:2:1;8439:18;;8426:32;8467:30;8426:32;8467:30;:::i;:::-;7882:647;;;;-1:-1:-1;7882:647:1;;-1:-1:-1;;7882:647:1:o;8723:247::-;8782:6;8835:2;8823:9;8814:7;8810:23;8806:32;8803:52;;;8851:1;8848;8841:12;8803:52;8890:9;8877:23;8909:31;8934:5;8909:31;:::i;8975:454::-;9070:6;9078;9086;9094;9102;9155:3;9143:9;9134:7;9130:23;9126:33;9123:53;;;9172:1;9169;9162:12;9123:53;-1:-1:-1;;9195:23:1;;;9265:2;9250:18;;9237:32;;-1:-1:-1;9316:2:1;9301:18;;9288:32;;9367:2;9352:18;;9339:32;;-1:-1:-1;9418:3:1;9403:19;9390:33;;-1:-1:-1;8975:454:1;-1:-1:-1;8975:454:1:o;9434:382::-;9499:6;9507;9560:2;9548:9;9539:7;9535:23;9531:32;9528:52;;;9576:1;9573;9566:12;9528:52;9615:9;9602:23;9634:31;9659:5;9634:31;:::i;:::-;9684:5;-1:-1:-1;9741:2:1;9726:18;;9713:32;9754:30;9713:32;9754:30;:::i;9821:711::-;10114:3;10103:9;10096:22;10077:4;10141:46;10182:3;10171:9;10167:19;10159:6;10141:46;:::i;:::-;10235:9;10227:6;10223:22;10218:2;10207:9;10203:18;10196:50;10269:33;10295:6;10287;10269:33;:::i;:::-;10255:47;;10350:9;10342:6;10338:22;10333:2;10322:9;10318:18;10311:50;10384:33;10410:6;10402;10384:33;:::i;:::-;10370:47;;10465:9;10457:6;10453:22;10448:2;10437:9;10433:18;10426:50;10493:33;10519:6;10511;10493:33;:::i;:::-;10485:41;9821:711;-1:-1:-1;;;;;;;9821:711:1:o;11474:376::-;11536:6;11544;11597:2;11585:9;11576:7;11572:23;11568:32;11565:52;;;11613:1;11610;11603:12;11565:52;11652:9;11639:23;11671:28;11693:5;11671:28;:::i;11855:821::-;12007:6;12015;12023;12076:2;12064:9;12055:7;12051:23;12047:32;12044:52;;;12092:1;12089;12082:12;12044:52;12132:9;12119:23;12161:18;12202:2;12194:6;12191:14;12188:34;;;12218:1;12215;12208:12;12188:34;12241:61;12294:7;12285:6;12274:9;12270:22;12241:61;:::i;:::-;12231:71;;12355:2;12344:9;12340:18;12327:32;12311:48;;12384:2;12374:8;12371:16;12368:36;;;12400:1;12397;12390:12;12368:36;12423:63;12478:7;12467:8;12456:9;12452:24;12423:63;:::i;:::-;12413:73;;12539:2;12528:9;12524:18;12511:32;12495:48;;12568:2;12558:8;12555:16;12552:36;;;12584:1;12581;12574:12;12552:36;;12607:63;12662:7;12651:8;12640:9;12636:24;12607:63;:::i;:::-;12597:73;;;11855:821;;;;;:::o;13406:184::-;13458:77;13455:1;13448:88;13555:4;13552:1;13545:15;13579:4;13576:1;13569:15;13595:224;13634:3;13662:6;13695:2;13692:1;13688:10;13725:2;13722:1;13718:10;13756:3;13752:2;13748:12;13743:3;13740:21;13737:47;;;13764:18;;:::i;:::-;13800:13;;13595:224;-1:-1:-1;;;;13595:224:1:o;14160:482::-;14249:1;14292:5;14249:1;14306:330;14327:7;14317:8;14314:21;14306:330;;;14446:4;-1:-1:-1;;14374:77:1;14368:4;14365:87;14362:113;;;14455:18;;:::i;:::-;14505:7;14495:8;14491:22;14488:55;;;14525:16;;;;14488:55;14604:22;;;;14564:15;;;;14306:330;;;14310:3;14160:482;;;;;:::o;14647:866::-;14696:5;14726:8;14716:80;;-1:-1:-1;14767:1:1;14781:5;;14716:80;14815:4;14805:76;;-1:-1:-1;14852:1:1;14866:5;;14805:76;14897:4;14915:1;14910:59;;;;14983:1;14978:130;;;;14890:218;;14910:59;14940:1;14931:10;;14954:5;;;14978:130;15015:3;15005:8;15002:17;14999:43;;;15022:18;;:::i;:::-;-1:-1:-1;;15078:1:1;15064:16;;15093:5;;14890:218;;15192:2;15182:8;15179:16;15173:3;15167:4;15164:13;15160:36;15154:2;15144:8;15141:16;15136:2;15130:4;15127:12;15123:35;15120:77;15117:159;;;-1:-1:-1;15229:19:1;;;15261:5;;15117:159;15308:34;15333:8;15327:4;15308:34;:::i;:::-;15438:6;-1:-1:-1;;15366:79:1;15357:7;15354:92;15351:118;;;15449:18;;:::i;:::-;15487:20;;14647:866;-1:-1:-1;;;14647:866:1:o;15518:131::-;15578:5;15607:36;15634:8;15628:4;15607:36;:::i;15654:228::-;15694:7;15820:1;-1:-1:-1;;15748:74:1;15745:1;15742:81;15737:1;15730:9;15723:17;15719:105;15716:131;;;15827:18;;:::i;:::-;-1:-1:-1;15867:9:1;;15654:228::o;16140:140::-;16198:5;16227:47;16268:4;16258:8;16254:19;16248:4;16227:47;:::i;16285:274::-;16325:1;16351;16341:189;;16386:77;16383:1;16376:88;16487:4;16484:1;16477:15;16515:4;16512:1;16505:15;16341:189;-1:-1:-1;16544:9:1;;16285:274::o;16564:125::-;16604:4;16632:1;16629;16626:8;16623:34;;;16637:18;;:::i;:::-;-1:-1:-1;16674:9:1;;16564:125::o;17463:184::-;17515:77;17512:1;17505:88;17612:4;17609:1;17602:15;17636:4;17633:1;17626:15;17652:175;17689:3;17733:4;17726:5;17722:16;17762:4;17753:7;17750:17;17747:43;;;17770:18;;:::i;:::-;17819:1;17806:15;;17652:175;-1:-1:-1;;17652:175:1:o;19122:184::-;19192:6;19245:2;19233:9;19224:7;19220:23;19216:32;19213:52;;;19261:1;19258;19251:12;19213:52;-1:-1:-1;19284:16:1;;19122:184;-1:-1:-1;19122:184:1:o;19311:556::-;19365:5;19418:3;19411:4;19403:6;19399:17;19395:27;19385:55;;19436:1;19433;19426:12;19385:55;19465:6;19459:13;19491:18;19487:2;19484:26;19481:52;;;19513:18;;:::i;:::-;19557:114;19665:4;-1:-1:-1;;19589:4:1;19585:2;19581:13;19577:86;19573:97;19557:114;:::i;:::-;19696:2;19687:7;19680:19;19742:3;19735:4;19730:2;19722:6;19718:15;19714:26;19711:35;19708:55;;;19759:1;19756;19749:12;19708:55;19772:64;19833:2;19826:4;19817:7;19813:18;19806:4;19798:6;19794:17;19772:64;:::i;19872:971::-;20009:6;20017;20025;20033;20086:3;20074:9;20065:7;20061:23;20057:33;20054:53;;;20103:1;20100;20093:12;20054:53;20136:9;20130:16;20165:18;20206:2;20198:6;20195:14;20192:34;;;20222:1;20219;20212:12;20192:34;20245:61;20298:7;20289:6;20278:9;20274:22;20245:61;:::i;:::-;20235:71;;20352:2;20341:9;20337:18;20331:25;20315:41;;20381:2;20371:8;20368:16;20365:36;;;20397:1;20394;20387:12;20365:36;20420:63;20475:7;20464:8;20453:9;20449:24;20420:63;:::i;:::-;20410:73;;20529:2;20518:9;20514:18;20508:25;20492:41;;20558:2;20548:8;20545:16;20542:36;;;20574:1;20571;20564:12;20542:36;20597:63;20652:7;20641:8;20630:9;20626:24;20597:63;:::i;:::-;20587:73;;20706:2;20695:9;20691:18;20685:25;20669:41;;20735:2;20725:8;20722:16;20719:36;;;20751:1;20748;20741:12;20719:36;;20774:63;20829:7;20818:8;20807:9;20803:24;20774:63;:::i;:::-;20764:73;;;19872:971;;;;;;;:::o;23329:251::-;23399:6;23452:2;23440:9;23431:7;23427:23;23423:32;23420:52;;;23468:1;23465;23458:12;23420:52;23500:9;23494:16;23519:31;23544:5;23519:31;:::i;23917:245::-;23984:6;24037:2;24025:9;24016:7;24012:23;24008:32;24005:52;;;24053:1;24050;24043:12;24005:52;24085:9;24079:16;24104:28;24126:5;24104:28;:::i;26149:128::-;26189:3;26220:1;26216:6;26213:1;26210:13;26207:39;;;26226:18;;:::i;:::-;-1:-1:-1;26262:9:1;;26149:128::o;28714:1026::-;28976:4;29024:3;29013:9;29009:19;29055:6;29044:9;29037:25;29081:2;29119:6;29114:2;29103:9;29099:18;29092:34;29162:3;29157:2;29146:9;29142:18;29135:31;29186:6;29221;29215:13;29252:6;29244;29237:22;29290:3;29279:9;29275:19;29268:26;;29329:2;29321:6;29317:15;29303:29;;29350:1;29360:218;29374:6;29371:1;29368:13;29360:218;;;29439:13;;-1:-1:-1;;;;;29435:62:1;29423:75;;29553:15;;;;29518:12;;;;29396:1;29389:9;29360:218;;;-1:-1:-1;;;;;;;29634:55:1;;;;29629:2;29614:18;;29607:83;-1:-1:-1;;;29721:3:1;29706:19;29699:35;29595:3;28714:1026;-1:-1:-1;;;28714:1026:1:o;30380:306::-;30468:6;30476;30484;30537:2;30525:9;30516:7;30512:23;30508:32;30505:52;;;30553:1;30550;30543:12;30505:52;30582:9;30576:16;30566:26;;30632:2;30621:9;30617:18;30611:25;30601:35;;30676:2;30665:9;30661:18;30655:25;30645:35;;30380:306;;;;;:::o;30691:217::-;30730:4;30759:6;30815:10;;;;30785;;30837:12;;;30834:38;;;30852:18;;:::i;:::-;30889:13;;30691:217;-1:-1:-1;;;30691:217:1:o
Swarm Source
ipfs://af5724edf0f50657d0e65a3be2c7f1dd48aa207f668ebb647d1b6288e6fe499b
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.