More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 142,723 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 59931201 | 14 days ago | IN | 0 AVAX | 0.00000633 | ||||
Approve | 59031874 | 33 days ago | IN | 0 AVAX | 0.00005081 | ||||
Approve | 58856162 | 36 days ago | IN | 0 AVAX | 0.00007258 | ||||
Approve | 58856162 | 36 days ago | IN | 0 AVAX | 0.00007258 | ||||
Approve | 58533010 | 43 days ago | IN | 0 AVAX | 0.00010564 | ||||
Approve | 58532829 | 43 days ago | IN | 0 AVAX | 0.00003511 | ||||
Approve | 58078180 | 52 days ago | IN | 0 AVAX | 0.00007908 | ||||
Transfer | 58077854 | 52 days ago | IN | 0 AVAX | 0.00010282 | ||||
Transfer | 58077260 | 52 days ago | IN | 0 AVAX | 0.00010282 | ||||
Transfer | 58077236 | 52 days ago | IN | 0 AVAX | 0.00010777 | ||||
Transfer | 58075989 | 52 days ago | IN | 0 AVAX | 0.00010791 | ||||
Transfer | 58075244 | 52 days ago | IN | 0 AVAX | 0.00010454 | ||||
Transfer | 58075098 | 52 days ago | IN | 0 AVAX | 0.00010551 | ||||
Transfer | 58075088 | 52 days ago | IN | 0 AVAX | 0.0001031 | ||||
Transfer | 58074517 | 52 days ago | IN | 0 AVAX | 0.0001074 | ||||
Transfer | 58074506 | 52 days ago | IN | 0 AVAX | 0.00012592 | ||||
Transfer | 57993594 | 54 days ago | IN | 0 AVAX | 0.00010982 | ||||
Approve | 57738710 | 59 days ago | IN | 0 AVAX | 0.00003627 | ||||
Approve | 57738707 | 59 days ago | IN | 0 AVAX | 0.00003629 | ||||
Approve | 57663309 | 60 days ago | IN | 0 AVAX | 0.00010597 | ||||
Approve | 57375276 | 66 days ago | IN | 0 AVAX | 0.00005086 | ||||
Approve | 57014189 | 74 days ago | IN | 0 AVAX | 0.00005806 | ||||
Approve | 57014182 | 74 days ago | IN | 0 AVAX | 0.00007635 | ||||
Approve | 57014176 | 74 days ago | IN | 0 AVAX | 0.00007635 | ||||
Approve | 57014166 | 74 days ago | IN | 0 AVAX | 0.00003627 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
53507550 | 149 days ago | 0.01442108 AVAX | ||||
53507550 | 149 days ago | 0.07210541 AVAX | ||||
53507550 | 149 days ago | 0.00455402 AVAX | ||||
53507550 | 149 days ago | 0.09108052 AVAX | ||||
52890974 | 164 days ago | 0.01530135 AVAX | ||||
52890974 | 164 days ago | 0.07650677 AVAX | ||||
52890974 | 164 days ago | 0.004832 AVAX | ||||
52890974 | 164 days ago | 0.09664014 AVAX | ||||
51801855 | 190 days ago | 0.00966551 AVAX | ||||
51801855 | 190 days ago | 0.04832755 AVAX | ||||
51801855 | 190 days ago | 0.00305226 AVAX | ||||
51801855 | 190 days ago | 0.06104533 AVAX | ||||
51801847 | 190 days ago | 0.00966551 AVAX | ||||
51801847 | 190 days ago | 0.04832755 AVAX | ||||
51801847 | 190 days ago | 0.00305226 AVAX | ||||
51801847 | 190 days ago | 0.06104533 AVAX | ||||
51801831 | 190 days ago | 0.00966551 AVAX | ||||
51801831 | 190 days ago | 0.04832755 AVAX | ||||
51801831 | 190 days ago | 0.00305226 AVAX | ||||
51801831 | 190 days ago | 0.06104533 AVAX | ||||
51801821 | 190 days ago | 0.00966551 AVAX | ||||
51801821 | 190 days ago | 0.04832755 AVAX | ||||
51801821 | 190 days ago | 0.00305226 AVAX | ||||
51801821 | 190 days ago | 0.06104533 AVAX | ||||
51499907 | 197 days ago | 0.0146028 AVAX |
Loading...
Loading
Contract Name:
Playmates
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2022-01-30 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; 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 WAVAX() external pure returns (address); function addLiquidityAVAX( address token, uint amountTokenDesired, uint amountTokenMin, uint amountAVAXMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountAVAX, uint liquidity); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); 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 swapExactTokensForAVAXSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Playmates 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) _isFeeExcluded; mapping (address => bool) private _isSniper; mapping (address => bool) private _liquidityHolders; uint256 constant private startingSupply = 2_000_000; string constant private _name = "Playmates"; string constant private _symbol = "PLAYMATES"; uint8 private _decimals = 18; uint256 private _tTotal = startingSupply * (10 ** _decimals); uint256 private snipeBlockAmt = 0; uint256 public snipersCaught = 0; bool private sameBlockActive = true; bool private sniperProtection = true; uint256 private _liqAddBlock = 0; struct Fees { uint16 buyFee; uint16 sellFee; uint16 transferFee; } struct StaticValuesStruct { uint16 maxBuyTaxes; uint16 maxSellTaxes; uint16 maxTransferTaxes; uint16 masterTaxDivisor; } struct Ratios { uint16 rewards; uint16 liquidity; uint16 marketing; uint16 treasury; uint16 total; } Fees public _taxRates = Fees({ buyFee: 0, sellFee: 1000, transferFee: 4000 }); Ratios public _ratios = Ratios({ rewards: 30, liquidity: 10, marketing: 10, treasury: 50, total: 100 }); StaticValuesStruct public staticVals = StaticValuesStruct({ maxBuyTaxes: 2000, maxSellTaxes: 2000, maxTransferTaxes: 4000, masterTaxDivisor: 10000 }); IRouter02 public dexRouter; address public lpPair; address public currentRouter; address private WAVAX; address public DEAD = 0x000000000000000000000000000000000000dEaD; address private zero = 0x0000000000000000000000000000000000000000; address payable public marketingWallet = payable(0x8C400D07C258e07681587D3DBDc3dF1CE3306DD7); address payable private rewardsPool = payable(0xA3b4C11E2625b3A39c838DA649A28B00F3c49cCE); address payable private treasuryWallet = payable(0xE63fb42e89cD67d93bcb6DC5E9388B347E3174be); uint256 private _maxTxAmount = (_tTotal * 1) / 100; uint256 private _maxWalletSize = (_tTotal * 5) / 100; bool public contractSwapEnabled = false; uint256 private swapThreshold = _tTotal / 20000; uint256 private swapAmount = _tTotal * 5 / 1000; bool inSwap; bool public tradingEnabled = false; bool public hasLiqBeenAdded = false; uint256 vBuy1 = 250; uint256 vBuy2 = 500; uint256 vBuy3 = 1500; uint256 vBuy4 = 2500; IERC20 mansion = IERC20(0xA3b4C11E2625b3A39c838DA649A28B00F3c49cCE); 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 amountAVAX, uint256 amount); event SniperCaught(address sniperAddress); constructor () { address msgSender = msg.sender; _tOwned[msgSender] = _tTotal; _owner = msgSender; currentRouter = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4; dexRouter = IRouter02(currentRouter); lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WAVAX(), address(this)); lpPairs[lpPair] = true; _approve(msg.sender, currentRouter, type(uint256).max); _approve(address(this), currentRouter, type(uint256).max); WAVAX = dexRouter.WAVAX(); _isFeeExcluded[owner()] = true; _isFeeExcluded[address(this)] = true; emit Transfer(zero, msg.sender, _tTotal); emit OwnershipTransferred(address(0), msgSender); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and renouncements. // This allows for removal of ownership privileges from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); _isFeeExcluded[_owner] = false; _isFeeExcluded[newOwner] = true; if(_tOwned[_owner] > 0) { _transfer(_owner, newOwner, _tOwned[_owner]); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner { _isFeeExcluded[_owner] = false; _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== receive() external payable {} function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external view 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 nodeApprove(address spender, uint256 amount) external 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 setStartingProtections(uint8 _block) external onlyOwner{ require (snipeBlockAmt == 0 && _block <= 5 && !hasLiqBeenAdded); snipeBlockAmt = _block; } function isSniper(address account) public view returns (bool) { return _isSniper[account]; } function removeSniper(address account) external onlyOwner() { require(_isSniper[account], "Account is not a recorded sniper."); _isSniper[account] = false; } function setProtectionSettings(bool antiSnipe, bool antiBlock) external onlyOwner() { sniperProtection = antiSnipe; sameBlockActive = antiBlock; } 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 changeRouterContingency(address router) external onlyOwner { require(!hasLiqBeenAdded); currentRouter = router; } function isFeeExcluded(address account) public view returns(bool) { return _isFeeExcluded[account]; } function enableTrading() public onlyOwner { require(!tradingEnabled, "Trading already enabled!"); require(hasLiqBeenAdded, "Liquidity must be added."); _liqAddBlock = block.number; tradingEnabled = true; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isFeeExcluded[account] = enabled; } function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner { require(buyFee <= staticVals.maxBuyTaxes && sellFee <= staticVals.maxSellTaxes && transferFee <= staticVals.maxTransferTaxes); _taxRates.buyFee = buyFee; _taxRates.sellFee = sellFee; _taxRates.transferFee = transferFee; } function setRatios(uint16 rewards, uint16 liquidity, uint16 marketing, uint16 treasury) external onlyOwner { _ratios.rewards = rewards; _ratios.liquidity = liquidity; _ratios.marketing = marketing; _ratios.treasury = treasury; _ratios.total = rewards + liquidity + marketing + treasury; } function setWallets(address payable marketing, address payable treasury, address payable rewards) external onlyOwner { marketingWallet = payable(marketing); treasuryWallet = payable(treasury); rewardsPool = payable(rewards); } function setContractSwapSettings(bool _enabled) external onlyOwner { contractSwapEnabled = _enabled; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; } function getCirculatingSupply() public view returns (uint256) { return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0)))); } function updateMansionAddress(IERC20 _mansion) external onlyOwner { require(_mansion != IERC20(address(this)), "Mansion address cannot be this address"); mansion = IERC20(_mansion); } function setNewRouter(address newRouter) external onlyOwner() { IRouter02 _newRouter = IRouter02(newRouter); address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WAVAX()); if (get_pair == address(0)) { lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WAVAX()); } 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; } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 3 days, "Cannot set a new pair this week!"); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; } } 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() external view returns (uint256) { return _maxTxAmount / (10**_decimals); } function getMaxWallet() external view returns (uint256) { return _maxWalletSize / (10**_decimals); } 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]){ require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } if(to != currentRouter && !lpPairs[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } bool takeFee = true; if(_isFeeExcluded[from] || _isFeeExcluded[to]){ takeFee = false; } return _finalizeTransfer(from, to, amount, takeFee); } function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) internal returns (bool) { if (sniperProtection){ if (isSniper(from) || isSniper(to)) { revert("Sniper rejected."); } if (!hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } else { if (_liqAddBlock > 0 && lpPairs[from] && _hasLimits(from, to) ) { if (block.number - _liqAddBlock < snipeBlockAmt) { _isSniper[to] = true; snipersCaught ++; emit SniperCaught(to); } } } } _tOwned[from] -= amount; if (inSwap) { return _basicTransfer(from, to, amount); } uint256 contractTokenBalance = _tOwned[address(this)]; if(contractTokenBalance >= swapAmount) contractTokenBalance = swapAmount; if (!inSwap && !lpPairs[from] && contractSwapEnabled && contractTokenBalance >= swapThreshold ) { contractSwap(contractTokenBalance); } uint256 amountReceived = amount; if (takeFee) { amountReceived = takeTaxes(from, to, amount); } _tOwned[to] += amountReceived; emit Transfer(from, to, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _tOwned[recipient] += amount; emit Transfer(sender, recipient, amount); return true; } function setVBuy(uint256 _vBuy1, uint256 _vBuy2, uint256 _vBuy3, uint256 _vBuy4) external onlyOwner { require(_vBuy1 < _vBuy2, "vBuy1 must be less than vBuy2"); vBuy1 = _vBuy1; require(_vBuy2 < _vBuy3, "vBuy2 must be less than vBuy3"); vBuy2 = _vBuy2; require(_vBuy3 < _vBuy4, "vBuy3 must be less than vBuy4"); vBuy3 = _vBuy3; require(_vBuy4 <= 2500, "vBuy4 must be less than 25%"); vBuy4 = _vBuy4; } function getWhaleFee(address from) public view returns (uint256) { if(mansion.balanceOf(from) >= 1 && mansion.balanceOf(from) < 20 ){return vBuy1;} if(mansion.balanceOf(from) >= 20 && mansion.balanceOf(from) < 50 ){return vBuy2;} if(mansion.balanceOf(from) >= 50 && mansion.balanceOf(from) < 100 ){return vBuy3;} if(mansion.balanceOf(from) >= 100) {return vBuy4;} else{ return 0; } } function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) { uint256 currentFee; if (from == lpPair) { currentFee = _taxRates.buyFee; } else if (to == lpPair) { currentFee = _taxRates.sellFee + getWhaleFee(from); } else { currentFee = _taxRates.transferFee; } if (currentFee == 0) { return amount; } uint256 feeAmount = amount * currentFee / staticVals.masterTaxDivisor; _tOwned[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); return amount - feeAmount; } function contractSwap(uint256 numTokensToSwap) internal swapping { if (_ratios.total == 0) { return; } if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) { _allowances[address(this)][address(dexRouter)] = type(uint256).max; } uint256 amountToLiquify = ((numTokensToSwap * _ratios.liquidity) / (_ratios.total)) / 2; uint256 amountToRewardsPool = (numTokensToSwap * _ratios.rewards) / (_ratios.total); if(amountToRewardsPool > 0) { emit Transfer(address(this), rewardsPool, amountToRewardsPool); } address[] memory path = new address[](2); path[0] = address(this); path[1] = WAVAX; dexRouter.swapExactTokensForAVAXSupportingFeeOnTransferTokens( numTokensToSwap - amountToLiquify - amountToRewardsPool, 0, path, address(this), block.timestamp ); uint256 amountAVAX = address(this).balance; uint256 amountAVAXLiquidity = ((amountAVAX * _ratios.liquidity) / (_ratios.total)) / 2; if (amountToLiquify > 0) { dexRouter.addLiquidityAVAX{value: amountAVAXLiquidity}( address(this), amountToLiquify, 0, 0, DEAD, block.timestamp ); emit AutoLiquify(amountAVAXLiquidity, amountToLiquify); } if(address(this).balance > 0){ amountAVAX = address(this).balance; treasuryWallet.transfer((amountAVAX * _ratios.treasury) / (_ratios.treasury + _ratios.marketing)); marketingWallet.transfer(address(this).balance); } } function _checkLiquidityAdd(address from, address to) private { require(!hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liqAddBlock = block.number; _liquidityHolders[from] = true; hasLiqBeenAdded = true; 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(_tOwned[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(_tOwned[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
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountAVAX","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":"_ratios","outputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"treasury","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"}],"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":[{"internalType":"address","name":"router","type":"address"}],"name":"changeRouterContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getWhaleFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isFeeExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","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":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"nodeApprove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setContractSwapSettings","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":"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":"antiBlock","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":"treasury","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"}],"name":"setStartingProtections","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"}],"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"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_vBuy1","type":"uint256"},{"internalType":"uint256","name":"_vBuy2","type":"uint256"},{"internalType":"uint256","name":"_vBuy3","type":"uint256"},{"internalType":"uint256","name":"_vBuy4","type":"uint256"}],"name":"setVBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"treasury","type":"address"},{"internalType":"address payable","name":"rewards","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTransferTaxes","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"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"},{"inputs":[{"internalType":"contract IERC20","name":"_mansion","type":"address"}],"name":"updateMansionAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260006003556008805460ff191660129081179091556200002690600a62000809565b6200003590621e848062000821565b60098190556000600a818155600b829055600c805461ffff1916610101179055600d82905560408051606080820183529381526103e8602080830191909152610fa0918301829052600e805465ffffffffffff1916650fa003e80000179055825160a081018452601e81528082018590528084019490945260328486015260646080948501819052600f80546001600160501b03191668640032000a000a001e179055835194850184526107d080865291850191909152918301526127109190920152601080546001600160401b0319166727100fa007d007d01790556015805461dead6001600160a01b031991821617909155601680548216905560178054738c400d07c258e07681587d3dbdc3df1ce3306dd79083161790556018805473a3b4c11e2625b3a39c838da649a28b00f3c49cce9083161790556019805473e63fb42e89cd67d93bcb6dc5e9388b347e3174be9216919091179055906200019e90600162000821565b620001aa919062000843565b601a5560646009546005620001c0919062000821565b620001cc919062000843565b601b55601c805460ff19169055600954620001eb90614e209062000843565b601d556103e8600954600562000202919062000821565b6200020e919062000843565b601e55601f805462ffff001916905560fa6020556101f46021556105dc6022556109c4602355602480546001600160a01b03191673a3b4c11e2625b3a39c838da649a28b00f3c49cce1790553480156200026757600080fd5b506009543360008181526001602090815260408083209490945581546001600160a01b031990811684179092556013805483167360ae616a2155ee3d9a68541ba4544862310933d4908117909155601180549093168117909255835163c45a015560e01b815293519293919263c45a01559260048082019392918290030181865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000866565b6001600160a01b031663c9c65396601160009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a9919062000866565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620003f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041c919062000866565b601280546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff191660011790556013546200046891339116600019620005c8565b601354620004849030906001600160a01b0316600019620005c8565b601160009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fe919062000866565b601480546001600160a01b0319166001600160a01b039283161790556000805482168152600560209081526040808320805460ff1990811660019081179092553085529382902080549094161790925560165460095483519081529251339491909116927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a36040516001600160a01b038216906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000891565b6001600160a01b038316620006305760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620006935760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000627565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200074b5781600019048211156200072f576200072f620006f4565b808516156200073d57918102915b93841c93908002906200070f565b509250929050565b600082620007645750600162000803565b81620007735750600062000803565b81600181146200078c57600281146200079757620007b7565b600191505062000803565b60ff841115620007ab57620007ab620006f4565b50506001821b62000803565b5060208310610133831016604e8410600b8410161715620007dc575081810a62000803565b620007e883836200070a565b8060001904821115620007ff57620007ff620006f4565b0290505b92915050565b60006200081a60ff84168362000753565b9392505050565b60008160001904831182151516156200083e576200083e620006f4565b500290565b6000826200086157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200087957600080fd5b81516001600160a01b03811681146200081a57600080fd5b6139d880620008a16000396000f3fe6080604052600436106103035760003560e01c8063590ffdce116101905780638da5cb5b116100dc578063dd62ed3e11610095578063e8a0e3f91161006f578063e8a0e3f914610a24578063eafb5a3c14610a44578063fb78680d14610a64578063fdb78c0e14610a8457600080fd5b8063dd62ed3e146109c8578063e630c2081461046e578063e79d416014610a0e57600080fd5b80638da5cb5b1461085c57806395d89b41146108a457806396c05089146108d6578063a9059cbb146108f6578063bca238aa14610916578063cf8477061461094f57600080fd5b806375cb1bd11161014957806380c581d11161012357806380c581d11461083c578063893d20e81461085c5780638a63bd9b1461087a5780638a8c523c1461088f57600080fd5b806375cb1bd1146107dc57806375f0a874146107fc578063780e11541461081c57600080fd5b8063590ffdce1461071c5780635e35bfb71461073c5780636ebd00781461075c57806370a0823114610771578063715018a6146107a757806371bce92d146107bc57600080fd5b806323b872dd1161024f57806333251a0b116102085780634129ecee116101e25780634129ecee1461069d578063452ed4f1146106bd5780634ada218b146106dd5780634fb2e45d146106fc57600080fd5b806333251a0b1461063d578063384f36b61461065d5780633f3cf56c1461067d57600080fd5b806323b872dd1461058657806326003957146105a65780632610eaca146105c65780632b112e49146105e6578063313ce567146105fb57806332cde6641461061d57600080fd5b80630758d924116102bc5780630fa604e4116102965780630fa604e4146104c7578063122fea3b146104ea57806318160ddd1461050a5780631b6afa2d1461051f57600080fd5b80630758d9241461044e578063095ea7b31461046e5780630f3a325f1461048e57600080fd5b8063020372e21461030f57806303fd2a4514610344578063044df7261461037c578063069d955f1461039e57806306fdde03146103f35780630712d1651461042e57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50601f5461032f9062010000900460ff1681565b60405190151581526020015b60405180910390f35b34801561035057600080fd5b50601554610364906001600160a01b031681565b6040516001600160a01b03909116815260200161033b565b34801561038857600080fd5b5061039c6103973660046130fe565b610a9e565b005b3480156103aa57600080fd5b50600e546103ce9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161033b565b3480156103ff57600080fd5b50604080518082019091526009815268506c61796d6174657360b81b60208201525b60405161033b9190613131565b34801561043a57600080fd5b5061039c610449366004613198565b610af4565b34801561045a57600080fd5b50601154610364906001600160a01b031681565b34801561047a57600080fd5b5061032f610489366004613204565b610bb9565b34801561049a57600080fd5b5061032f6104a9366004613230565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104d357600080fd5b506104dc610c26565b60405190815260200161033b565b3480156104f657600080fd5b50601354610364906001600160a01b031681565b34801561051657600080fd5b506009546104dc565b34801561052b57600080fd5b506010546105589061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161033b565b34801561059257600080fd5b5061032f6105a136600461324d565b610c4c565b3480156105b257600080fd5b5061039c6105c136600461328e565b610cc6565b3480156105d257600080fd5b5061039c6105e13660046133ea565b610da2565b3480156105f257600080fd5b506104dc610ec1565b34801561060757600080fd5b5060085460405160ff909116815260200161033b565b34801561062957600080fd5b5061039c61063836600461344e565b610f16565b34801561064957600080fd5b5061039c610658366004613230565b610fce565b34801561066957600080fd5b5061039c610678366004613230565b61108b565b34801561068957600080fd5b5061039c61069836600461328e565b6110ed565b3480156106a957600080fd5b5061039c6106b8366004613491565b6111d4565b3480156106c957600080fd5b50601254610364906001600160a01b031681565b3480156106e957600080fd5b50601f5461032f90610100900460ff1681565b34801561070857600080fd5b5061039c610717366004613230565b611238565b34801561072857600080fd5b5061039c6107373660046134b4565b611379565b34801561074857600080fd5b506104dc610757366004613230565b6113ce565b34801561076857600080fd5b506104dc61173e565b34801561077d57600080fd5b506104dc61078c366004613230565b6001600160a01b031660009081526001602052604090205490565b3480156107b357600080fd5b5061039c61175f565b3480156107c857600080fd5b5061039c6107d73660046134d2565b6117e2565b3480156107e857600080fd5b5061039c6107f7366004613504565b611962565b34801561080857600080fd5b50601754610364906001600160a01b031681565b34801561082857600080fd5b5061039c61083736600461354f565b6119cb565b34801561084857600080fd5b5061039c6108573660046134b4565b611a08565b34801561086857600080fd5b506000546001600160a01b0316610364565b34801561088657600080fd5b5061032f611ac8565b34801561089b57600080fd5b5061039c611b13565b3480156108b057600080fd5b50604080518082019091526009815268504c41594d4154455360b81b6020820152610421565b3480156108e257600080fd5b5061039c6108f1366004613230565b611c02565b34801561090257600080fd5b5061032f610911366004613204565b611cb6565b34801561092257600080fd5b5061032f610931366004613230565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561095b57600080fd5b50600f546109939061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161033b565b3480156109d457600080fd5b506104dc6109e336600461356a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a1a57600080fd5b506104dc600b5481565b348015610a3057600080fd5b5061039c610a3f3660046135a3565b611cc3565b348015610a5057600080fd5b5061039c610a5f366004613230565b611e1f565b348015610a7057600080fd5b5061039c610a7f3660046134d2565b612153565b348015610a9057600080fd5b50601c5461032f9060ff1681565b6000546001600160a01b03163314610ad15760405162461bcd60e51b8152600401610ac89061362b565b60405180910390fd5b600c805461ffff19166101009315159390930260ff191692909217901515179055565b6000546001600160a01b03163314610b1e5760405162461bcd60e51b8152600401610ac89061362b565b600f805461ffff86811663ffffffff199092169190911762010000868316021767ffffffff000000001916600160201b8583160267ffff000000000000191617600160301b918416919091021790558082610b798587613676565b610b839190613676565b610b8d9190613676565b600f805461ffff92909216600160401b0269ffff00000000000000001990921691909117905550505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c149086815260200190565b60405180910390a35060015b92915050565b600854600090610c3a9060ff16600a613780565b601b54610c47919061378f565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cb1576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610cab9084906137b1565b90915550505b610cbc8484846121bc565b90505b9392505050565b6000546001600160a01b03163314610cf05760405162461bcd60e51b8152600401610ac89061362b565b6103e8600954610d00919061378f565b8183600954610d0f91906137c8565b610d19919061378f565b1015610d825760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b6064820152608401610ac8565b8082600954610d9191906137c8565b610d9b919061378f565b601b555050565b8051825114610deb5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610ac8565b60005b82518160ff161015610ebc57818160ff1681518110610e0f57610e0f6137e7565b602002602001015160016000336001600160a01b03166001600160a01b03168152602001908152602001600020541015610e4857600080fd5b610ea933848360ff1681518110610e6157610e616137e7565b6020908102919091010151600854610e7d9060ff16600a613780565b858560ff1681518110610e9257610e926137e7565b6020026020010151610ea491906137c8565b6121bc565b5080610eb4816137fd565b915050610dee565b505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49546015546001600160a01b0316600090815260408120549091610f099161381d565b600954610c4791906137b1565b6000546001600160a01b03163314610f405760405162461bcd60e51b8152600401610ac89061362b565b60105461ffff90811690841611801590610f6a575060105461ffff62010000909104811690831611155b8015610f87575060105461ffff600160201b909104811690821611155b610f9057600080fd5b600e805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6000546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610ac89061362b565b6001600160a01b03811660009081526006602052604090205460ff1661106a5760405162461bcd60e51b815260206004820152602160248201527f4163636f756e74206973206e6f742061207265636f7264656420736e697065726044820152601760f91b6064820152608401610ac8565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146110b55760405162461bcd60e51b8152600401610ac89061362b565b601f5462010000900460ff16156110cb57600080fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111175760405162461bcd60e51b8152600401610ac89061362b565b6103e8600954611127919061378f565b818360095461113691906137c8565b611140919061378f565b10156111b45760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ac8565b80826009546111c391906137c8565b6111cd919061378f565b601a555050565b6000546001600160a01b031633146111fe5760405162461bcd60e51b8152600401610ac89061362b565b600a54158015611212575060058160ff1611155b80156112275750601f5462010000900460ff16155b61123057600080fd5b60ff16600a55565b6000546001600160a01b031633146112625760405162461bcd60e51b8152600401610ac89061362b565b6001600160a01b0381166112885760405162461bcd60e51b8152600401610ac890613835565b6015546001600160a01b03828116911614156112b65760405162461bcd60e51b8152600401610ac890613835565b600080546001600160a01b039081168252600560209081526040808420805460ff19908116909155858416855281852080549091166001908117909155845490931684529190529020541561132e57600080546001600160a01b0316808252600160205260409091205461132c919083906121bc565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146113a35760405162461bcd60e51b8152600401610ac89061362b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b602480546040516370a0823160e01b81526001600160a01b03848116600483015260009360019391909116916370a082319101602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114429190613892565b101580156114bc5750602480546040516370a0823160e01b81526001600160a01b0385811660048301526014939216916370a082319101602060405180830381865afa158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba9190613892565b105b156114c957505060205490565b602480546040516370a0823160e01b81526001600160a01b0385811660048301526014939216916370a082319101602060405180830381865afa158015611514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115389190613892565b101580156115b25750602480546040516370a0823160e01b81526001600160a01b0385811660048301526032939216916370a082319101602060405180830381865afa15801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b09190613892565b105b156115bf57505060215490565b602480546040516370a0823160e01b81526001600160a01b0385811660048301526032939216916370a082319101602060405180830381865afa15801561160a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162e9190613892565b101580156116a85750602480546040516370a0823160e01b81526001600160a01b0385811660048301526064939216916370a082319101602060405180830381865afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a69190613892565b105b156116b557505060225490565b602480546040516370a0823160e01b81526001600160a01b0385811660048301526064939216916370a082319101602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190613892565b1061173157505060235490565b506000919050565b919050565b6008546000906117529060ff16600a613780565b601a54610c47919061378f565b6000546001600160a01b031633146117895760405162461bcd60e51b8152600401610ac89061362b565b600080546001600160a01b0316815260056020526040808220805460ff1916905581546001600160a01b03191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461180c5760405162461bcd60e51b8152600401610ac89061362b565b82841061185b5760405162461bcd60e51b815260206004820152601d60248201527f7642757931206d757374206265206c657373207468616e2076427579320000006044820152606401610ac8565b60208490558183106118af5760405162461bcd60e51b815260206004820152601d60248201527f7642757932206d757374206265206c657373207468616e2076427579330000006044820152606401610ac8565b60218390558082106119035760405162461bcd60e51b815260206004820152601d60248201527f7642757933206d757374206265206c657373207468616e2076427579340000006044820152606401610ac8565b60228290556109c481111561195a5760405162461bcd60e51b815260206004820152601b60248201527f7642757934206d757374206265206c657373207468616e2032352500000000006044820152606401610ac8565b602355505050565b6000546001600160a01b0316331461198c5760405162461bcd60e51b8152600401610ac89061362b565b601780546001600160a01b039485166001600160a01b031991821617909155601980549385169382169390931790925560188054919093169116179055565b6000546001600160a01b031633146119f55760405162461bcd60e51b8152600401610ac89061362b565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314611a325760405162461bcd60e51b8152600401610ac89061362b565b50600060035415611a9c576203f48060035442611a4f91906137b1565b11611a9c5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610ac8565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b600080546001600160a01b03163314611af35760405162461bcd60e51b8152600401610ac89061362b565b601154611b0d9030906001600160a01b031660001961251d565b50600190565b6000546001600160a01b03163314611b3d5760405162461bcd60e51b8152600401610ac89061362b565b601f54610100900460ff1615611b955760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ac8565b601f5462010000900460ff16611bed5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ac8565b43600d55601f805461ff001916610100179055565b6000546001600160a01b03163314611c2c5760405162461bcd60e51b8152600401610ac89061362b565b6001600160a01b038116301415611c945760405162461bcd60e51b815260206004820152602660248201527f4d616e73696f6e20616464726573732063616e6e6f742062652074686973206160448201526564647265737360d01b6064820152608401610ac8565b602480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610cbf3384846121bc565b81518351148015611cd5575080518251145b611d195760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610ac8565b60005b83518160ff161015611e1957818160ff1681518110611d3d57611d3d6137e7565b6020026020010151838260ff1681518110611d5a57611d5a6137e7565b6020026020010151600954611d6f91906137c8565b611d79919061378f565b336000908152600160205260409020541015611d9457600080fd5b611e0633858360ff1681518110611dad57611dad6137e7565b6020026020010151848460ff1681518110611dca57611dca6137e7565b6020026020010151868560ff1681518110611de757611de76137e7565b6020026020010151600954611dfc91906137c8565b610ea4919061378f565b5080611e11816137fd565b915050611d1c565b50505050565b6000546001600160a01b03163314611e495760405162461bcd60e51b8152600401610ac89061362b565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb291906138ab565b6001600160a01b031663e6a4390530846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2391906138ab565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9291906138ab565b90506001600160a01b03811661210b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200491906138ab565b6001600160a01b031663c9c6539630846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612051573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207591906138ab565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156120c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e691906138ab565b601280546001600160a01b0319166001600160a01b0392909216919091179055612127565b601280546001600160a01b0319166001600160a01b0383161790555b601180546001600160a01b0319166001600160a01b038416908117909155610ebc90309060001961251d565b6000546001600160a01b0316331461217d5760405162461bcd60e51b8152600401610ac89061362b565b828460095461218c91906137c8565b612196919061378f565b601d5560095481906121a99084906137c8565b6121b3919061378f565b601e5550505050565b60006001600160a01b0384166122225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac8565b6001600160a01b0383166122845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac8565b600082116122e65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ac8565b6122f08484612641565b156124bd57601f54610100900460ff1661234c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ac8565b6001600160a01b03841660009081526002602052604090205460ff168061238b57506001600160a01b03831660009081526002602052604090205460ff165b156123f357601a548211156123f35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ac8565b6013546001600160a01b0384811691161480159061242a57506001600160a01b03831660009081526002602052604090205460ff16155b156124bd57601b5482612452856001600160a01b031660009081526001602052604090205490565b61245c919061381d565b11156124bd5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ac8565b6001600160a01b03841660009081526005602052604090205460019060ff16806124ff57506001600160a01b03841660009081526005602052604090205460ff165b15612508575060005b61251485858584612715565b95945050505050565b6001600160a01b03831661257f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac8565b6001600160a01b0382166125e05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b0384811691161480159061266e57506000546001600160a01b03838116911614155b801561268557506000546001600160a01b03163214155b80156126aa57506001600160a01b03821660009081526007602052604090205460ff16155b80156126cf57506001600160a01b03831660009081526007602052604090205460ff16155b80156126e957506015546001600160a01b03838116911614155b80156126fd57506001600160a01b03821615155b8015610cbf575050506001600160a01b031630141590565b600c54600090610100900460ff1615612908576001600160a01b03851660009081526006602052604090205460ff168061276757506001600160a01b03841660009081526006602052604090205460ff165b156127a75760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b6044820152606401610ac8565b601f5462010000900460ff1661283f576127c18585612a54565b601f5462010000900460ff161580156127df57506127df8585612641565b1561283a5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610ac8565b612908565b6000600d5411801561286957506001600160a01b03851660009081526002602052604090205460ff165b801561287a575061287a8585612641565b1561290857600a54600d5461288f90436137b1565b1015612908576001600160a01b0384166000908152600660205260408120805460ff19166001179055600b8054916128c6836138c8565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b038516600090815260016020526040812080548592906129309084906137b1565b9091555050601f5460ff16156129525761294b858585612b62565b9050612a4c565b30600090815260016020526040902054601e5481106129705750601e545b601f5460ff1615801561299c57506001600160a01b03861660009081526002602052604090205460ff16155b80156129aa5750601c5460ff165b80156129b85750601d548110155b156129c6576129c681612bd8565b8383156129db576129d8878787612fdb565b90505b6001600160a01b03861660009081526001602052604081208054839290612a0390849061381d565b92505081905550856001600160a01b0316876001600160a01b031660008051602061398383398151915283604051612a3d91815260200190565b60405180910390a36001925050505b949350505050565b601f5462010000900460ff1615612ab95760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ac8565b612ac38282612641565b158015612add57506012546001600160a01b038281169116145b15611ac45743600d556001600160a01b038216600090815260076020908152604091829020805460ff199081166001908117909255601f805462ff0000191662010000179055601c80549091168217905591519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910160405180910390a15050565b6001600160a01b038216600090815260016020526040812080548391908390612b8c90849061381d565b92505081905550826001600160a01b0316846001600160a01b031660008051602061398383398151915284604051612bc691815260200190565b60405180910390a35060019392505050565b601f805460ff19166001179055600f5461ffff600160401b90910416612bfd57612fce565b3060009081526004602090815260408083206011546001600160a01b0316845290915290205460001914612c56573060009081526004602090815260408083206011546001600160a01b03168452909152902060001990555b600f5460009060029061ffff600160401b8204811691612c7e916201000090910416856137c8565b612c88919061378f565b612c92919061378f565b600f5490915060009061ffff600160401b8204811691612cb39116856137c8565b612cbd919061378f565b90508015612cf8576018546040518281526001600160a01b039091169030906000805160206139838339815191529060200160405180910390a35b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d2d57612d2d6137e7565b6001600160a01b039283166020918202929092010152601454825191169082906001908110612d5e57612d5e6137e7565b6001600160a01b0392831660209182029290920101526011541663762b156283612d8886886137b1565b612d9291906137b1565b60008430426040518663ffffffff1660e01b8152600401612db79594939291906138e3565b600060405180830381600087803b158015612dd157600080fd5b505af1158015612de5573d6000803e3d6000fd5b5050600f544792506000915060029061ffff600160401b8204811691612e13916201000090910416856137c8565b612e1d919061378f565b612e27919061378f565b90508415612f0157601154601554604051637c8d9fb960e11b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290839060c40160606040518083038185885af1158015612e9f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec49190613954565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b4715612fc857601954600f544793506001600160a01b03909116906108fc90612f3e9061ffff600160201b8204811691600160301b900416613676565b600f5461ffff91821691612f5a91600160301b900416866137c8565b612f64919061378f565b6040518115909202916000818181858888f19350505050158015612f8c573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612fc6573d6000803e3d6000fd5b505b50505050505b50601f805460ff19169055565b60125460009081906001600160a01b03868116911614156130035750600e5461ffff16613050565b6012546001600160a01b038581169116141561304057613022856113ce565b600e54613039919062010000900461ffff1661381d565b9050613050565b50600e54600160201b900461ffff165b8061305e5782915050610cbf565b601054600090600160301b900461ffff1661307983866137c8565b613083919061378f565b306000908152600160205260408120805492935083929091906130a790849061381d565b909155505060405181815230906001600160a01b038816906000805160206139838339815191529060200160405180910390a36130e481856137b1565b9695505050505050565b8035801515811461173957600080fd5b6000806040838503121561311157600080fd5b61311a836130ee565b9150613128602084016130ee565b90509250929050565b600060208083528351808285015260005b8181101561315e57858101830151858201604001528201613142565b81811115613170576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff8116811461173957600080fd5b600080600080608085870312156131ae57600080fd5b6131b785613186565b93506131c560208601613186565b92506131d360408601613186565b91506131e160608601613186565b905092959194509250565b6001600160a01b038116811461320157600080fd5b50565b6000806040838503121561321757600080fd5b8235613222816131ec565b946020939093013593505050565b60006020828403121561324257600080fd5b8135610cbf816131ec565b60008060006060848603121561326257600080fd5b833561326d816131ec565b9250602084013561327d816131ec565b929592945050506040919091013590565b600080604083850312156132a157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132ef576132ef6132b0565b604052919050565b600067ffffffffffffffff821115613311576133116132b0565b5060051b60200190565b600082601f83011261332c57600080fd5b8135602061334161333c836132f7565b6132c6565b82815260059290921b8401810191818101908684111561336057600080fd5b8286015b84811015613384578035613377816131ec565b8352918301918301613364565b509695505050505050565b600082601f8301126133a057600080fd5b813560206133b061333c836132f7565b82815260059290921b840181019181810190868411156133cf57600080fd5b8286015b8481101561338457803583529183019183016133d3565b600080604083850312156133fd57600080fd5b823567ffffffffffffffff8082111561341557600080fd5b6134218683870161331b565b9350602085013591508082111561343757600080fd5b506134448582860161338f565b9150509250929050565b60008060006060848603121561346357600080fd5b61346c84613186565b925061347a60208501613186565b915061348860408501613186565b90509250925092565b6000602082840312156134a357600080fd5b813560ff81168114610cbf57600080fd5b600080604083850312156134c757600080fd5b823561311a816131ec565b600080600080608085870312156134e857600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561351957600080fd5b8335613524816131ec565b92506020840135613534816131ec565b91506040840135613544816131ec565b809150509250925092565b60006020828403121561356157600080fd5b610cbf826130ee565b6000806040838503121561357d57600080fd5b8235613588816131ec565b91506020830135613598816131ec565b809150509250929050565b6000806000606084860312156135b857600080fd5b833567ffffffffffffffff808211156135d057600080fd5b6135dc8783880161331b565b945060208601359150808211156135f257600080fd5b6135fe8783880161338f565b9350604086013591508082111561361457600080fd5b506136218682870161338f565b9150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561369357613693613660565b01949350505050565b600181815b808511156136d75781600019048211156136bd576136bd613660565b808516156136ca57918102915b93841c93908002906136a1565b509250929050565b6000826136ee57506001610c20565b816136fb57506000610c20565b8160018114613711576002811461371b57613737565b6001915050610c20565b60ff84111561372c5761372c613660565b50506001821b610c20565b5060208310610133831016604e8410600b841016171561375a575081810a610c20565b613764838361369c565b806000190482111561377857613778613660565b029392505050565b6000610cbf60ff8416836136df565b6000826137ac57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156137c3576137c3613660565b500390565b60008160001904831182151516156137e2576137e2613660565b500290565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81141561381457613814613660565b60010192915050565b6000821982111561383057613830613660565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000602082840312156138a457600080fd5b5051919050565b6000602082840312156138bd57600080fd5b8151610cbf816131ec565b60006000198214156138dc576138dc613660565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139335784516001600160a01b03168352938301939183019160010161390e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561396957600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d668a2a1123ddefffc47037e618cbaed0763215250af301d8f6d938de8de6eee64736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106103035760003560e01c8063590ffdce116101905780638da5cb5b116100dc578063dd62ed3e11610095578063e8a0e3f91161006f578063e8a0e3f914610a24578063eafb5a3c14610a44578063fb78680d14610a64578063fdb78c0e14610a8457600080fd5b8063dd62ed3e146109c8578063e630c2081461046e578063e79d416014610a0e57600080fd5b80638da5cb5b1461085c57806395d89b41146108a457806396c05089146108d6578063a9059cbb146108f6578063bca238aa14610916578063cf8477061461094f57600080fd5b806375cb1bd11161014957806380c581d11161012357806380c581d11461083c578063893d20e81461085c5780638a63bd9b1461087a5780638a8c523c1461088f57600080fd5b806375cb1bd1146107dc57806375f0a874146107fc578063780e11541461081c57600080fd5b8063590ffdce1461071c5780635e35bfb71461073c5780636ebd00781461075c57806370a0823114610771578063715018a6146107a757806371bce92d146107bc57600080fd5b806323b872dd1161024f57806333251a0b116102085780634129ecee116101e25780634129ecee1461069d578063452ed4f1146106bd5780634ada218b146106dd5780634fb2e45d146106fc57600080fd5b806333251a0b1461063d578063384f36b61461065d5780633f3cf56c1461067d57600080fd5b806323b872dd1461058657806326003957146105a65780632610eaca146105c65780632b112e49146105e6578063313ce567146105fb57806332cde6641461061d57600080fd5b80630758d924116102bc5780630fa604e4116102965780630fa604e4146104c7578063122fea3b146104ea57806318160ddd1461050a5780631b6afa2d1461051f57600080fd5b80630758d9241461044e578063095ea7b31461046e5780630f3a325f1461048e57600080fd5b8063020372e21461030f57806303fd2a4514610344578063044df7261461037c578063069d955f1461039e57806306fdde03146103f35780630712d1651461042e57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50601f5461032f9062010000900460ff1681565b60405190151581526020015b60405180910390f35b34801561035057600080fd5b50601554610364906001600160a01b031681565b6040516001600160a01b03909116815260200161033b565b34801561038857600080fd5b5061039c6103973660046130fe565b610a9e565b005b3480156103aa57600080fd5b50600e546103ce9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161033b565b3480156103ff57600080fd5b50604080518082019091526009815268506c61796d6174657360b81b60208201525b60405161033b9190613131565b34801561043a57600080fd5b5061039c610449366004613198565b610af4565b34801561045a57600080fd5b50601154610364906001600160a01b031681565b34801561047a57600080fd5b5061032f610489366004613204565b610bb9565b34801561049a57600080fd5b5061032f6104a9366004613230565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104d357600080fd5b506104dc610c26565b60405190815260200161033b565b3480156104f657600080fd5b50601354610364906001600160a01b031681565b34801561051657600080fd5b506009546104dc565b34801561052b57600080fd5b506010546105589061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161033b565b34801561059257600080fd5b5061032f6105a136600461324d565b610c4c565b3480156105b257600080fd5b5061039c6105c136600461328e565b610cc6565b3480156105d257600080fd5b5061039c6105e13660046133ea565b610da2565b3480156105f257600080fd5b506104dc610ec1565b34801561060757600080fd5b5060085460405160ff909116815260200161033b565b34801561062957600080fd5b5061039c61063836600461344e565b610f16565b34801561064957600080fd5b5061039c610658366004613230565b610fce565b34801561066957600080fd5b5061039c610678366004613230565b61108b565b34801561068957600080fd5b5061039c61069836600461328e565b6110ed565b3480156106a957600080fd5b5061039c6106b8366004613491565b6111d4565b3480156106c957600080fd5b50601254610364906001600160a01b031681565b3480156106e957600080fd5b50601f5461032f90610100900460ff1681565b34801561070857600080fd5b5061039c610717366004613230565b611238565b34801561072857600080fd5b5061039c6107373660046134b4565b611379565b34801561074857600080fd5b506104dc610757366004613230565b6113ce565b34801561076857600080fd5b506104dc61173e565b34801561077d57600080fd5b506104dc61078c366004613230565b6001600160a01b031660009081526001602052604090205490565b3480156107b357600080fd5b5061039c61175f565b3480156107c857600080fd5b5061039c6107d73660046134d2565b6117e2565b3480156107e857600080fd5b5061039c6107f7366004613504565b611962565b34801561080857600080fd5b50601754610364906001600160a01b031681565b34801561082857600080fd5b5061039c61083736600461354f565b6119cb565b34801561084857600080fd5b5061039c6108573660046134b4565b611a08565b34801561086857600080fd5b506000546001600160a01b0316610364565b34801561088657600080fd5b5061032f611ac8565b34801561089b57600080fd5b5061039c611b13565b3480156108b057600080fd5b50604080518082019091526009815268504c41594d4154455360b81b6020820152610421565b3480156108e257600080fd5b5061039c6108f1366004613230565b611c02565b34801561090257600080fd5b5061032f610911366004613204565b611cb6565b34801561092257600080fd5b5061032f610931366004613230565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561095b57600080fd5b50600f546109939061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161033b565b3480156109d457600080fd5b506104dc6109e336600461356a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a1a57600080fd5b506104dc600b5481565b348015610a3057600080fd5b5061039c610a3f3660046135a3565b611cc3565b348015610a5057600080fd5b5061039c610a5f366004613230565b611e1f565b348015610a7057600080fd5b5061039c610a7f3660046134d2565b612153565b348015610a9057600080fd5b50601c5461032f9060ff1681565b6000546001600160a01b03163314610ad15760405162461bcd60e51b8152600401610ac89061362b565b60405180910390fd5b600c805461ffff19166101009315159390930260ff191692909217901515179055565b6000546001600160a01b03163314610b1e5760405162461bcd60e51b8152600401610ac89061362b565b600f805461ffff86811663ffffffff199092169190911762010000868316021767ffffffff000000001916600160201b8583160267ffff000000000000191617600160301b918416919091021790558082610b798587613676565b610b839190613676565b610b8d9190613676565b600f805461ffff92909216600160401b0269ffff00000000000000001990921691909117905550505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c149086815260200190565b60405180910390a35060015b92915050565b600854600090610c3a9060ff16600a613780565b601b54610c47919061378f565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cb1576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610cab9084906137b1565b90915550505b610cbc8484846121bc565b90505b9392505050565b6000546001600160a01b03163314610cf05760405162461bcd60e51b8152600401610ac89061362b565b6103e8600954610d00919061378f565b8183600954610d0f91906137c8565b610d19919061378f565b1015610d825760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b6064820152608401610ac8565b8082600954610d9191906137c8565b610d9b919061378f565b601b555050565b8051825114610deb5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610ac8565b60005b82518160ff161015610ebc57818160ff1681518110610e0f57610e0f6137e7565b602002602001015160016000336001600160a01b03166001600160a01b03168152602001908152602001600020541015610e4857600080fd5b610ea933848360ff1681518110610e6157610e616137e7565b6020908102919091010151600854610e7d9060ff16600a613780565b858560ff1681518110610e9257610e926137e7565b6020026020010151610ea491906137c8565b6121bc565b5080610eb4816137fd565b915050610dee565b505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49546015546001600160a01b0316600090815260408120549091610f099161381d565b600954610c4791906137b1565b6000546001600160a01b03163314610f405760405162461bcd60e51b8152600401610ac89061362b565b60105461ffff90811690841611801590610f6a575060105461ffff62010000909104811690831611155b8015610f87575060105461ffff600160201b909104811690821611155b610f9057600080fd5b600e805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6000546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610ac89061362b565b6001600160a01b03811660009081526006602052604090205460ff1661106a5760405162461bcd60e51b815260206004820152602160248201527f4163636f756e74206973206e6f742061207265636f7264656420736e697065726044820152601760f91b6064820152608401610ac8565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146110b55760405162461bcd60e51b8152600401610ac89061362b565b601f5462010000900460ff16156110cb57600080fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111175760405162461bcd60e51b8152600401610ac89061362b565b6103e8600954611127919061378f565b818360095461113691906137c8565b611140919061378f565b10156111b45760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ac8565b80826009546111c391906137c8565b6111cd919061378f565b601a555050565b6000546001600160a01b031633146111fe5760405162461bcd60e51b8152600401610ac89061362b565b600a54158015611212575060058160ff1611155b80156112275750601f5462010000900460ff16155b61123057600080fd5b60ff16600a55565b6000546001600160a01b031633146112625760405162461bcd60e51b8152600401610ac89061362b565b6001600160a01b0381166112885760405162461bcd60e51b8152600401610ac890613835565b6015546001600160a01b03828116911614156112b65760405162461bcd60e51b8152600401610ac890613835565b600080546001600160a01b039081168252600560209081526040808420805460ff19908116909155858416855281852080549091166001908117909155845490931684529190529020541561132e57600080546001600160a01b0316808252600160205260409091205461132c919083906121bc565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146113a35760405162461bcd60e51b8152600401610ac89061362b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b602480546040516370a0823160e01b81526001600160a01b03848116600483015260009360019391909116916370a082319101602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114429190613892565b101580156114bc5750602480546040516370a0823160e01b81526001600160a01b0385811660048301526014939216916370a082319101602060405180830381865afa158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba9190613892565b105b156114c957505060205490565b602480546040516370a0823160e01b81526001600160a01b0385811660048301526014939216916370a082319101602060405180830381865afa158015611514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115389190613892565b101580156115b25750602480546040516370a0823160e01b81526001600160a01b0385811660048301526032939216916370a082319101602060405180830381865afa15801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b09190613892565b105b156115bf57505060215490565b602480546040516370a0823160e01b81526001600160a01b0385811660048301526032939216916370a082319101602060405180830381865afa15801561160a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162e9190613892565b101580156116a85750602480546040516370a0823160e01b81526001600160a01b0385811660048301526064939216916370a082319101602060405180830381865afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a69190613892565b105b156116b557505060225490565b602480546040516370a0823160e01b81526001600160a01b0385811660048301526064939216916370a082319101602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190613892565b1061173157505060235490565b506000919050565b919050565b6008546000906117529060ff16600a613780565b601a54610c47919061378f565b6000546001600160a01b031633146117895760405162461bcd60e51b8152600401610ac89061362b565b600080546001600160a01b0316815260056020526040808220805460ff1916905581546001600160a01b03191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461180c5760405162461bcd60e51b8152600401610ac89061362b565b82841061185b5760405162461bcd60e51b815260206004820152601d60248201527f7642757931206d757374206265206c657373207468616e2076427579320000006044820152606401610ac8565b60208490558183106118af5760405162461bcd60e51b815260206004820152601d60248201527f7642757932206d757374206265206c657373207468616e2076427579330000006044820152606401610ac8565b60218390558082106119035760405162461bcd60e51b815260206004820152601d60248201527f7642757933206d757374206265206c657373207468616e2076427579340000006044820152606401610ac8565b60228290556109c481111561195a5760405162461bcd60e51b815260206004820152601b60248201527f7642757934206d757374206265206c657373207468616e2032352500000000006044820152606401610ac8565b602355505050565b6000546001600160a01b0316331461198c5760405162461bcd60e51b8152600401610ac89061362b565b601780546001600160a01b039485166001600160a01b031991821617909155601980549385169382169390931790925560188054919093169116179055565b6000546001600160a01b031633146119f55760405162461bcd60e51b8152600401610ac89061362b565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314611a325760405162461bcd60e51b8152600401610ac89061362b565b50600060035415611a9c576203f48060035442611a4f91906137b1565b11611a9c5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610ac8565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b600080546001600160a01b03163314611af35760405162461bcd60e51b8152600401610ac89061362b565b601154611b0d9030906001600160a01b031660001961251d565b50600190565b6000546001600160a01b03163314611b3d5760405162461bcd60e51b8152600401610ac89061362b565b601f54610100900460ff1615611b955760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ac8565b601f5462010000900460ff16611bed5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ac8565b43600d55601f805461ff001916610100179055565b6000546001600160a01b03163314611c2c5760405162461bcd60e51b8152600401610ac89061362b565b6001600160a01b038116301415611c945760405162461bcd60e51b815260206004820152602660248201527f4d616e73696f6e20616464726573732063616e6e6f742062652074686973206160448201526564647265737360d01b6064820152608401610ac8565b602480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610cbf3384846121bc565b81518351148015611cd5575080518251145b611d195760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610ac8565b60005b83518160ff161015611e1957818160ff1681518110611d3d57611d3d6137e7565b6020026020010151838260ff1681518110611d5a57611d5a6137e7565b6020026020010151600954611d6f91906137c8565b611d79919061378f565b336000908152600160205260409020541015611d9457600080fd5b611e0633858360ff1681518110611dad57611dad6137e7565b6020026020010151848460ff1681518110611dca57611dca6137e7565b6020026020010151868560ff1681518110611de757611de76137e7565b6020026020010151600954611dfc91906137c8565b610ea4919061378f565b5080611e11816137fd565b915050611d1c565b50505050565b6000546001600160a01b03163314611e495760405162461bcd60e51b8152600401610ac89061362b565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb291906138ab565b6001600160a01b031663e6a4390530846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2391906138ab565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9291906138ab565b90506001600160a01b03811661210b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200491906138ab565b6001600160a01b031663c9c6539630846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612051573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207591906138ab565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156120c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e691906138ab565b601280546001600160a01b0319166001600160a01b0392909216919091179055612127565b601280546001600160a01b0319166001600160a01b0383161790555b601180546001600160a01b0319166001600160a01b038416908117909155610ebc90309060001961251d565b6000546001600160a01b0316331461217d5760405162461bcd60e51b8152600401610ac89061362b565b828460095461218c91906137c8565b612196919061378f565b601d5560095481906121a99084906137c8565b6121b3919061378f565b601e5550505050565b60006001600160a01b0384166122225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac8565b6001600160a01b0383166122845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac8565b600082116122e65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ac8565b6122f08484612641565b156124bd57601f54610100900460ff1661234c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ac8565b6001600160a01b03841660009081526002602052604090205460ff168061238b57506001600160a01b03831660009081526002602052604090205460ff165b156123f357601a548211156123f35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ac8565b6013546001600160a01b0384811691161480159061242a57506001600160a01b03831660009081526002602052604090205460ff16155b156124bd57601b5482612452856001600160a01b031660009081526001602052604090205490565b61245c919061381d565b11156124bd5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ac8565b6001600160a01b03841660009081526005602052604090205460019060ff16806124ff57506001600160a01b03841660009081526005602052604090205460ff165b15612508575060005b61251485858584612715565b95945050505050565b6001600160a01b03831661257f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac8565b6001600160a01b0382166125e05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b0384811691161480159061266e57506000546001600160a01b03838116911614155b801561268557506000546001600160a01b03163214155b80156126aa57506001600160a01b03821660009081526007602052604090205460ff16155b80156126cf57506001600160a01b03831660009081526007602052604090205460ff16155b80156126e957506015546001600160a01b03838116911614155b80156126fd57506001600160a01b03821615155b8015610cbf575050506001600160a01b031630141590565b600c54600090610100900460ff1615612908576001600160a01b03851660009081526006602052604090205460ff168061276757506001600160a01b03841660009081526006602052604090205460ff165b156127a75760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b6044820152606401610ac8565b601f5462010000900460ff1661283f576127c18585612a54565b601f5462010000900460ff161580156127df57506127df8585612641565b1561283a5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610ac8565b612908565b6000600d5411801561286957506001600160a01b03851660009081526002602052604090205460ff165b801561287a575061287a8585612641565b1561290857600a54600d5461288f90436137b1565b1015612908576001600160a01b0384166000908152600660205260408120805460ff19166001179055600b8054916128c6836138c8565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b038516600090815260016020526040812080548592906129309084906137b1565b9091555050601f5460ff16156129525761294b858585612b62565b9050612a4c565b30600090815260016020526040902054601e5481106129705750601e545b601f5460ff1615801561299c57506001600160a01b03861660009081526002602052604090205460ff16155b80156129aa5750601c5460ff165b80156129b85750601d548110155b156129c6576129c681612bd8565b8383156129db576129d8878787612fdb565b90505b6001600160a01b03861660009081526001602052604081208054839290612a0390849061381d565b92505081905550856001600160a01b0316876001600160a01b031660008051602061398383398151915283604051612a3d91815260200190565b60405180910390a36001925050505b949350505050565b601f5462010000900460ff1615612ab95760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ac8565b612ac38282612641565b158015612add57506012546001600160a01b038281169116145b15611ac45743600d556001600160a01b038216600090815260076020908152604091829020805460ff199081166001908117909255601f805462ff0000191662010000179055601c80549091168217905591519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910160405180910390a15050565b6001600160a01b038216600090815260016020526040812080548391908390612b8c90849061381d565b92505081905550826001600160a01b0316846001600160a01b031660008051602061398383398151915284604051612bc691815260200190565b60405180910390a35060019392505050565b601f805460ff19166001179055600f5461ffff600160401b90910416612bfd57612fce565b3060009081526004602090815260408083206011546001600160a01b0316845290915290205460001914612c56573060009081526004602090815260408083206011546001600160a01b03168452909152902060001990555b600f5460009060029061ffff600160401b8204811691612c7e916201000090910416856137c8565b612c88919061378f565b612c92919061378f565b600f5490915060009061ffff600160401b8204811691612cb39116856137c8565b612cbd919061378f565b90508015612cf8576018546040518281526001600160a01b039091169030906000805160206139838339815191529060200160405180910390a35b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d2d57612d2d6137e7565b6001600160a01b039283166020918202929092010152601454825191169082906001908110612d5e57612d5e6137e7565b6001600160a01b0392831660209182029290920101526011541663762b156283612d8886886137b1565b612d9291906137b1565b60008430426040518663ffffffff1660e01b8152600401612db79594939291906138e3565b600060405180830381600087803b158015612dd157600080fd5b505af1158015612de5573d6000803e3d6000fd5b5050600f544792506000915060029061ffff600160401b8204811691612e13916201000090910416856137c8565b612e1d919061378f565b612e27919061378f565b90508415612f0157601154601554604051637c8d9fb960e11b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290839060c40160606040518083038185885af1158015612e9f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec49190613954565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b4715612fc857601954600f544793506001600160a01b03909116906108fc90612f3e9061ffff600160201b8204811691600160301b900416613676565b600f5461ffff91821691612f5a91600160301b900416866137c8565b612f64919061378f565b6040518115909202916000818181858888f19350505050158015612f8c573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612fc6573d6000803e3d6000fd5b505b50505050505b50601f805460ff19169055565b60125460009081906001600160a01b03868116911614156130035750600e5461ffff16613050565b6012546001600160a01b038581169116141561304057613022856113ce565b600e54613039919062010000900461ffff1661381d565b9050613050565b50600e54600160201b900461ffff165b8061305e5782915050610cbf565b601054600090600160301b900461ffff1661307983866137c8565b613083919061378f565b306000908152600160205260408120805492935083929091906130a790849061381d565b909155505060405181815230906001600160a01b038816906000805160206139838339815191529060200160405180910390a36130e481856137b1565b9695505050505050565b8035801515811461173957600080fd5b6000806040838503121561311157600080fd5b61311a836130ee565b9150613128602084016130ee565b90509250929050565b600060208083528351808285015260005b8181101561315e57858101830151858201604001528201613142565b81811115613170576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff8116811461173957600080fd5b600080600080608085870312156131ae57600080fd5b6131b785613186565b93506131c560208601613186565b92506131d360408601613186565b91506131e160608601613186565b905092959194509250565b6001600160a01b038116811461320157600080fd5b50565b6000806040838503121561321757600080fd5b8235613222816131ec565b946020939093013593505050565b60006020828403121561324257600080fd5b8135610cbf816131ec565b60008060006060848603121561326257600080fd5b833561326d816131ec565b9250602084013561327d816131ec565b929592945050506040919091013590565b600080604083850312156132a157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132ef576132ef6132b0565b604052919050565b600067ffffffffffffffff821115613311576133116132b0565b5060051b60200190565b600082601f83011261332c57600080fd5b8135602061334161333c836132f7565b6132c6565b82815260059290921b8401810191818101908684111561336057600080fd5b8286015b84811015613384578035613377816131ec565b8352918301918301613364565b509695505050505050565b600082601f8301126133a057600080fd5b813560206133b061333c836132f7565b82815260059290921b840181019181810190868411156133cf57600080fd5b8286015b8481101561338457803583529183019183016133d3565b600080604083850312156133fd57600080fd5b823567ffffffffffffffff8082111561341557600080fd5b6134218683870161331b565b9350602085013591508082111561343757600080fd5b506134448582860161338f565b9150509250929050565b60008060006060848603121561346357600080fd5b61346c84613186565b925061347a60208501613186565b915061348860408501613186565b90509250925092565b6000602082840312156134a357600080fd5b813560ff81168114610cbf57600080fd5b600080604083850312156134c757600080fd5b823561311a816131ec565b600080600080608085870312156134e857600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561351957600080fd5b8335613524816131ec565b92506020840135613534816131ec565b91506040840135613544816131ec565b809150509250925092565b60006020828403121561356157600080fd5b610cbf826130ee565b6000806040838503121561357d57600080fd5b8235613588816131ec565b91506020830135613598816131ec565b809150509250929050565b6000806000606084860312156135b857600080fd5b833567ffffffffffffffff808211156135d057600080fd5b6135dc8783880161331b565b945060208601359150808211156135f257600080fd5b6135fe8783880161338f565b9350604086013591508082111561361457600080fd5b506136218682870161338f565b9150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561369357613693613660565b01949350505050565b600181815b808511156136d75781600019048211156136bd576136bd613660565b808516156136ca57918102915b93841c93908002906136a1565b509250929050565b6000826136ee57506001610c20565b816136fb57506000610c20565b8160018114613711576002811461371b57613737565b6001915050610c20565b60ff84111561372c5761372c613660565b50506001821b610c20565b5060208310610133831016604e8410600b841016171561375a575081810a610c20565b613764838361369c565b806000190482111561377857613778613660565b029392505050565b6000610cbf60ff8416836136df565b6000826137ac57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156137c3576137c3613660565b500390565b60008160001904831182151516156137e2576137e2613660565b500290565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81141561381457613814613660565b60010192915050565b6000821982111561383057613830613660565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000602082840312156138a457600080fd5b5051919050565b6000602082840312156138bd57600080fd5b8151610cbf816131ec565b60006000198214156138dc576138dc613660565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139335784516001600160a01b03168352938301939183019160010161390e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561396957600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d668a2a1123ddefffc47037e618cbaed0763215250af301d8f6d938de8de6eee64736f6c634300080b0033
Deployed Bytecode Sourcemap
4768:21287:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7557:35;;;;;;;;;;-1:-1:-1;7557:35:0;;;;;;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;7557:35:0;;;;;;;;6783:64;;;;;;;;;;-1:-1:-1;6783:64:0;;;;-1:-1:-1;;;;;6783:64:0;;;;;;-1:-1:-1;;;;;370:32:1;;;352:51;;340:2;325:18;6783:64:0;206:203:1;12971:169:0;;;;;;;;;;-1:-1:-1;12971:169:0;;;;;:::i;:::-;;:::i;:::-;;6155:113;;;;;;;;;;-1:-1:-1;6155:113:0;;;;;;;;;;;;;;;-1:-1:-1;;;6155:113:0;;;;;;;;;;1038:6:1;1071:15;;;1053:34;;1123:15;;;1118:2;1103:18;;1096:43;1175:15;;1155:18;;;1148:43;;;;1016:2;1001:18;6155:113:0;832:365:1;11085:80:0;;;;;;;;;;-1:-1:-1;11157:5:0;;;;;;;;;;;;-1:-1:-1;;;11157:5:0;;;;11085:80;;;;;;;:::i;14683:338::-;;;;;;;;;;-1:-1:-1;14683:338:0;;;;;:::i;:::-;;:::i;6657:26::-;;;;;;;;;;-1:-1:-1;6657:26:0;;;;-1:-1:-1;;;;;6657:26:0;;;11507:216;;;;;;;;;;-1:-1:-1;11507:216:0;;;;;:::i;:::-;;:::i;12669:106::-;;;;;;;;;;-1:-1:-1;12669:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;12749:18:0;12725:4;12749:18;;;:9;:18;;;;;;;;;12669:106;17741:114;;;;;;;;;;;;;:::i;:::-;;;3453:25:1;;;3441:2;3426:18;17741:114:0;3307:177:1;6718:28:0;;;;;;;;;;-1:-1:-1;6718:28:0;;;;-1:-1:-1;;;;;6718:28:0;;;10820:83;;;;;;;;;;-1:-1:-1;10893:7:0;;10820:83;;6454:194;;;;;;;;;;-1:-1:-1;6454:194:0;;;;;;;;;;;;;;;-1:-1:-1;;;6454:194:0;;;;;-1:-1:-1;;;6454:194:0;;;;;;;;;3722:6:1;3755:15;;;3737:34;;3807:15;;;3802:2;3787:18;;3780:43;3859:15;;;3839:18;;;3832:43;;;;3911:15;;;3906:2;3891:18;;3884:43;3699:3;3684:19;6454:194:0;3489:444:1;13308:306:0;;;;;;;;;;-1:-1:-1;13308:306:0;;;;;:::i;:::-;;:::i;17350:267::-;;;;;;;;;;-1:-1:-1;17350:267:0;;;;;:::i;:::-;;:::i;25193:371::-;;;;;;;;;;-1:-1:-1;25193:371:0;;;;;:::i;:::-;;:::i;15716:141::-;;;;;;;;;;;;;:::i;10909:80::-;;;;;;;;;;-1:-1:-1;10977:9:0;;10909:80;;10977:9;;;;7403:36:1;;7391:2;7376:18;10909:80:0;7261:184:1;14289:386:0;;;;;;;;;;-1:-1:-1;14289:386:0;;;;;:::i;:::-;;:::i;12783:180::-;;;;;;;;;;-1:-1:-1;12783:180:0;;;;;:::i;:::-;;:::i;13622:145::-;;;;;;;;;;-1:-1:-1;13622:145:0;;;;;:::i;:::-;;:::i;17073:269::-;;;;;;;;;;-1:-1:-1;17073:269:0;;;;;:::i;:::-;;:::i;12482:179::-;;;;;;;;;;-1:-1:-1;12482:179:0;;;;;:::i;:::-;;:::i;6690:21::-;;;;;;;;;;-1:-1:-1;6690:21:0;;;;-1:-1:-1;;;;;6690:21:0;;;7516:34;;;;;;;;;;-1:-1:-1;7516:34:0;;;;;;;;;;;9657:576;;;;;;;;;;-1:-1:-1;9657:576:0;;;;;:::i;:::-;;:::i;14152:129::-;;;;;;;;;;-1:-1:-1;14152:129:0;;;;;:::i;:::-;;:::i;21700:496::-;;;;;;;;;;-1:-1:-1;21700:496:0;;;;;:::i;:::-;;:::i;17625:108::-;;;;;;;;;;;;;:::i;11257:103::-;;;;;;;;;;-1:-1:-1;11257:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;11341:16:0;11323:7;11341:16;;;:7;:16;;;;;;;11257:103;10241:189;;;;;;;;;;;;;:::i;21215:477::-;;;;;;;;;;-1:-1:-1;21215:477:0;;;;;:::i;:::-;;:::i;15029:258::-;;;;;;;;;;-1:-1:-1;15029:258:0;;;;;:::i;:::-;;:::i;6928:92::-;;;;;;;;;;-1:-1:-1;6928:92:0;;;;-1:-1:-1;;;;;6928:92:0;;;15295:116;;;;;;;;;;-1:-1:-1;15295:116:0;;;;;:::i;:::-;;:::i;16643:422::-;;;;;;;;;;-1:-1:-1;16643:422:0;;;;;:::i;:::-;;:::i;11171:80::-;;;;;;;;;;-1:-1:-1;11223:7:0;9635:6;-1:-1:-1;;;;;9635:6:0;11171:80;17741:114;12301:173;;;;;;;;;;;;;:::i;13898:246::-;;;;;;;;;;;;;:::i;10995:84::-;;;;;;;;;;-1:-1:-1;11069:7:0;;;;;;;;;;;;-1:-1:-1;;;11069:7:0;;;;10995:84;;15865:216;;;;;;;;;;-1:-1:-1;15865:216:0;;;;;:::i;:::-;;:::i;13148:152::-;;;;;;;;;;-1:-1:-1;13148:152:0;;;;;:::i;:::-;;:::i;13775:115::-;;;;;;;;;;-1:-1:-1;13775:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;13859:23:0;13835:4;13859:23;;;:14;:23;;;;;;;;;13775:115;6277:157;;;;;;;;;;-1:-1:-1;6277:157:0;;;;;;;;;;;;;;;-1:-1:-1;;;6277:157:0;;;;;-1:-1:-1;;;6277:157:0;;;;;-1:-1:-1;;;6277:157:0;;;;;;;;;;10259:6:1;10292:15;;;10274:34;;10344:15;;;10339:2;10324:18;;10317:43;10396:15;;;10376:18;;;10369:43;;;;10448:15;;10443:2;10428:18;;10421:43;10501:15;;;10495:3;10480:19;;10473:44;10236:3;10221:19;6277:157:0;10000:523:1;11366:133:0;;;;;;;;;;-1:-1:-1;11366:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11468:19:0;;;11450:7;11468:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11366:133;5557:32;;;;;;;;;;;;;;;;25572:480;;;;;;;;;;-1:-1:-1;25572:480:0;;;;;:::i;:::-;;:::i;16089:546::-;;;;;;;;;;-1:-1:-1;16089:546:0;;;;;:::i;:::-;;:::i;15419:289::-;;;;;;;;;;-1:-1:-1;15419:289:0;;;;;:::i;:::-;;:::i;7342:39::-;;;;;;;;;;-1:-1:-1;7342:39:0;;;;;;;;12971:169;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;;;;;;;;;13066:16:::1;:28:::0;;-1:-1:-1;;13105:27:0;13066:28:::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;13105:27:0;;;;;;::::1;;;::::0;;12971:169::o;14683:338::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;14801:7:::1;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14837:29:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;14917:27:0;-1:-1:-1;;;14877:29:0;;::::1;;-1:-1:-1::0;;14917:27:0;;-1:-1:-1;;;14917:27:0;;::::1;::::0;;;::::1;;::::0;;;14877:29;14971:19:::1;14837:29:::0;14801:25;14971:19:::1;:::i;:::-;:31;;;;:::i;:::-;:42;;;;:::i;:::-;14955:7;:58:::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;14955:58:0::1;-1:-1:-1::0;;14955:58:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;14683:338:0:o;11507:216::-;11611:10;11582:4;11599:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11599:32:0;;;;;;;;;;:41;;;11656:37;11582:4;;11599:32;;11656:37;;;;11634:6;3453:25:1;;3441:2;3426:18;;3307:177;11656:37:0;;;;;;;;-1:-1:-1;11711:4:0;11507:216;;;;;:::o;17741:114::-;17837:9;;17788:7;;17833:13;;17837:9;;17833:2;:13;:::i;:::-;17815:14;;:32;;;;:::i;:::-;17808:39;;17741:114;:::o;13308:306::-;-1:-1:-1;;;;;13429:19:0;;13408:4;13429:19;;;:11;:19;;;;;;;;13449:10;13429:31;;;;;;;;-1:-1:-1;;13429:52:0;13425:126;;-1:-1:-1;;;;;13498:19:0;;;;;;:11;:19;;;;;;;;13518:10;13498:31;;;;;;;:41;;13533:6;;13498:19;:41;;13533:6;;13498:41;:::i;:::-;;;;-1:-1:-1;;13425:126:0;13570:36;13580:6;13588:9;13599:6;13570:9;:36::i;:::-;13563:43;;13308:306;;;;;;:::o;17350:267::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;17492:4:::1;17482:7;;:14;;;;:::i;:::-;17470:7;17459;17449;;:17;;;;:::i;:::-;17448:29;;;;:::i;:::-;:49;;17440:112;;;::::0;-1:-1:-1;;;17440:112:0;;14579:2:1;17440:112:0::1;::::0;::::1;14561:21:1::0;14618:2;14598:18;;;14591:30;14657:34;14637:18;;;14630:62;-1:-1:-1;;;14708:18:1;;;14701:48;14766:19;;17440:112:0::1;14377:414:1::0;17440:112:0::1;17602:7;17591;17581;;:17;;;;:::i;:::-;17580:29;;;;:::i;:::-;17563:14;:46:::0;-1:-1:-1;;17350:267:0:o;25193:371::-;25318:7;:14;25299:8;:15;:33;25291:67;;;;-1:-1:-1;;;25291:67:0;;14998:2:1;25291:67:0;;;14980:21:1;15037:2;15017:18;;;15010:30;-1:-1:-1;;;15056:18:1;;;15049:51;15117:18;;25291:67:0;14796:345:1;25291:67:0;25374:7;25369:188;25391:8;:15;25387:1;:19;;;25369:188;;;25459:7;25467:1;25459:10;;;;;;;;;;:::i;:::-;;;;;;;25436:7;:19;25444:10;-1:-1:-1;;;;;25436:19:0;-1:-1:-1;;;;;25436:19:0;;;;;;;;;;;;;:33;;25428:42;;;;;;25485:60;25495:10;25507:8;25516:1;25507:11;;;;;;;;;;:::i;:::-;;;;;;;;;;;25535:9;;25531:13;;25535:9;;25531:2;:13;:::i;:::-;25520:7;25528:1;25520:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;25485:9;:60::i;:::-;-1:-1:-1;25408:3:0;;;;:::i;:::-;;;;25369:188;;;;25193:371;;:::o;15716:141::-;11341:7;:16;;;;15818:4;;-1:-1:-1;;;;;15818:4:0;15769:7;11341:16;;;;;;;15769:7;;15808:39;;;:::i;:::-;15797:7;;:51;;;;:::i;14289:386::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;14406:10:::1;:22:::0;::::1;::::0;;::::1;14396:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;14460:10:0::1;:23:::0;::::1;::::0;;;::::1;::::0;::::1;14449:34:::0;;::::1;;;14396:87;:150;;;;-1:-1:-1::0;14519:10:0::1;:27:::0;::::1;-1:-1:-1::0;;;14519:27:0;;::::1;::::0;::::1;14504:42:::0;;::::1;;;14396:150;14388:159;;;::::0;::::1;;14558:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14594:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;14632:35:0::1;-1:-1:-1::0;;;14632:35:0;;;::::1;;::::0;;;::::1;::::0;;14289:386::o;12783:180::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12862:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;12854:64;;;::::0;-1:-1:-1;;;12854:64:0;;15793:2:1;12854:64:0::1;::::0;::::1;15775:21:1::0;15832:2;15812:18;;;15805:30;15871:34;15851:18;;;15844:62;-1:-1:-1;;;15922:18:1;;;15915:31;15963:19;;12854:64:0::1;15591:397:1::0;12854:64:0::1;-1:-1:-1::0;;;;;12929:18:0::1;12950:5;12929:18:::0;;;:9:::1;:18;::::0;;;;:26;;-1:-1:-1;;12929:26:0::1;::::0;;12783:180::o;13622:145::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;13710:15:::1;::::0;;;::::1;;;13709:16;13701:25;;;::::0;::::1;;13737:13;:22:::0;;-1:-1:-1;;;;;;13737:22:0::1;-1:-1:-1::0;;;;;13737:22:0;;;::::1;::::0;;;::::1;::::0;;13622:145::o;17073:269::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;17214:4:::1;17204:7;;:14;;;;:::i;:::-;17192:7;17181;17171;;:17;;;;:::i;:::-;17170:29;;;;:::i;:::-;:49;;17162:117;;;::::0;-1:-1:-1;;;17162:117:0;;16195:2:1;17162:117:0::1;::::0;::::1;16177:21:1::0;16234:2;16214:18;;;16207:30;16273:34;16253:18;;;16246:62;16344:25;16324:18;;;16317:53;16387:19;;17162:117:0::1;15993:419:1::0;17162:117:0::1;17327:7;17316;17306;;:17;;;;:::i;:::-;17305:29;;;;:::i;:::-;17290:12;:44:::0;-1:-1:-1;;17073:269:0:o;12482:179::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;12566:13:::1;::::0;:18;:33;::::1;;;;12598:1;12588:6;:11;;;;12566:33;:53;;;;-1:-1:-1::0;12604:15:0::1;::::0;;;::::1;;;12603:16;12566:53;12557:63;;;::::0;::::1;;12631:22;;:13;:22:::0;12482:179::o;9657:576::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9736:22:0;::::1;9728:96;;;;-1:-1:-1::0;;;9728:96:0::1;;;;;;;:::i;:::-;9855:4;::::0;-1:-1:-1;;;;;9843:16:0;;::::1;9855:4:::0;::::1;9843:16;;9835:90;;;;-1:-1:-1::0;;;9835:90:0::1;;;;;;;:::i;:::-;9961:5;9951:6:::0;;-1:-1:-1;;;;;9951:6:0;;::::1;9936:22:::0;;:14:::1;:22;::::0;;;;;;;:30;;-1:-1:-1;;9936:30:0;;::::1;::::0;;;9977:24;;::::1;::::0;;;;;:31;;;;::::1;9951:6:::0;9977:31;;::::1;::::0;;;10040:6;;;;::::1;10032:15:::0;;;;;;;;:19;10029:95:::1;;10078:6;::::0;;-1:-1:-1;;;;;10078:6:0::1;10096:15:::0;;;10078:6;10096:15:::1;::::0;;;;;;10068:44:::1;::::0;10078:6;10086:8;;10068:9:::1;:44::i;:::-;;10029:95;10144:6;:17:::0;;-1:-1:-1;;;;;;10144:17:0::1;-1:-1:-1::0;;;;;10144:17:0;::::1;::::0;;::::1;::::0;;10177:38:::1;::::0;10144:17;;;;10177:38:::1;::::0;10144:6;10177:38:::1;9657:576:::0;:::o;14152:129::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14240:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:33;;-1:-1:-1;;14240:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14152:129::o;21700:496::-;21779:7;;;:23;;-1:-1:-1;;;21779:23:0;;-1:-1:-1;;;;;370:32:1;;;21779:23:0;;;352:51:1;21756:7:0;;21806:1;;21779:7;;;;;:17;;325:18:1;21779:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:28;;:73;;;;-1:-1:-1;21824:7:0;;;:23;;-1:-1:-1;;;21824:23:0;;-1:-1:-1;;;;;370:32:1;;;21824:23:0;;;352:51:1;21850:2:0;;21824:7;;;:17;;325:18:1;21824:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:28;21779:73;21776:93;;;-1:-1:-1;;21862:5:0;;;21700:496::o;21776:93::-;21882:7;;;:23;;-1:-1:-1;;;21882:23:0;;-1:-1:-1;;;;;370:32:1;;;21882:23:0;;;352:51:1;21909:2:0;;21882:7;;;:17;;325:18:1;21882:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;:74;;;;-1:-1:-1;21928:7:0;;;:23;;-1:-1:-1;;;21928:23:0;;-1:-1:-1;;;;;370:32:1;;;21928:23:0;;;352:51:1;21954:2:0;;21928:7;;;:17;;325:18:1;21928:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:28;21882:74;21879:94;;;-1:-1:-1;;21966:5:0;;;21700:496::o;21879:94::-;21986:7;;;:23;;-1:-1:-1;;;21986:23:0;;-1:-1:-1;;;;;370:32:1;;;21986:23:0;;;352:51:1;22013:2:0;;21986:7;;;:17;;325:18:1;21986:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;:75;;;;-1:-1:-1;22032:7:0;;;:23;;-1:-1:-1;;;22032:23:0;;-1:-1:-1;;;;;370:32:1;;;22032:23:0;;;352:51:1;22058:3:0;;22032:7;;;:17;;325:18:1;22032:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;21986:75;21983:95;;;-1:-1:-1;;22071:5:0;;;21700:496::o;21983:95::-;22091:7;;;:23;;-1:-1:-1;;;22091:23:0;;-1:-1:-1;;;;;370:32:1;;;22091:23:0;;;352:51:1;22118:3:0;;22091:7;;;:17;;325:18:1;22091:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;22088:99;;-1:-1:-1;;22131:5:0;;;21700:496::o;22088:99::-;-1:-1:-1;22174:1:0;;21700:496;-1:-1:-1;21700:496:0:o;22088:99::-;21700:496;;;:::o;17625:108::-;17715:9;;17668:7;;17711:13;;17715:9;;17711:2;:13;:::i;:::-;17695:12;;:30;;;;:::i;10241:189::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;10331:5:::1;10321:6:::0;;-1:-1:-1;;;;;10321:6:0::1;10306:22:::0;;:14:::1;:22;::::0;;;;;:30;;-1:-1:-1;;10306:30:0::1;::::0;;10347:19;;-1:-1:-1;;;;;;10347:19:0::1;::::0;;10382:40;10331:5;;10382:40:::1;::::0;10331:5;;10382:40:::1;10241:189::o:0;21215:477::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;21343:6:::1;21334;:15;21326:57;;;::::0;-1:-1:-1;;;21326:57:0;;17238:2:1;21326:57:0::1;::::0;::::1;17220:21:1::0;17277:2;17257:18;;;17250:30;17316:31;17296:18;;;17289:59;17365:18;;21326:57:0::1;17036:353:1::0;21326:57:0::1;21394:5;:14:::0;;;21427:15;;::::1;21419:57;;;::::0;-1:-1:-1;;;21419:57:0;;17596:2:1;21419:57:0::1;::::0;::::1;17578:21:1::0;17635:2;17615:18;;;17608:30;17674:31;17654:18;;;17647:59;17723:18;;21419:57:0::1;17394:353:1::0;21419:57:0::1;21487:5;:14:::0;;;21520:15;;::::1;21512:57;;;::::0;-1:-1:-1;;;21512:57:0;;17954:2:1;21512:57:0::1;::::0;::::1;17936:21:1::0;17993:2;17973:18;;;17966:30;18032:31;18012:18;;;18005:59;18081:18;;21512:57:0::1;17752:353:1::0;21512:57:0::1;21580:5;:14:::0;;;21623:4:::1;21613:14:::0;::::1;;21605:54;;;::::0;-1:-1:-1;;;21605:54:0;;18312:2:1;21605:54:0::1;::::0;::::1;18294:21:1::0;18351:2;18331:18;;;18324:30;18390:29;18370:18;;;18363:57;18437:18;;21605:54:0::1;18110:351:1::0;21605:54:0::1;21670:5;:14:::0;-1:-1:-1;;;21215:477:0:o;15029:258::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;15157:15:::1;:36:::0;;-1:-1:-1;;;;;15157:36:0;;::::1;-1:-1:-1::0;;;;;;15157:36:0;;::::1;;::::0;;;15204:14:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15249:11:::1;:30:::0;;;;;::::1;::::0;::::1;;::::0;;15029:258::o;15295:116::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;15373:19:::1;:30:::0;;-1:-1:-1;;15373:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15295:116::o;16643:422::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;-1:-1:-1;16734:5:0::1;16814:17;::::0;:22;16810:152:::1;;16903:6;16883:17;;16865:15;:35;;;;:::i;:::-;:44;16857:89;;;::::0;-1:-1:-1;;;16857:89:0;;18668:2:1;16857:89:0::1;::::0;::::1;18650:21:1::0;;;18687:18;;;18680:30;18746:34;18726:18;;;18719:62;18798:18;;16857:89:0::1;18466:356:1::0;16857:89:0::1;-1:-1:-1::0;;;;;16976:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;16976:20:0::1;16992:4;16976:20;::::0;;17031:15:::1;17011:17;:35:::0;16720:338:::1;16643:422:::0;;:::o;12301:173::-;12365:4;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;12414:9:::1;::::0;12382:62:::1;::::0;12399:4:::1;::::0;-1:-1:-1;;;;;12414:9:0::1;-1:-1:-1::0;;12382:8:0::1;:62::i;:::-;-1:-1:-1::0;12462:4:0::1;12301:173:::0;:::o;13898:246::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;13960:14:::1;::::0;::::1;::::0;::::1;;;13959:15;13951:52;;;::::0;-1:-1:-1;;;13951:52:0;;19029:2:1;13951:52:0::1;::::0;::::1;19011:21:1::0;19068:2;19048:18;;;19041:30;19107:26;19087:18;;;19080:54;19151:18;;13951:52:0::1;18827:348:1::0;13951:52:0::1;14022:15;::::0;;;::::1;;;14014:52;;;::::0;-1:-1:-1;;;14014:52:0;;19382:2:1;14014:52:0::1;::::0;::::1;19364:21:1::0;19421:2;19401:18;;;19394:30;19460:26;19440:18;;;19433:54;19504:18;;14014:52:0::1;19180:348:1::0;14014:52:0::1;14092:12;14077;:27:::0;14115:14:::1;:21:::0;;-1:-1:-1;;14115:21:0::1;;;::::0;;13898:246::o;15865:216::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15950:33:0;::::1;15977:4;15950:33;;15942:84;;;::::0;-1:-1:-1;;;15942:84:0;;19735:2:1;15942:84:0::1;::::0;::::1;19717:21:1::0;19774:2;19754:18;;;19747:30;19813:34;19793:18;;;19786:62;-1:-1:-1;;;19864:18:1;;;19857:36;19910:19;;15942:84:0::1;19533:402:1::0;15942:84:0::1;16037:7;:26:::0;;-1:-1:-1;;;;;;16037:26:0::1;-1:-1:-1::0;;;;;16037:26:0;;;::::1;::::0;;;::::1;::::0;;15865:216::o;13148:152::-;13228:4;13252:40;13262:10;13274:9;13285:6;13252:9;:40::i;25572:480::-;25727:8;:15;25708:8;:15;:34;:72;;;;;25765:8;:15;25746:8;:15;:34;25708:72;25700:106;;;;-1:-1:-1;;;25700:106:0;;14998:2:1;25700:106:0;;;14980:21:1;15037:2;15017:18;;;15010:30;-1:-1:-1;;;15056:18:1;;;15049:51;15117:18;;25700:106:0;14796:345:1;25700:106:0;25822:7;25817:228;25839:8;:15;25835:1;:19;;;25817:228;;;25933:8;25942:1;25933:11;;;;;;;;;;:::i;:::-;;;;;;;25918:8;25927:1;25918:11;;;;;;;;;;:::i;:::-;;;;;;;25908:7;;:21;;;;:::i;:::-;25907:37;;;;:::i;:::-;25892:10;25884:19;;;;:7;:19;;;;;;:60;;25876:69;;;;;;25960:73;25970:10;25982:8;25991:1;25982:11;;;;;;;;;;:::i;:::-;;;;;;;26021:8;26030:1;26021:11;;;;;;;;;;:::i;:::-;;;;;;;26006:8;26015:1;26006:11;;;;;;;;;;:::i;:::-;;;;;;;25996:7;;:21;;;;:::i;:::-;25995:37;;;;:::i;25960:73::-;-1:-1:-1;25856:3:0;;;;:::i;:::-;;;;25817:228;;;;25572:480;;;:::o;16089:546::-;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;16162:20:::1;16195:9;16162:43;;16216:16;16246:10;-1:-1:-1::0;;;;;16246:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16235:40:0::1;;16284:4;16291:10;-1:-1:-1::0;;;;;16291:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16235:75;::::0;-1:-1:-1;;;;;;16235:75:0::1;::::0;;;;;;-1:-1:-1;;;;;20426:15:1;;;16235:75:0::1;::::0;::::1;20408:34:1::0;20478:15;;20458:18;;;20451:43;20343:18;;16235:75:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16216:94:::0;-1:-1:-1;;;;;;16325:22:0;::::1;16321:201;;16384:10;-1:-1:-1::0;;;;;16384:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16373:43:0::1;;16425:4;16432:10;-1:-1:-1::0;;;;;16432:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16373:78;::::0;-1:-1:-1;;;;;;16373:78:0::1;::::0;;;;;;-1:-1:-1;;;;;20426:15:1;;;16373:78:0::1;::::0;::::1;20408:34:1::0;20478:15;;20458:18;;;20451:43;20343:18;;16373:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16364:6;:87:::0;;-1:-1:-1;;;;;;16364:87:0::1;-1:-1:-1::0;;;;;16364:87:0;;;::::1;::::0;;;::::1;::::0;;16321:201:::1;;;16493:6;:17:::0;;-1:-1:-1;;;;;;16493:17:0::1;-1:-1:-1::0;;;;;16493:17:0;::::1;;::::0;;16321:201:::1;16532:9;:22:::0;;-1:-1:-1;;;;;;16532:22:0::1;-1:-1:-1::0;;;;;16532:22:0;::::1;::::0;;::::1;::::0;;;16565:62:::1;::::0;16582:4:::1;::::0;-1:-1:-1;;16565:8:0::1;:62::i;15419:289::-:0;7924:6;;-1:-1:-1;;;;;7924:6:0;7934:10;7924:20;7916:65;;;;-1:-1:-1;;;7916:65:0;;;;;;;:::i;:::-;15619:16:::1;15599;15589:7;;:26;;;;:::i;:::-;15588:47;;;;:::i;:::-;15572:13;:63:::0;15660:7:::1;::::0;15687:13;;15660:23:::1;::::0;15670:13;;15660:23:::1;:::i;:::-;15659:41;;;;:::i;:::-;15646:10;:54:::0;-1:-1:-1;;;;15419:289:0:o;18231:1018::-;18310:4;-1:-1:-1;;;;;18335:18:0;;18327:68;;;;-1:-1:-1;;;18327:68:0;;20707:2:1;18327:68:0;;;20689:21:1;20746:2;20726:18;;;20719:30;20785:34;20765:18;;;20758:62;-1:-1:-1;;;20836:18:1;;;20829:35;20881:19;;18327:68:0;20505:401:1;18327:68:0;-1:-1:-1;;;;;18414:16:0;;18406:64;;;;-1:-1:-1;;;18406:64:0;;21113:2:1;18406:64:0;;;21095:21:1;21152:2;21132:18;;;21125:30;21191:34;21171:18;;;21164:62;-1:-1:-1;;;21242:18:1;;;21235:33;21285:19;;18406:64:0;20911:399:1;18406:64:0;18498:1;18489:6;:10;18481:64;;;;-1:-1:-1;;;18481:64:0;;21517:2:1;18481:64:0;;;21499:21:1;21556:2;21536:18;;;21529:30;21595:34;21575:18;;;21568:62;-1:-1:-1;;;21646:18:1;;;21639:39;21695:19;;18481:64:0;21315:405:1;18481:64:0;18559:20;18570:4;18576:2;18559:10;:20::i;:::-;18556:482;;;18600:14;;;;;;;18596:89;;18635:34;;-1:-1:-1;;;18635:34:0;;21927:2:1;18635:34:0;;;21909:21:1;21966:2;21946:18;;;21939:30;22005:26;21985:18;;;21978:54;22049:18;;18635:34:0;21725:348:1;18596:89:0;-1:-1:-1;;;;;18704:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;18721:11:0;;;;;;:7;:11;;;;;;;;18704:28;18701:142;;;18770:12;;18760:6;:22;;18752:75;;;;-1:-1:-1;;;18752:75:0;;22280:2:1;18752:75:0;;;22262:21:1;22319:2;22299:18;;;22292:30;22358:34;22338:18;;;22331:62;-1:-1:-1;;;22409:18:1;;;22402:38;22457:19;;18752:75:0;22078:404:1;18752:75:0;18866:13;;-1:-1:-1;;;;;18860:19:0;;;18866:13;;18860:19;;;;:35;;-1:-1:-1;;;;;;18884:11:0;;;;;;:7;:11;;;;;;;;18883:12;18860:35;18857:170;;;18950:14;;18940:6;18924:13;18934:2;-1:-1:-1;;;;;11341:16:0;11323:7;11341:16;;;:7;:16;;;;;;;11257:103;18924:13;:22;;;;:::i;:::-;:40;;18916:95;;;;-1:-1:-1;;;18916:95:0;;22689:2:1;18916:95:0;;;22671:21:1;22728:2;22708:18;;;22701:30;22767:34;22747:18;;;22740:62;-1:-1:-1;;;22818:18:1;;;22811:40;22868:19;;18916:95:0;22487:406:1;18916:95:0;-1:-1:-1;;;;;19093:20:0;;19050:12;19093:20;;;:14;:20;;;;;;19065:4;;19093:20;;;:42;;-1:-1:-1;;;;;;19117:18:0;;;;;;:14;:18;;;;;;;;19093:42;19090:88;;;-1:-1:-1;19161:5:0;19090:88;19197:44;19215:4;19221:2;19225:6;19233:7;19197:17;:44::i;:::-;19190:51;18231:1018;-1:-1:-1;;;;;18231:1018:0:o;11952:341::-;-1:-1:-1;;;;;12046:20:0;;12038:69;;;;-1:-1:-1;;;12038:69:0;;23100:2:1;12038:69:0;;;23082:21:1;23139:2;23119:18;;;23112:30;23178:34;23158:18;;;23151:62;-1:-1:-1;;;23229:18:1;;;23222:34;23273:19;;12038:69:0;22898:400:1;12038:69:0;-1:-1:-1;;;;;12126:21:0;;12118:68;;;;-1:-1:-1;;;12118:68:0;;23505:2:1;12118:68:0;;;23487:21:1;23544:2;23524:18;;;23517:30;23583:34;23563:18;;;23556:62;-1:-1:-1;;;23634:18:1;;;23627:32;23676:19;;12118:68:0;23303:398:1;12118:68:0;-1:-1:-1;;;;;12199:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12252:33;;3453:25:1;;;12252:33:0;;3426:18:1;12252:33:0;;;;;;;11952:341;;;:::o;17863:360::-;17931:4;9635:6;;-1:-1:-1;;;;;17955:15:0;;;9635:6;;17955:15;;;;:45;;-1:-1:-1;9608:7:0;9635:6;-1:-1:-1;;;;;17987:13:0;;;9635:6;;17987:13;;17955:45;:82;;;;-1:-1:-1;9608:7:0;9635:6;-1:-1:-1;;;;;9635:6:0;18017:9;:20;;17955:82;:121;;;;-1:-1:-1;;;;;;18055:21:0;;;;;;:17;:21;;;;;;;;18054:22;17955:121;:162;;;;-1:-1:-1;;;;;;18094:23:0;;;;;;:17;:23;;;;;;;;18093:24;17955:162;:189;;;;-1:-1:-1;18140:4:0;;-1:-1:-1;;;;;18134:10:0;;;18140:4;;18134:10;;17955:189;:222;;;;-1:-1:-1;;;;;;18161:16:0;;;;17955:222;:260;;;;-1:-1:-1;;;;;;;;18194:21:0;18210:4;18194:21;;;17863:360::o;19257:1723::-;19379:16;;19358:4;;19379:16;;;;;19375:817;;;-1:-1:-1;;;;;12749:18:0;;12725:4;12749:18;;;:9;:18;;;;;;;;19415:30;;;-1:-1:-1;;;;;;12749:18:0;;12725:4;12749:18;;;:9;:18;;;;;;;;19433:12;19411:97;;;19466:26;;-1:-1:-1;;;19466:26:0;;23908:2:1;19466:26:0;;;23890:21:1;23947:2;23927:18;;;23920:30;-1:-1:-1;;;23966:18:1;;;23959:46;24022:18;;19466:26:0;23706:340:1;19411:97:0;19529:15;;;;;;;19524:657;;19565:28;19584:4;19590:2;19565:18;:28::i;:::-;19617:15;;;;;;;19616:16;:40;;;;;19636:20;19647:4;19653:2;19636:10;:20::i;:::-;19612:136;;;19681:47;;-1:-1:-1;;;19681:47:0;;24253:2:1;19681:47:0;;;24235:21:1;24292:2;24272:18;;;24265:30;24331:34;24311:18;;;24304:62;-1:-1:-1;;;24382:18:1;;;24375:35;24427:19;;19681:47:0;24051:401:1;19612:136:0;19524:657;;;19807:1;19792:12;;:16;:55;;;;-1:-1:-1;;;;;;19834:13:0;;;;;;:7;:13;;;;;;;;19792:55;:101;;;;;19873:20;19884:4;19890:2;19873:10;:20::i;:::-;19788:378;;;19970:13;;19955:12;;19940:27;;:12;:27;:::i;:::-;:43;19936:211;;;-1:-1:-1;;;;;20012:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;20012:20:0;20028:4;20012:20;;;20059:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;20107:16:0;;-1:-1:-1;;;;;370:32:1;;352:51;;20107:16:0;;340:2:1;325:18;20107:16:0;;;;;;;19936:211;-1:-1:-1;;;;;20216:13:0;;;;;;:7;:13;;;;;:23;;20233:6;;20216:13;:23;;20233:6;;20216:23;:::i;:::-;;;;-1:-1:-1;;20264:6:0;;;;20260:78;;;20294:32;20309:4;20315:2;20319:6;20294:14;:32::i;:::-;20287:39;;;;20260:78;20397:4;20350:28;20381:22;;;:7;:22;;;;;;20441:10;;20417:34;;20414:85;;-1:-1:-1;20489:10:0;;20414:85;20517:6;;;;20516:7;:38;;;;-1:-1:-1;;;;;;20541:13:0;;;;;;:7;:13;;;;;;;;20540:14;20516:38;:74;;;;-1:-1:-1;20571:19:0;;;;20516:74;:128;;;;;20631:13;;20607:20;:37;;20516:128;20512:205;;;20671:34;20684:20;20671:12;:34::i;:::-;20754:6;20773:84;;;;20818:27;20828:4;20834:2;20838:6;20818:9;:27::i;:::-;20801:44;;20773:84;-1:-1:-1;;;;;20869:11:0;;;;;;:7;:11;;;;;:29;;20884:14;;20869:11;:29;;20884:14;;20869:29;:::i;:::-;;;;;;;;20931:2;-1:-1:-1;;;;;20916:34:0;20925:4;-1:-1:-1;;;;;20916:34:0;-1:-1:-1;;;;;;;;;;;20935:14:0;20916:34;;;;3453:25:1;;3441:2;3426:18;;3307:177;20916:34:0;;;;;;;;20968:4;20961:11;;;;19257:1723;;;;;;;:::o;24730:455::-;24812:15;;;;;;;24811:16;24803:64;;;;-1:-1:-1;;;24803:64:0;;24799:2:1;24803:64:0;;;24781:21:1;24838:2;24818:18;;;24811:30;24877:34;24857:18;;;24850:62;-1:-1:-1;;;24928:18:1;;;24921:33;24971:19;;24803:64:0;24597:399:1;24803:64:0;24883:20;24894:4;24900:2;24883:10;:20::i;:::-;24882:21;:37;;;;-1:-1:-1;24913:6:0;;-1:-1:-1;;;;;24907:12:0;;;24913:6;;24907:12;24882:37;24878:300;;;24965:12;24950;:27;-1:-1:-1;;;;;24992:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;24992:30:0;;;25018:4;24992:30;;;;;;25037:15;:22;;-1:-1:-1;;25037:22:0;;;;;25088:19;:26;;;;;;;;;25134:32;;154:41:1;;;25134:32:0;;127:18:1;25134:32:0;;;;;;;24730:455;;:::o;20988:219::-;-1:-1:-1;;;;;21098:18:0;;21081:4;21098:18;;;:7;:18;;;;;:28;;21120:6;;21098:18;21081:4;;21098:28;;21120:6;;21098:28;:::i;:::-;;;;;;;;21159:9;-1:-1:-1;;;;;21142:35:0;21151:6;-1:-1:-1;;;;;21142:35:0;-1:-1:-1;;;;;;;;;;;21170:6:0;21142:35;;;;3453:25:1;;3441:2;3426:18;;3307:177;21142:35:0;;;;;;;;-1:-1:-1;21195:4:0;20988:219;;;;;:::o;22888:1826::-;7818:6;:13;;-1:-1:-1;;7818:13:0;7827:4;7818:13;;;22968:7:::1;:13:::0;::::1;-1:-1:-1::0;;;22968:13:0;;::::1;;22964:57;;23003:7;;22964:57;23064:4;23044:26;::::0;;;:11:::1;:26;::::0;;;;;;;23079:9:::1;::::0;-1:-1:-1;;;;;23079:9:0::1;23044:46:::0;;;;;;;;-1:-1:-1;;23044:67:0::1;23041:165;;23148:4;23128:26;::::0;;;:11:::1;:26;::::0;;;;;;;23163:9:::1;::::0;-1:-1:-1;;;;;23163:9:0::1;23128:46:::0;;;;;;;-1:-1:-1;;23128:66:0;;23041:165:::1;23286:7;:13:::0;23218:23:::1;::::0;23304:1:::1;::::0;23286:13:::1;-1:-1:-1::0;;;23286:13:0;::::1;::::0;::::1;::::0;23246:35:::1;::::0;23264:17;;;::::1;;23246:15:::0;:35:::1;:::i;:::-;23245:55;;;;:::i;:::-;23244:61;;;;:::i;:::-;23385:7;:13:::0;23218:87;;-1:-1:-1;23316:27:0::1;::::0;23385:13:::1;-1:-1:-1::0;;;23385:13:0;::::1;::::0;::::1;::::0;23347:33:::1;::::0;23365:15:::1;23347::::0;:33:::1;:::i;:::-;23346:53;;;;:::i;:::-;23316:83:::0;-1:-1:-1;23415:23:0;;23412:117:::1;;23484:11;::::0;23460:57:::1;::::0;3453:25:1;;;-1:-1:-1;;;;;23484:11:0;;::::1;::::0;23477:4:::1;::::0;-1:-1:-1;;;;;;;;;;;23460:57:0;3441:2:1;3426:18;23460:57:0::1;;;;;;;23412:117;23565:16;::::0;;23579:1:::1;23565:16:::0;;;;;::::1;::::0;;23541:21:::1;::::0;23565:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23565:16:0::1;23541:40;;23610:4;23592;23597:1;23592:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23592:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23636:5:::1;::::0;23626:7;;23636:5;::::1;::::0;23626:4;;23636:5;;23626:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;23626:15:0;;::::1;:7;::::0;;::::1;::::0;;;;;:15;23654:9:::1;::::0;::::1;:61;23766:19:::0;23730:33:::1;23748:15:::0;23730;:33:::1;:::i;:::-;:55;;;;:::i;:::-;23800:1;23816:4;23843;23863:15;23654:235;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;24022:7:0::1;:13:::0;23923:21:::1;::::0;-1:-1:-1;23902:18:0::1;::::0;-1:-1:-1;24040:1:0::1;::::0;24022:13:::1;-1:-1:-1::0;;;24022:13:0;::::1;::::0;::::1;::::0;23987:30:::1;::::0;24000:17;;;::::1;;23923:21:::0;23987:30:::1;:::i;:::-;23986:50;;;;:::i;:::-;23985:56;;;;:::i;:::-;23955:86:::0;-1:-1:-1;24080:19:0;;24076:353:::1;;24116:9;::::0;24295:4:::1;::::0;24116:232:::1;::::0;-1:-1:-1;;;24116:232:0;;24197:4:::1;24116:232;::::0;::::1;26327:34:1::0;26377:18;;;26370:34;;;24116:9:0::1;26420:18:1::0;;;26413:34;;;26463:18;;;26456:34;-1:-1:-1;;;;;24295:4:0;;::::1;26506:19:1::0;;;26499:44;24318:15:0::1;26559:19:1::0;;;26552:35;24116:9:0;::::1;::::0;:26:::1;::::0;24150:19;;26261::1;;24116:232:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24368:49:0::1;::::0;;27083:25:1;;;27139:2;27124:18;;27117:34;;;24368:49:0::1;::::0;-1:-1:-1;27056:18:1;24368:49:0::1;;;;;;;24076:353;24446:21;:25:::0;24443:264:::1;;24536:14;::::0;24614:7:::1;:17:::0;24500:21:::1;::::0;-1:-1:-1;;;;;;24536:14:0;;::::1;::::0;:97:::1;::::0;24595:36:::1;::::0;24614:17:::1;-1:-1:-1::0;;;24614:17:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;24595:16:0;::::1;;:36;:::i;:::-;24574:7;:16:::0;24560:72:::1;::::0;;::::1;::::0;24561:29:::1;::::0;-1:-1:-1;;;24574:16:0;::::1;;24561:10:::0;:29:::1;:::i;:::-;24560:72;;;;:::i;:::-;24536:97;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;24648:15:0::1;::::0;:47:::1;::::0;-1:-1:-1;;;;;24648:15:0;;::::1;::::0;24673:21:::1;24648:47:::0;::::1;;;::::0;:15:::1;:47:::0;:15;:47;24673:21;24648:15;:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24443:264;22953:1761;;;;;7842:1;-1:-1:-1::0;7854:6:0;:14;;-1:-1:-1;;7854:14:0;;;22888:1826::o;22204:676::-;22344:6;;22283:7;;;;-1:-1:-1;;;;;22336:14:0;;;22344:6;;22336:14;22332:244;;;-1:-1:-1;22380:9:0;:16;;;22332:244;;;22424:6;;-1:-1:-1;;;;;22418:12:0;;;22424:6;;22418:12;22414:162;;;22480:17;22492:4;22480:11;:17::i;:::-;22460:9;:17;:37;;;:17;;;;;:37;:::i;:::-;22447:50;;22414:162;;;-1:-1:-1;22543:9:0;:21;-1:-1:-1;;;22543:21:0;;;;22414:162;22592:15;22588:61;;22631:6;22624:13;;;;;22588:61;22703:10;:27;22661:17;;-1:-1:-1;;;22703:27:0;;;;22681:19;22690:10;22681:6;:19;:::i;:::-;:49;;;;:::i;:::-;22759:4;22743:22;;;;:7;:22;;;;;:35;;22661:69;;-1:-1:-1;22661:69:0;;22743:22;;;:35;;22661:69;;22743:35;:::i;:::-;;;;-1:-1:-1;;22794:40:0;;3453:25:1;;;22817:4:0;;-1:-1:-1;;;;;22794:40:0;;;-1:-1:-1;;;;;;;;;;;22794:40:0;3441:2:1;3426:18;22794:40:0;;;;;;;22854:18;22863:9;22854:6;:18;:::i;:::-;22847:25;22204:676;-1:-1:-1;;;;;;22204:676:0:o;414:160:1:-;479:20;;535:13;;528:21;518:32;;508:60;;564:1;561;554:12;579:248;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;741:26;757:9;741:26;:::i;:::-;731:36;;786:35;817:2;806:9;802:18;786:35;:::i;:::-;776:45;;579:248;;;;;:::o;1202:597::-;1314:4;1343:2;1372;1361:9;1354:21;1404:6;1398:13;1447:6;1442:2;1431:9;1427:18;1420:34;1472:1;1482:140;1496:6;1493:1;1490:13;1482:140;;;1591:14;;;1587:23;;1581:30;1557:17;;;1576:2;1553:26;1546:66;1511:10;;1482:140;;;1640:6;1637:1;1634:13;1631:91;;;1710:1;1705:2;1696:6;1685:9;1681:22;1677:31;1670:42;1631:91;-1:-1:-1;1783:2:1;1762:15;-1:-1:-1;;1758:29:1;1743:45;;;;1790:2;1739:54;;1202:597;-1:-1:-1;;;1202:597:1:o;1804:159::-;1871:20;;1931:6;1920:18;;1910:29;;1900:57;;1953:1;1950;1943:12;1968:401;2050:6;2058;2066;2074;2127:3;2115:9;2106:7;2102:23;2098:33;2095:53;;;2144:1;2141;2134:12;2095:53;2167:28;2185:9;2167:28;:::i;:::-;2157:38;;2214:37;2247:2;2236:9;2232:18;2214:37;:::i;:::-;2204:47;;2270:37;2303:2;2292:9;2288:18;2270:37;:::i;:::-;2260:47;;2326:37;2359:2;2348:9;2344:18;2326:37;:::i;:::-;2316:47;;1968:401;;;;;;;:::o;2599:131::-;-1:-1:-1;;;;;2674:31:1;;2664:42;;2654:70;;2720:1;2717;2710:12;2654:70;2599:131;:::o;2735:315::-;2803:6;2811;2864:2;2852:9;2843:7;2839:23;2835:32;2832:52;;;2880:1;2877;2870:12;2832:52;2919:9;2906:23;2938:31;2963:5;2938:31;:::i;:::-;2988:5;3040:2;3025:18;;;;3012:32;;-1:-1:-1;;;2735:315:1:o;3055:247::-;3114:6;3167:2;3155:9;3146:7;3142:23;3138:32;3135:52;;;3183:1;3180;3173:12;3135:52;3222:9;3209:23;3241:31;3266:5;3241:31;:::i;3938:456::-;4015:6;4023;4031;4084:2;4072:9;4063:7;4059:23;4055:32;4052:52;;;4100:1;4097;4090:12;4052:52;4139:9;4126:23;4158:31;4183:5;4158:31;:::i;:::-;4208:5;-1:-1:-1;4265:2:1;4250:18;;4237:32;4278:33;4237:32;4278:33;:::i;:::-;3938:456;;4330:7;;-1:-1:-1;;;4384:2:1;4369:18;;;;4356:32;;3938:456::o;4399:248::-;4467:6;4475;4528:2;4516:9;4507:7;4503:23;4499:32;4496:52;;;4544:1;4541;4534:12;4496:52;-1:-1:-1;;4567:23:1;;;4637:2;4622:18;;;4609:32;;-1:-1:-1;4399:248:1:o;4652:127::-;4713:10;4708:3;4704:20;4701:1;4694:31;4744:4;4741:1;4734:15;4768:4;4765:1;4758:15;4784:275;4855:2;4849:9;4920:2;4901:13;;-1:-1:-1;;4897:27:1;4885:40;;4955:18;4940:34;;4976:22;;;4937:62;4934:88;;;5002:18;;:::i;:::-;5038:2;5031:22;4784:275;;-1:-1:-1;4784:275:1:o;5064:183::-;5124:4;5157:18;5149:6;5146:30;5143:56;;;5179:18;;:::i;:::-;-1:-1:-1;5224:1:1;5220:14;5236:4;5216:25;;5064:183::o;5252:737::-;5306:5;5359:3;5352:4;5344:6;5340:17;5336:27;5326:55;;5377:1;5374;5367:12;5326:55;5413:6;5400:20;5439:4;5463:60;5479:43;5519:2;5479:43;:::i;:::-;5463:60;:::i;:::-;5557:15;;;5643:1;5639:10;;;;5627:23;;5623:32;;;5588:12;;;;5667:15;;;5664:35;;;5695:1;5692;5685:12;5664:35;5731:2;5723:6;5719:15;5743:217;5759:6;5754:3;5751:15;5743:217;;;5839:3;5826:17;5856:31;5881:5;5856:31;:::i;:::-;5900:18;;5938:12;;;;5776;;5743:217;;;-1:-1:-1;5978:5:1;5252:737;-1:-1:-1;;;;;;5252:737:1:o;5994:662::-;6048:5;6101:3;6094:4;6086:6;6082:17;6078:27;6068:55;;6119:1;6116;6109:12;6068:55;6155:6;6142:20;6181:4;6205:60;6221:43;6261:2;6221:43;:::i;6205:60::-;6299:15;;;6385:1;6381:10;;;;6369:23;;6365:32;;;6330:12;;;;6409:15;;;6406:35;;;6437:1;6434;6427:12;6406:35;6473:2;6465:6;6461:15;6485:142;6501:6;6496:3;6493:15;6485:142;;;6567:17;;6555:30;;6605:12;;;;6518;;6485:142;;6661:595;6779:6;6787;6840:2;6828:9;6819:7;6815:23;6811:32;6808:52;;;6856:1;6853;6846:12;6808:52;6896:9;6883:23;6925:18;6966:2;6958:6;6955:14;6952:34;;;6982:1;6979;6972:12;6952:34;7005:61;7058:7;7049:6;7038:9;7034:22;7005:61;:::i;:::-;6995:71;;7119:2;7108:9;7104:18;7091:32;7075:48;;7148:2;7138:8;7135:16;7132:36;;;7164:1;7161;7154:12;7132:36;;7187:63;7242:7;7231:8;7220:9;7216:24;7187:63;:::i;:::-;7177:73;;;6661:595;;;;;:::o;7450:328::-;7524:6;7532;7540;7593:2;7581:9;7572:7;7568:23;7564:32;7561:52;;;7609:1;7606;7599:12;7561:52;7632:28;7650:9;7632:28;:::i;:::-;7622:38;;7679:37;7712:2;7701:9;7697:18;7679:37;:::i;:::-;7669:47;;7735:37;7768:2;7757:9;7753:18;7735:37;:::i;:::-;7725:47;;7450:328;;;;;:::o;7783:269::-;7840:6;7893:2;7881:9;7872:7;7868:23;7864:32;7861:52;;;7909:1;7906;7899:12;7861:52;7948:9;7935:23;7998:4;7991:5;7987:16;7980:5;7977:27;7967:55;;8018:1;8015;8008:12;8057:315;8122:6;8130;8183:2;8171:9;8162:7;8158:23;8154:32;8151:52;;;8199:1;8196;8189:12;8151:52;8238:9;8225:23;8257:31;8282:5;8257:31;:::i;8377:385::-;8463:6;8471;8479;8487;8540:3;8528:9;8519:7;8515:23;8511:33;8508:53;;;8557:1;8554;8547:12;8508:53;-1:-1:-1;;8580:23:1;;;8650:2;8635:18;;8622:32;;-1:-1:-1;8701:2:1;8686:18;;8673:32;;8752:2;8737:18;8724:32;;-1:-1:-1;8377:385:1;-1:-1:-1;8377:385:1:o;8767:553::-;8868:6;8876;8884;8937:2;8925:9;8916:7;8912:23;8908:32;8905:52;;;8953:1;8950;8943:12;8905:52;8992:9;8979:23;9011:31;9036:5;9011:31;:::i;:::-;9061:5;-1:-1:-1;9118:2:1;9103:18;;9090:32;9131:33;9090:32;9131:33;:::i;:::-;9183:7;-1:-1:-1;9242:2:1;9227:18;;9214:32;9255:33;9214:32;9255:33;:::i;:::-;9307:7;9297:17;;;8767:553;;;;;:::o;9549:180::-;9605:6;9658:2;9646:9;9637:7;9633:23;9629:32;9626:52;;;9674:1;9671;9664:12;9626:52;9697:26;9713:9;9697:26;:::i;10528:388::-;10596:6;10604;10657:2;10645:9;10636:7;10632:23;10628:32;10625:52;;;10673:1;10670;10663:12;10625:52;10712:9;10699:23;10731:31;10756:5;10731:31;:::i;:::-;10781:5;-1:-1:-1;10838:2:1;10823:18;;10810:32;10851:33;10810:32;10851:33;:::i;:::-;10903:7;10893:17;;;10528:388;;;;;:::o;10921:821::-;11073:6;11081;11089;11142:2;11130:9;11121:7;11117:23;11113:32;11110:52;;;11158:1;11155;11148:12;11110:52;11198:9;11185:23;11227:18;11268:2;11260:6;11257:14;11254:34;;;11284:1;11281;11274:12;11254:34;11307:61;11360:7;11351:6;11340:9;11336:22;11307:61;:::i;:::-;11297:71;;11421:2;11410:9;11406:18;11393:32;11377:48;;11450:2;11440:8;11437:16;11434:36;;;11466:1;11463;11456:12;11434:36;11489:63;11544:7;11533:8;11522:9;11518:24;11489:63;:::i;:::-;11479:73;;11605:2;11594:9;11590:18;11577:32;11561:48;;11634:2;11624:8;11621:16;11618:36;;;11650:1;11647;11640:12;11618:36;;11673:63;11728:7;11717:8;11706:9;11702:24;11673:63;:::i;:::-;11663:73;;;10921:821;;;;;:::o;11747:356::-;11949:2;11931:21;;;11968:18;;;11961:30;12027:34;12022:2;12007:18;;12000:62;12094:2;12079:18;;11747:356::o;12108:127::-;12169:10;12164:3;12160:20;12157:1;12150:31;12200:4;12197:1;12190:15;12224:4;12221:1;12214:15;12240:224;12279:3;12307:6;12340:2;12337:1;12333:10;12370:2;12367:1;12363:10;12401:3;12397:2;12393:12;12388:3;12385:21;12382:47;;;12409:18;;:::i;:::-;12445:13;;12240:224;-1:-1:-1;;;;12240:224:1:o;12469:422::-;12558:1;12601:5;12558:1;12615:270;12636:7;12626:8;12623:21;12615:270;;;12695:4;12691:1;12687:6;12683:17;12677:4;12674:27;12671:53;;;12704:18;;:::i;:::-;12754:7;12744:8;12740:22;12737:55;;;12774:16;;;;12737:55;12853:22;;;;12813:15;;;;12615:270;;;12619:3;12469:422;;;;;:::o;12896:806::-;12945:5;12975:8;12965:80;;-1:-1:-1;13016:1:1;13030:5;;12965:80;13064:4;13054:76;;-1:-1:-1;13101:1:1;13115:5;;13054:76;13146:4;13164:1;13159:59;;;;13232:1;13227:130;;;;13139:218;;13159:59;13189:1;13180:10;;13203:5;;;13227:130;13264:3;13254:8;13251:17;13248:43;;;13271:18;;:::i;:::-;-1:-1:-1;;13327:1:1;13313:16;;13342:5;;13139:218;;13441:2;13431:8;13428:16;13422:3;13416:4;13413:13;13409:36;13403:2;13393:8;13390:16;13385:2;13379:4;13376:12;13372:35;13369:77;13366:159;;;-1:-1:-1;13478:19:1;;;13510:5;;13366:159;13557:34;13582:8;13576:4;13557:34;:::i;:::-;13627:6;13623:1;13619:6;13615:19;13606:7;13603:32;13600:58;;;13638:18;;:::i;:::-;13676:20;;12896:806;-1:-1:-1;;;12896:806:1:o;13707:140::-;13765:5;13794:47;13835:4;13825:8;13821:19;13815:4;13794:47;:::i;13852:217::-;13892:1;13918;13908:132;;13962:10;13957:3;13953:20;13950:1;13943:31;13997:4;13994:1;13987:15;14025:4;14022:1;14015:15;13908:132;-1:-1:-1;14054:9:1;;13852:217::o;14074:125::-;14114:4;14142:1;14139;14136:8;14133:34;;;14147:18;;:::i;:::-;-1:-1:-1;14184:9:1;;14074:125::o;14204:168::-;14244:7;14310:1;14306;14302:6;14298:14;14295:1;14292:21;14287:1;14280:9;14273:17;14269:45;14266:71;;;14317:18;;:::i;:::-;-1:-1:-1;14357:9:1;;14204:168::o;15146:127::-;15207:10;15202:3;15198:20;15195:1;15188:31;15238:4;15235:1;15228:15;15262:4;15259:1;15252:15;15278:175;15315:3;15359:4;15352:5;15348:16;15388:4;15379:7;15376:17;15373:43;;;15396:18;;:::i;:::-;15445:1;15432:15;;15278:175;-1:-1:-1;;15278:175:1:o;15458:128::-;15498:3;15529:1;15525:6;15522:1;15519:13;15516:39;;;15535:18;;:::i;:::-;-1:-1:-1;15571:9:1;;15458:128::o;16417:425::-;16619:2;16601:21;;;16658:2;16638:18;;;16631:30;16697:34;16692:2;16677:18;;16670:62;16768:31;16763:2;16748:18;;16741:59;16832:3;16817:19;;16417:425::o;16847:184::-;16917:6;16970:2;16958:9;16949:7;16945:23;16941:32;16938:52;;;16986:1;16983;16976:12;16938:52;-1:-1:-1;17009:16:1;;16847:184;-1:-1:-1;16847:184:1:o;19940:251::-;20010:6;20063:2;20051:9;20042:7;20038:23;20034:32;20031:52;;;20079:1;20076;20069:12;20031:52;20111:9;20105:16;20130:31;20155:5;20130:31;:::i;24457:135::-;24496:3;-1:-1:-1;;24517:17:1;;24514:43;;;24537:18;;:::i;:::-;-1:-1:-1;24584:1:1;24573:13;;24457:135::o;25001:980::-;25263:4;25311:3;25300:9;25296:19;25342:6;25331:9;25324:25;25368:2;25406:6;25401:2;25390:9;25386:18;25379:34;25449:3;25444:2;25433:9;25429:18;25422:31;25473:6;25508;25502:13;25539:6;25531;25524:22;25577:3;25566:9;25562:19;25555:26;;25616:2;25608:6;25604:15;25590:29;;25637:1;25647:195;25661:6;25658:1;25655:13;25647:195;;;25726:13;;-1:-1:-1;;;;;25722:39:1;25710:52;;25817:15;;;;25782:12;;;;25758:1;25676:9;25647:195;;;-1:-1:-1;;;;;;;25898:32:1;;;;25893:2;25878:18;;25871:60;-1:-1:-1;;;25962:3:1;25947:19;25940:35;25859:3;25001:980;-1:-1:-1;;;25001:980:1:o;26598:306::-;26686:6;26694;26702;26755:2;26743:9;26734:7;26730:23;26726:32;26723:52;;;26771:1;26768;26761:12;26723:52;26800:9;26794:16;26784:26;;26850:2;26839:9;26835:18;26829:25;26819:35;;26894:2;26883:9;26879:18;26873:25;26863:35;;26598:306;;;;;:::o
Swarm Source
ipfs://d668a2a1123ddefffc47037e618cbaed0763215250af301d8f6d938de8de6eee
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.