Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 67 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16809707 | 605 days ago | IN | 0 ETH | 0.00091238 | ||||
Approve | 16809702 | 605 days ago | IN | 0 ETH | 0.00091879 | ||||
Approve | 16687346 | 622 days ago | IN | 0 ETH | 0.00149743 | ||||
Approve | 16686916 | 622 days ago | IN | 0 ETH | 0.00217573 | ||||
Approve | 16685939 | 622 days ago | IN | 0 ETH | 0.00230182 | ||||
Renounce Ownersh... | 16685869 | 622 days ago | IN | 0 ETH | 0.00090537 | ||||
Set Swap Back Se... | 16685862 | 622 days ago | IN | 0 ETH | 0.00131043 | ||||
Remove Bots | 16685845 | 622 days ago | IN | 0 ETH | 0.00118276 | ||||
Set Max Txn Amou... | 16685780 | 622 days ago | IN | 0 ETH | 0.00108698 | ||||
Set Max Txn Amou... | 16685778 | 622 days ago | IN | 0 ETH | 0.00106194 | ||||
Approve | 16685734 | 622 days ago | IN | 0 ETH | 0.00292149 | ||||
Approve | 16685717 | 622 days ago | IN | 0 ETH | 0.00237091 | ||||
Approve | 16685693 | 622 days ago | IN | 0 ETH | 0.00243422 | ||||
Approve | 16685692 | 622 days ago | IN | 0 ETH | 0.00250098 | ||||
Approve | 16685692 | 622 days ago | IN | 0 ETH | 0.00250098 | ||||
Approve | 16685692 | 622 days ago | IN | 0 ETH | 0.0035845 | ||||
Approve | 16685692 | 622 days ago | IN | 0 ETH | 0.0035845 | ||||
Approve | 16685692 | 622 days ago | IN | 0 ETH | 0.0035845 | ||||
Approve | 16685692 | 622 days ago | IN | 0 ETH | 0.0035845 | ||||
Approve | 16685692 | 622 days ago | IN | 0 ETH | 0.0035845 | ||||
Approve | 16685692 | 622 days ago | IN | 0 ETH | 0.0035845 | ||||
Approve | 16685691 | 622 days ago | IN | 0 ETH | 0.00237039 | ||||
Approve | 16685691 | 622 days ago | IN | 0 ETH | 0.00237039 | ||||
Approve | 16685691 | 622 days ago | IN | 0 ETH | 0.00237039 | ||||
Approve | 16685691 | 622 days ago | IN | 0 ETH | 0.00237039 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16685856 | 622 days ago | 0.00264235 ETH | ||||
16685856 | 622 days ago | 0.00264235 ETH | ||||
16685856 | 622 days ago | 0.00066058 ETH | ||||
16685856 | 622 days ago | 0.00594529 ETH | ||||
16685855 | 622 days ago | 0.00270622 ETH | ||||
16685855 | 622 days ago | 0.00270622 ETH | ||||
16685855 | 622 days ago | 0.00067655 ETH | ||||
16685855 | 622 days ago | 0.006089 ETH | ||||
16685855 | 622 days ago | 0.00277244 ETH | ||||
16685855 | 622 days ago | 0.00277244 ETH | ||||
16685855 | 622 days ago | 0.00069311 ETH | ||||
16685855 | 622 days ago | 0.006238 ETH | ||||
16685855 | 622 days ago | 0.00284114 ETH | ||||
16685855 | 622 days ago | 0.00284114 ETH | ||||
16685855 | 622 days ago | 0.00071028 ETH | ||||
16685855 | 622 days ago | 0.00639256 ETH | ||||
16685855 | 622 days ago | 0.00291243 ETH | ||||
16685855 | 622 days ago | 0.00291243 ETH | ||||
16685855 | 622 days ago | 0.0007281 ETH | ||||
16685855 | 622 days ago | 0.00655297 ETH | ||||
16685855 | 622 days ago | 0.00296713 ETH | ||||
16685855 | 622 days ago | 0.00296713 ETH | ||||
16685855 | 622 days ago | 0.00074178 ETH | ||||
16685855 | 622 days ago | 0.00667606 ETH | ||||
16685855 | 622 days ago | 0.00304327 ETH |
Loading...
Loading
Contract Name:
KENTAINU
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-17 */ // SPDX-License-Identifier: MIT /** Twitter: https://twitter.com/Kentainu_ETH Telegram: https://t.me/KentaInu_verifi */ pragma solidity ^0.8.10; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IERC20Extended { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = payable(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDividendDistributor { function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; function claimDividend(address _user) external; function getPaidEarnings(address shareholder) external view returns (uint256); function getUnpaidEarnings(address shareholder) external view returns (uint256); function totalDistributed() external view returns (uint256); } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address public token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IERC20Extended public USDC = IERC20Extended(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); IDexRouter public router; address[] public shareholders; mapping(address => uint256) public shareholderIndexes; mapping(address => uint256) public shareholderClaims; mapping(address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10**36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 1 * (10**USDC.decimals()); uint256 currentIndex; bool initialized; modifier initializer() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == token); _; } constructor(address router_) { token = msg.sender; router = IDexRouter(router_); } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if (shares[shareholder].amount > 0) { distributeDividend(shareholder); } if (amount > 0 && shares[shareholder].amount == 0) { addShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } function deposit() external payable override onlyToken { uint256 balanceBefore = USDC.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(USDC); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: msg.value }(0, path, address(this), block.timestamp); uint256 amount = USDC.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add( dividendsPerShareAccuracyFactor.mul(amount).div(totalShares) ); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (shouldDistribute(shareholders[currentIndex])) { distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed.add(amount); USDC.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder] .totalRealised .add(amount); shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } } function claimDividend(address _user) external { distributeDividend(_user); } function getPaidEarnings(address shareholder) public view returns (uint256) { return shares[shareholder].totalRealised; } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends( shares[shareholder].amount ); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[ shareholders.length - 1 ]; shareholderIndexes[ shareholders[shareholders.length - 1] ] = shareholderIndexes[shareholder]; shareholders.pop(); } } // main contract contract KENTAINU is IERC20Extended, Ownable { using SafeMath for uint256; string private constant _name = "KENTAINU"; string private constant _symbol = "KENTA"; uint8 private constant _decimals = 18; uint256 private constant _totalSupply = 1 * 10**6 * 10**_decimals; address public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; address private constant DEAD = address(0xdead); address private constant ZERO = address(0); IDexRouter public router; address public pair; address public autoLiquidityReceiver; address public marketingWallet = address(0xDcb31c34Ad4B4c8206a717529705bdddF660C706); uint256 _reflectionBuyFee = 4_00; uint256 _liquidityBuyFee = 1_00; uint256 _reflectionSellFee = 4_00; uint256 _liquiditySellFee = 1_00; uint256 _reflectionFeeCount; uint256 _liquidityFeeCount; uint256 public totalBuyFee = 5_00; uint256 public totalSellFee = 5_00; uint256 public feeDenominator = 100_00; DividendDistributor public distributor; uint256 public distributorGas = 500000; uint256 public maxTxnAmount = _totalSupply / 100; uint256 public maxWalletAmount = _totalSupply / 1000; uint256 public launchedAt; uint256 public snipingTime = 20 seconds; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isLimitExmpt; mapping(address => bool) public isWalletExmpt; mapping(address => bool) public isDividendExempt; mapping(address => bool) public isBot; uint256 public swapThreshold = _totalSupply / 1000; bool public swapEnabled; bool public trading; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } event AutoLiquify(uint256 amountBNB, uint256 amountBOG); constructor() Ownable() { address router_ = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; autoLiquidityReceiver = msg.sender; router = IDexRouter(router_); pair = IDexFactory(router.factory()).createPair( address(this), router.WETH() ); distributor = new DividendDistributor(router_); isFeeExempt[autoLiquidityReceiver] = true; isFeeExempt[address(this)] = true; isDividendExempt[pair] = true; isDividendExempt[address(router)] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isDividendExempt[ZERO] = true; isLimitExmpt[autoLiquidityReceiver] = true; isLimitExmpt[address(this)] = true; isLimitExmpt[address(router)] = true; isWalletExmpt[autoLiquidityReceiver] = true; isWalletExmpt[pair] = true; isWalletExmpt[address(router)] = true; isWalletExmpt[address(this)] = true; _allowances[address(this)][address(router)] = _totalSupply; _allowances[address(this)][address(pair)] = _totalSupply; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function totalSupply() external pure override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[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 approveMax(address spender) external returns (bool) { return approve(spender, _totalSupply); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { if (_allowances[sender][msg.sender] != _totalSupply) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] .sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require(!isBot[sender],"Bot detected"); if (!isLimitExmpt[sender] && !isLimitExmpt[recipient]) { require(amount <= maxTxnAmount, "Max txn limit exceeds"); // trading disable till launch if (!trading) { require( pair != sender && pair != recipient, "Trading is disable" ); } // anti snipper bot if ( block.timestamp < launchedAt + snipingTime && sender != address(router) ) { if (pair == sender) { isBot[recipient] = true; } else if (pair == recipient) { isBot[sender] = true; } } } if (!isWalletExmpt[recipient]) { require( balanceOf(recipient).add(amount) <= maxWalletAmount, "Max Wallet limit exceeds" ); } if (inSwap) { return _basicTransfer(sender, recipient, amount); } if (shouldSwapBack()) { swapBack(); } _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); uint256 amountReceived; if ( isFeeExempt[sender] || isFeeExempt[recipient] || (sender != pair && recipient != pair) ) { amountReceived = amount; } else { uint256 feeAmount; if (sender == pair) { feeAmount = amount.mul(totalBuyFee).div(feeDenominator); amountReceived = amount.sub(feeAmount); takeFee(sender, feeAmount); setBuyAccFee(amount); } else { feeAmount = amount.mul(totalSellFee).div(feeDenominator); amountReceived = amount.sub(feeAmount); takeFee(sender, feeAmount); setSellAccFee(amount); } } _balances[recipient] = _balances[recipient].add(amountReceived); if (!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if (!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer( address sender, address recipient, uint256 amount ) internal returns (bool) { _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function takeFee(address sender, uint256 feeAmount) internal { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } function setBuyAccFee(uint256 _amount) internal { _liquidityFeeCount += _amount.mul(_liquidityBuyFee).div(feeDenominator); _reflectionFeeCount += _amount.mul(_reflectionBuyFee).div( feeDenominator ); } function setSellAccFee(uint256 _amount) internal { _liquidityFeeCount += _amount.mul(_liquiditySellFee).div( feeDenominator ); _reflectionFeeCount += _amount.mul(_reflectionSellFee).div( feeDenominator ); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 totalFee = _liquidityFeeCount.add(_reflectionFeeCount); uint256 amountToLiquify = swapThreshold .mul(_liquidityFeeCount) .div(totalFee) .div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); _allowances[address(this)][address(router)] = _totalSupply; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance.sub(balanceBefore); uint256 totalBNBFee = totalFee.sub(_liquidityFeeCount.div(2)); uint256 amountBNBLiquidity = amountBNB .mul(_liquidityFeeCount) .div(totalBNBFee) .div(2); if (amountToLiquify > 0) { router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } uint256 amountBNBReflection = amountBNB.mul(_reflectionFeeCount).div( totalBNBFee ); if (amountBNBReflection > 0) { uint256 amountreward = amountBNBReflection.div(2); uint256 ethForMarketing = amountBNBReflection.sub(amountreward); payable(marketingWallet).transfer(ethForMarketing); try distributor.deposit{value: amountreward}() {} catch {} } _liquidityFeeCount = 0; _reflectionFeeCount = 0; } function claimDividend() external { distributor.claimDividend(msg.sender); } function getPaidDividend(address shareholder) public view returns (uint256) { return distributor.getPaidEarnings(shareholder); } function getUnpaidDividend(address shareholder) external view returns (uint256) { return distributor.getUnpaidEarnings(shareholder); } function getTotalDistributedDividend() external view returns (uint256) { return distributor.totalDistributed(); } function setIsDividendExempt(address holder, bool exempt) external onlyOwner { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if (exempt) { distributor.setShare(holder, 0); } else { distributor.setShare(holder, _balances[holder]); } } function enableTrading() external onlyOwner { require(!trading, "Already enabled"); trading = true; swapEnabled = true; launchedAt = block.timestamp; } function removeStuckEth(uint256 amount) external onlyOwner { payable(owner()).transfer(amount); } function setMaxTxnAmount(uint256 amount) external onlyOwner { require(amount >= _totalSupply / 1000); maxTxnAmount = amount; } function setMaxWalletAmount(uint256 amount) external onlyOwner { require(amount >= _totalSupply / 1000); maxWalletAmount = amount; } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setIsLimitExempt(address[] memory holders, bool exempt) external onlyOwner { for (uint256 i; i < holders.length; i++) { isLimitExmpt[holders[i]] = exempt; } } function setIsWalletExempt(address holder, bool exempt) external onlyOwner { isWalletExmpt[holder] = exempt; } function removeBots(address[] memory accounts) external onlyOwner { for (uint256 i; i < accounts.length; i++) { isBot[accounts[i]] = false; } } function setBuyFees( uint256 _reflectionFee, uint256 _liquidityFee, uint256 _feeDenominator ) public onlyOwner { _reflectionBuyFee = _reflectionFee; _liquidityBuyFee = _liquidityFee; totalBuyFee = _liquidityFee.add(_reflectionFee); feeDenominator = _feeDenominator; require( totalBuyFee <= feeDenominator.div(10), "Can't be greater than 10%" ); } function setSellFees( uint256 _liquidityFee, uint256 _reflectionFee, uint256 _feeDenominator ) public onlyOwner { _liquiditySellFee = _liquidityFee; _reflectionSellFee = _reflectionFee; totalSellFee = _liquidityFee.add(_reflectionFee); feeDenominator = _feeDenominator; require( totalSellFee <= feeDenominator.div(10), "Can't be greater than 10%" ); } function setFeeReceivers(address _autoLiquidityReceiver) external onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { require(swapThreshold > 0); swapEnabled = _enabled; swapThreshold = _amount; } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external onlyOwner { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external onlyOwner { require(gas < 750000, "Gas must be lower than 750000"); distributorGas = gas; } function multiTransfer(address[] memory accounts, uint256[] memory amounts) external onlyOwner { require(accounts.length == amounts.length,"Invalid"); for (uint256 i; i < accounts.length; i++) { _transferFrom(msg.sender, accounts[i], amounts[i]); } } function updateMarketingWallet(address newMarketingWallet) external onlyOwner{ marketingWallet = newMarketingWallet; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributedDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"trading","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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b031990811673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48179091556005805490911673dcb31c34ad4b4c8206a717529705bdddf660c70617905561019060068190556064600781905560089190915560098190556101f4600c819055600d55612710600e556207a1206010556200008c6012600a620006d3565b6200009b90620f4240620006eb565b620000a791906200070d565b6011556103e8620000bb6012600a620006d3565b620000ca90620f4240620006eb565b620000d691906200070d565b601255601480556103e86012600a620000f09190620006d3565b620000ff90620f4240620006eb565b6200010b91906200070d565b601c553480156200011b57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360048054336001600160a01b031991821617825560028054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b815290519192839263c45a01559280830192602092918290030181865afa158015620001ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f0919062000730565b6001600160a01b031663c9c6539630600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000279919062000730565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed919062000730565b600380546001600160a01b0319166001600160a01b039290921691909117905560405181906200031d90620005b0565b6001600160a01b039091168152602001604051809103906000f0801580156200034a573d6000803e3d6000fd5b50600f80546001600160a01b0319166001600160a01b039283161790556004805482166000908152601760209081526040808320805460ff1990811660019081179092553080865283862080548316841790556003805489168752601a86528487208054841685179055600280548a168852858820805485168617905582885285882080548516861790557f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e8880548516861790557fb75ecc04ed35f89790e98640e901bda41eceff0cb896cf2765fb697680253750805485168617905588548a168852601887528588208054851686179055828852858820805485168617905580548a1688528588208054851686179055975489168752601990955283862080548316841790559354871685528285208054821683179055945490951683528083208054851686179055908252902080549091169091179055620004b16012600a620006d3565b620004c090620f4240620006eb565b3060009081526016602090815260408083206002546001600160a01b03168452909152902055620004f46012600a620006d3565b6200050390620f4240620006eb565b3060009081526016602090815260408083206003546001600160a01b03168452909152902055620005376012600a620006d3565b6200054690620f4240620006eb565b33600081815260156020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005896012600a620006d3565b6200059890620f4240620006eb565b60405190815260200160405180910390a3506200075b565b6111eb806200336c83390190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000615578160001904821115620005f957620005f9620005be565b808516156200060757918102915b93841c9390800290620005d9565b509250929050565b6000826200062e57506001620006cd565b816200063d57506000620006cd565b8160018114620006565760028114620006615762000681565b6001915050620006cd565b60ff841115620006755762000675620005be565b50506001821b620006cd565b5060208310610133831016604e8410600b8410161715620006a6575081810a620006cd565b620006b28383620005d4565b8060001904821115620006c957620006c9620005be565b0290505b92915050565b6000620006e460ff8416836200061d565b9392505050565b6000816000190483118215151615620007085762000708620005be565b500290565b6000826200072b57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200074357600080fd5b81516001600160a01b0381168114620006e457600080fd5b612c01806200076b6000396000f3fe60806040526004361061036f5760003560e01c80637d99c66d116101c6578063bf56b371116100f7578063ec44acf211610095578063f6cfa08a1161006f578063f6cfa08a14610a4e578063f708a64f14610a6e578063f887ea4014610a8e578063fc899bdc14610aae57600080fd5b8063ec44acf2146109fa578063f0fc6bca14610a19578063f2fde38b14610a2e57600080fd5b8063cf46f24c116100d1578063cf46f24c1461095e578063dd62ed3e14610974578063df20fd49146109ba578063e01bb688146109da57600080fd5b8063bf56b37114610908578063bfe109281461091e578063ca33e64c1461093e57600080fd5b806395d89b4111610164578063a8aa1b311161013e578063a8aa1b3114610892578063a9059cbb146108b2578063aa4bde28146108d2578063aacebbe3146108e857600080fd5b806395d89b411461082e5780639d1944f51461085c5780639d9241ec1461087c57600080fd5b8063893c9f2b116101a0578063893c9f2b146107bb57806389a30271146107db5780638a8c523c146107fb5780638da5cb5b1461081057600080fd5b80637d99c66d1461075557806386cb8fb11461076b57806386db0c051461079b57600080fd5b80633f4218e0116102a0578063658d4b7f1161023e57806370a082311161021857806370a08231146106b2578063715018a6146106e857806374010ece146106fd57806375f0a8741461071d57600080fd5b8063658d4b7f146106585780636c3bbfd7146106785780636ddd17131461069857600080fd5b8063540b8a271161027a578063540b8a27146105dc578063571ac8b01461060c57806359b107b91461062c57806360e719621461064257600080fd5b80633f4218e01461055c5780634355855a1461058c57806349bc3feb146105bc57600080fd5b80631961cee21161030d57806327a14fc2116102e757806327a14fc2146104d05780632d48e896146104f0578063313ce567146105105780633bbac5791461052c57600080fd5b80631961cee21461047b5780631e89d5451461049057806323b872dd146104b057600080fd5b80630d075d9c116103495780630d075d9c1461040e5780630f683e9014610430578063180b0d7e1461045057806318160ddd1461046657600080fd5b80630445b6671461037b57806306fdde03146103a4578063095ea7b3146103de57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610391601c5481565b6040519081526020015b60405180910390f35b3480156103b057600080fd5b506040805180820190915260088152674b454e5441494e5560c01b60208201525b60405161039b91906124fe565b3480156103ea57600080fd5b506103fe6103f936600461256b565b610ace565b604051901515815260200161039b565b34801561041a57600080fd5b5061042e610429366004612597565b610b3b565b005b34801561043c57600080fd5b5061042e61044b366004612597565b610be7565b34801561045c57600080fd5b50610391600e5481565b34801561047257600080fd5b50610391610c85565b34801561048757600080fd5b50610391610ca5565b34801561049c57600080fd5b5061042e6104ab3660046126a2565b610d13565b3480156104bc57600080fd5b506103fe6104cb36600461275d565b610dd4565b3480156104dc57600080fd5b5061042e6104eb36600461279e565b610ead565b3480156104fc57600080fd5b5061042e61050b3660046127b7565b610f0e565b34801561051c57600080fd5b506040516012815260200161039b565b34801561053857600080fd5b506103fe6105473660046127d9565b601b6020526000908152604090205460ff1681565b34801561056857600080fd5b506103fe6105773660046127d9565b60176020526000908152604090205460ff1681565b34801561059857600080fd5b506103fe6105a73660046127d9565b601a6020526000908152604090205460ff1681565b3480156105c857600080fd5b506103916105d73660046127d9565b610fa2565b3480156105e857600080fd5b506103fe6105f73660046127d9565b60186020526000908152604090205460ff1681565b34801561061857600080fd5b506103fe6106273660046127d9565b611012565b34801561063857600080fd5b50610391600c5481565b34801561064e57600080fd5b5061039160105481565b34801561066457600080fd5b5061042e61067336600461280b565b611031565b34801561068457600080fd5b5061042e610693366004612840565b611086565b3480156106a457600080fd5b50601d546103fe9060ff1681565b3480156106be57600080fd5b506103916106cd3660046127d9565b6001600160a01b031660009081526015602052604090205490565b3480156106f457600080fd5b5061042e61111c565b34801561070957600080fd5b5061042e61071836600461279e565b611190565b34801561072957600080fd5b5060055461073d906001600160a01b031681565b6040516001600160a01b03909116815260200161039b565b34801561076157600080fd5b5061039160145481565b34801561077757600080fd5b506103fe6107863660046127d9565b60196020526000908152604090205460ff1681565b3480156107a757600080fd5b506103916107b63660046127d9565b6111f1565b3480156107c757600080fd5b5061042e6107d636600461279e565b611224565b3480156107e757600080fd5b5060015461073d906001600160a01b031681565b34801561080757600080fd5b5061042e611287565b34801561081c57600080fd5b506000546001600160a01b031661073d565b34801561083a57600080fd5b506040805180820190915260058152644b454e544160d81b60208201526103d1565b34801561086857600080fd5b5061042e61087736600461279e565b611310565b34801561088857600080fd5b50610391600d5481565b34801561089e57600080fd5b5060035461073d906001600160a01b031681565b3480156108be57600080fd5b506103fe6108cd36600461256b565b611391565b3480156108de57600080fd5b5061039160125481565b3480156108f457600080fd5b5061042e6109033660046127d9565b61139e565b34801561091457600080fd5b5061039160135481565b34801561092a57600080fd5b50600f5461073d906001600160a01b031681565b34801561094a57600080fd5b5060045461073d906001600160a01b031681565b34801561096a57600080fd5b5061039160115481565b34801561098057600080fd5b5061039161098f36600461287d565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b3480156109c657600080fd5b5061042e6109d53660046128b6565b6113ea565b3480156109e657600080fd5b5061042e6109f53660046127d9565b61143a565b348015610a0657600080fd5b50601d546103fe90610100900460ff1681565b348015610a2557600080fd5b5061042e611486565b348015610a3a57600080fd5b5061042e610a493660046127d9565b6114e5565b348015610a5a57600080fd5b5061042e610a693660046128d2565b6115cf565b348015610a7a57600080fd5b5061042e610a8936600461280b565b611660565b348015610a9a57600080fd5b5060025461073d906001600160a01b031681565b348015610aba57600080fd5b5061042e610ac936600461280b565b611769565b3360008181526016602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b299086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b6e5760405162461bcd60e51b8152600401610b6590612917565b60405180910390fd5b60068390556007829055610b8282846117be565b600c55600e819055610b9581600a6117ca565b600c541115610be25760405162461bcd60e51b815260206004820152601960248201527843616e27742062652067726561746572207468616e2031302560381b6044820152606401610b65565b505050565b6000546001600160a01b03163314610c115760405162461bcd60e51b8152600401610b6590612917565b60098390556008829055610c2583836117be565b600d55600e819055610c3881600a6117ca565b600d541115610be25760405162461bcd60e51b815260206004820152601960248201527843616e27742062652067726561746572207468616e2031302560381b6044820152606401610b65565b6000610c936012600a612a46565b610ca090620f4240612a55565b905090565b600f546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190612a74565b6000546001600160a01b03163314610d3d5760405162461bcd60e51b8152600401610b6590612917565b8051825114610d785760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606401610b65565b60005b8251811015610be257610dc133848381518110610d9a57610d9a612a8d565b6020026020010151848481518110610db457610db4612a8d565b60200260200101516117d6565b5080610dcc81612aa3565b915050610d7b565b6000610de26012600a612a46565b610def90620f4240612a55565b6001600160a01b038516600090815260166020908152604080832033845290915290205414610e9857604080518082018252601680825275496e73756666696369656e7420416c6c6f77616e636560501b6020808401919091526001600160a01b038816600090815291815283822033835290529190912054610e73918490611e45565b6001600160a01b03851660009081526016602090815260408083203384529091529020555b610ea38484846117d6565b90505b9392505050565b6000546001600160a01b03163314610ed75760405162461bcd60e51b8152600401610b6590612917565b6103e8610ee66012600a612a46565b610ef390620f4240612a55565b610efd9190612abe565b811015610f0957600080fd5b601255565b6000546001600160a01b03163314610f385760405162461bcd60e51b8152600401610b6590612917565b600f546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610f8657600080fd5b505af1158015610f9a573d6000803e3d6000fd5b505050505050565b600f54604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b359190612a74565b6000610b35826110246012600a612a46565b6103f990620f4240612a55565b6000546001600160a01b0316331461105b5760405162461bcd60e51b8152600401610b6590612917565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110b05760405162461bcd60e51b8152600401610b6590612917565b60005b8151811015611118576000601b60008484815181106110d4576110d4612a8d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061111081612aa3565b9150506110b3565b5050565b6000546001600160a01b031633146111465760405162461bcd60e51b8152600401610b6590612917565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111ba5760405162461bcd60e51b8152600401610b6590612917565b6103e86111c96012600a612a46565b6111d690620f4240612a55565b6111e09190612abe565b8110156111ec57600080fd5b601155565b600f5460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401610fd1565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610b6590612917565b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015611118573d6000803e3d6000fd5b6000546001600160a01b031633146112b15760405162461bcd60e51b8152600401610b6590612917565b601d54610100900460ff16156112fb5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610b65565b601d805461ffff191661010117905542601355565b6000546001600160a01b0316331461133a5760405162461bcd60e51b8152600401610b6590612917565b620b71b0811061138c5760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e203735303030300000006044820152606401610b65565b601055565b6000610ea63384846117d6565b6000546001600160a01b031633146113c85760405162461bcd60e51b8152600401610b6590612917565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114145760405162461bcd60e51b8152600401610b6590612917565b6000601c541161142357600080fd5b601d805460ff191692151592909217909155601c55565b6000546001600160a01b031633146114645760405162461bcd60e51b8152600401610b6590612917565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600f54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b1580156114cb57600080fd5b505af11580156114df573d6000803e3d6000fd5b50505050565b6000546001600160a01b0316331461150f5760405162461bcd60e51b8152600401610b6590612917565b6001600160a01b0381166115745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b65565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115f95760405162461bcd60e51b8152600401610b6590612917565b60005b8251811015610be257816018600085848151811061161c5761161c612a8d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061165881612aa3565b9150506115fc565b6000546001600160a01b0316331461168a5760405162461bcd60e51b8152600401610b6590612917565b6001600160a01b03821630148015906116b157506003546001600160a01b03838116911614155b6116ba57600080fd5b6001600160a01b0382166000908152601a60205260409020805460ff1916821580159190911790915561172057600f54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610f6c565b600f546001600160a01b0383811660008181526015602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610f6c565b6000546001600160a01b031633146117935760405162461bcd60e51b8152600401610b6590612917565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6000610ea68284612ae0565b6000610ea68284612abe565b6001600160a01b0383166000908152601b602052604081205460ff161561182e5760405162461bcd60e51b815260206004820152600c60248201526b109bdd0819195d1958dd195960a21b6044820152606401610b65565b6001600160a01b03841660009081526018602052604090205460ff1615801561187057506001600160a01b03831660009081526018602052604090205460ff16155b156119e4576011548211156118bf5760405162461bcd60e51b81526020600482015260156024820152744d61782074786e206c696d6974206578636565647360581b6044820152606401610b65565b601d54610100900460ff1661193b576003546001600160a01b038581169116148015906118fa57506003546001600160a01b03848116911614155b61193b5760405162461bcd60e51b815260206004820152601260248201527154726164696e672069732064697361626c6560701b6044820152606401610b65565b60145460135461194b9190612ae0565b4210801561196757506002546001600160a01b03858116911614155b156119e4576003546001600160a01b03858116911614156119aa576001600160a01b0383166000908152601b60205260409020805460ff191660011790556119e4565b6003546001600160a01b03848116911614156119e4576001600160a01b0384166000908152601b60205260409020805460ff191660011790555b6001600160a01b03831660009081526019602052604090205460ff16611a7e57601254611a3083611a2a866001600160a01b031660009081526015602052604090205490565b906117be565b1115611a7e5760405162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c6574206c696d6974206578636565647300000000000000006044820152606401610b65565b601d5462010000900460ff1615611aa157611a9a848484611e71565b9050610ea6565b611aa9611f57565b15611ab657611ab6611fac565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260159091529190912054611b08918490611e45565b6001600160a01b038516600090815260156020908152604080832093909355601790529081205460ff1680611b5557506001600160a01b03841660009081526017602052604090205460ff165b80611b8757506003546001600160a01b03868116911614801590611b8757506003546001600160a01b03858116911614155b15611b93575081611c31565b6003546000906001600160a01b0387811691161415611bf357611bcd600e54611bc7600c54876123c890919063ffffffff16565b906117ca565b9050611bd984826123d4565b9150611be586826123e0565b611bee84612457565b611c2f565b611c0e600e54611bc7600d54876123c890919063ffffffff16565b9050611c1a84826123d4565b9150611c2686826123e0565b611c2f846124b7565b505b6001600160a01b038416600090815260156020526040902054611c5490826117be565b6001600160a01b038086166000908152601560209081526040808320949094559188168152601a909152205460ff16611cf857600f546001600160a01b0386811660008181526015602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611ce557600080fd5b505af1925050508015611cf6575060015b505b6001600160a01b0384166000908152601a602052604090205460ff16611d8957600f546001600160a01b0385811660008181526015602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611d7657600080fd5b505af1925050508015611d87575060015b505b600f546010546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611dc19160040190815260200190565b600060405180830381600087803b158015611ddb57600080fd5b505af1925050508015611dec575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e3291815260200190565b60405180910390a3506001949350505050565b60008184841115611e695760405162461bcd60e51b8152600401610b6591906124fe565b505050900390565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601590915291822054611ec2918490611e45565b6001600160a01b038086166000908152601560205260408082209390935590851681522054611ef190836117be565b6001600160a01b0380851660008181526015602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f459086815260200190565b60405180910390a35060019392505050565b6003546000906001600160a01b03163314801590611f7e5750601d5462010000900460ff16155b8015611f8c5750601d5460ff165b8015610ca0575050601c5430600090815260156020526040902054101590565b601d805462ff0000191662010000179055600a54600b54600091611fd091906117be565b90506000611ff46002611bc784611bc7600b54601c546123c890919063ffffffff16565b9050600061200d82601c546123d490919063ffffffff16565b905061201b6012600a612a46565b61202890620f4240612a55565b306000908152601660209081526040808320600280546001600160a01b0316855290835281842094909455805184815260608101825292939183019080368337019050509050308160008151811061208257612082612a8d565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156120db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ff9190612af8565b8160018151811061211257612112612a8d565b6001600160a01b03928316602091820292909201015260025460405163791ac94760e01b81524792919091169063791ac9479061215c908690600090879030904290600401612b15565b600060405180830381600087803b15801561217657600080fd5b505af115801561218a573d6000803e3d6000fd5b5050505060006121a382476123d490919063ffffffff16565b905060006121c76121c06002600b546117ca90919063ffffffff16565b88906123d4565b905060006121e96002611bc784611bc7600b54886123c890919063ffffffff16565b905086156122c7576002546004805460405163f305d71960e01b81523092810192909252602482018a905260006044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015612265573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061228a9190612b86565b505060408051838152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b60006122e283611bc7600a54876123c890919063ffffffff16565b905080156123a75760006122f78260026117ca565b9050600061230583836123d4565b6005546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612340573d6000803e3d6000fd5b50600f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561239157600080fd5b505af1935050505080156123a3575060015b5050505b50506000600b819055600a555050601d805462ff0000191690555050505050565b6000610ea68284612a55565b6000610ea68284612bb4565b306000908152601560205260409020546123fa90826117be565b30600081815260156020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061244b9085815260200190565b60405180910390a35050565b612472600e54611bc7600754846123c890919063ffffffff16565b600b60008282546124839190612ae0565b9091555050600e5460065461249e9190611bc79084906123c8565b600a60008282546124af9190612ae0565b909155505050565b6124d2600e54611bc7600954846123c890919063ffffffff16565b600b60008282546124e39190612ae0565b9091555050600e5460085461249e9190611bc79084906123c8565b600060208083528351808285015260005b8181101561252b5785810183015185820160400152820161250f565b8181111561253d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461256857600080fd5b50565b6000806040838503121561257e57600080fd5b823561258981612553565b946020939093013593505050565b6000806000606084860312156125ac57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612602576126026125c3565b604052919050565b600067ffffffffffffffff821115612624576126246125c3565b5060051b60200190565b600082601f83011261263f57600080fd5b8135602061265461264f8361260a565b6125d9565b82815260059290921b8401810191818101908684111561267357600080fd5b8286015b8481101561269757803561268a81612553565b8352918301918301612677565b509695505050505050565b600080604083850312156126b557600080fd5b823567ffffffffffffffff808211156126cd57600080fd5b6126d98683870161262e565b93506020915081850135818111156126f057600080fd5b85019050601f8101861361270357600080fd5b803561271161264f8261260a565b81815260059190911b8201830190838101908883111561273057600080fd5b928401925b8284101561274e57833582529284019290840190612735565b80955050505050509250929050565b60008060006060848603121561277257600080fd5b833561277d81612553565b9250602084013561278d81612553565b929592945050506040919091013590565b6000602082840312156127b057600080fd5b5035919050565b600080604083850312156127ca57600080fd5b50508035926020909101359150565b6000602082840312156127eb57600080fd5b8135610ea681612553565b8035801515811461280657600080fd5b919050565b6000806040838503121561281e57600080fd5b823561282981612553565b9150612837602084016127f6565b90509250929050565b60006020828403121561285257600080fd5b813567ffffffffffffffff81111561286957600080fd5b6128758482850161262e565b949350505050565b6000806040838503121561289057600080fd5b823561289b81612553565b915060208301356128ab81612553565b809150509250929050565b600080604083850312156128c957600080fd5b612589836127f6565b600080604083850312156128e557600080fd5b823567ffffffffffffffff8111156128fc57600080fd5b6129088582860161262e565b925050612837602084016127f6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561299d5781600019048211156129835761298361294c565b8085161561299057918102915b93841c9390800290612967565b509250929050565b6000826129b457506001610b35565b816129c157506000610b35565b81600181146129d757600281146129e1576129fd565b6001915050610b35565b60ff8411156129f2576129f261294c565b50506001821b610b35565b5060208310610133831016604e8410600b8410161715612a20575081810a610b35565b612a2a8383612962565b8060001904821115612a3e57612a3e61294c565b029392505050565b6000610ea660ff8416836129a5565b6000816000190483118215151615612a6f57612a6f61294c565b500290565b600060208284031215612a8657600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612ab757612ab761294c565b5060010190565b600082612adb57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612af357612af361294c565b500190565b600060208284031215612b0a57600080fd5b8151610ea681612553565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b655784516001600160a01b031683529383019391830191600101612b40565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b9b57600080fd5b8351925060208401519150604084015190509250925092565b600082821015612bc657612bc661294c565b50039056fea2646970667358221220e310694c6683960630bc3fdb88e0a16ecd6bf8660daeed61d1fb66c97a02dedb64736f6c634300080a003360806040819052600180546001600160a01b03191673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489081179091556ec097ce7bc90715b34b9f1000000000600b55610e10600c5563313ce56760e01b82529063313ce56790608490602090600481865afa15801562000077573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009d91906200011e565b620000aa90600a6200025f565b620000b790600162000270565b600d55348015620000c757600080fd5b50604051620011eb380380620011eb833981016040819052620000ea9162000292565b60008054336001600160a01b031991821617909155600280549091166001600160a01b0392909216919091179055620002bd565b6000602082840312156200013157600080fd5b815160ff811681146200014357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001a15781600019048211156200018557620001856200014a565b808516156200019357918102915b93841c939080029062000165565b509250929050565b600082620001ba5750600162000259565b81620001c95750600062000259565b8160018114620001e25760028114620001ed576200020d565b600191505062000259565b60ff8411156200020157620002016200014a565b50506001821b62000259565b5060208310610133831016604e8410600b841016171562000232575081810a62000259565b6200023e838362000160565b80600019048211156200025557620002556200014a565b0290505b92915050565b60006200014360ff841683620001a9565b60008160001904831182151516156200028d576200028d6200014a565b500290565b600060208284031215620002a557600080fd5b81516001600160a01b03811681146200014357600080fd5b610f1e80620002cd6000396000f3fe60806040526004361061012a5760003560e01c8063997664d7116100ab578063e2d2e2191161006f578063e2d2e21914610366578063efca2eed1461037c578063f887ea4014610392578063fc0c546a146103b2578063ffb2c479146103d2578063ffd49c84146103f257600080fd5b8063997664d7146102a4578063ab377daa146102ba578063ce7c2ac2146102da578063d0e30db014610331578063d4fda1f21461033957600080fd5b80633a98ef39116100f25780633a98ef39146101da5780634fab0ae8146101f057806352f481581461020657806366817df51461023f57806389a302711461026c57600080fd5b806311ce023d1461012f57806314b6ca961461015857806315f7e05e1461017a57806328fd31981461019a5780632d48e896146101ba575b600080fd5b34801561013b57600080fd5b50610145600b5481565b6040519081526020015b60405180910390f35b34801561016457600080fd5b50610178610173366004610cd5565b610408565b005b34801561018657600080fd5b50610178610195366004610d01565b610580565b3480156101a657600080fd5b506101456101b5366004610d01565b61058c565b3480156101c657600080fd5b506101786101d5366004610d1e565b610615565b3480156101e657600080fd5b5061014560075481565b3480156101fc57600080fd5b50610145600d5481565b34801561021257600080fd5b50610145610221366004610d01565b6001600160a01b031660009081526006602052604090206002015490565b34801561024b57600080fd5b5061014561025a366004610d01565b60056020526000908152604090205481565b34801561027857600080fd5b5060015461028c906001600160a01b031681565b6040516001600160a01b03909116815260200161014f565b3480156102b057600080fd5b5061014560085481565b3480156102c657600080fd5b5061028c6102d5366004610d40565b610637565b3480156102e657600080fd5b506103166102f5366004610d01565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161014f565b610178610661565b34801561034557600080fd5b50610145610354366004610d01565b60046020526000908152604090205481565b34801561037257600080fd5b50610145600a5481565b34801561038857600080fd5b5061014560095481565b34801561039e57600080fd5b5060025461028c906001600160a01b031681565b3480156103be57600080fd5b5060005461028c906001600160a01b031681565b3480156103de57600080fd5b506101786103ed366004610d40565b6108f0565b3480156103fe57600080fd5b50610145600c5481565b6000546001600160a01b0316331461041f57600080fd5b6001600160a01b0382166000908152600660205260409020541561044657610446826109f0565b60008111801561046c57506001600160a01b038216600090815260066020526040902054155b156104d257600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610505565b801580156104f757506001600160a01b03821660009081526006602052604090205415155b156105055761050582610b0c565b6001600160a01b03821660009081526006602052604090205460075461053691839161053091610c21565b90610c34565b6007556001600160a01b038216600090815260066020526040902081905561055d81610c40565b6001600160a01b0390921660009081526006602052604090206001019190915550565b610589816109f0565b50565b6001600160a01b0381166000908152600660205260408120546105b157506000919050565b6001600160a01b0382166000908152600660205260408120546105d390610c40565b6001600160a01b038416600090815260066020526040902060010154909150808211610603575060009392505050565b61060d8282610c21565b949350505050565b6000546001600160a01b0316331461062c57600080fd5b600c91909155600d55565b6003818154811061064757600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461067857600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156106c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e59190610d59565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190610d72565b8160008151811061078b5761078b610d8f565b6001600160a01b03928316602091820292909201015260018054835192169183919081106107bb576107bb610d8f565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de9590349061080190600090869030904290600401610da5565b6000604051808303818588803b15801561081a57600080fd5b505af115801561082e573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506108ae93508692506001600160a01b03909116906370a0823190602401602060405180830381865afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a89190610d59565b90610c21565b6008549091506108be9082610c34565b600855600754600b546108e8916108df916108d99085610c63565b90610c6f565b600a5490610c34565b600a55505050565b6000546001600160a01b0316331461090757600080fd5b60035480610913575050565b6000805a905060005b848310801561092a57508381105b156109e95783600e541061093e576000600e555b6109706003600e548154811061095657610956610d8f565b6000918252602090912001546001600160a01b0316610c7b565b156109a7576109a76003600e548154811061098d5761098d610d8f565b6000918252602090912001546001600160a01b03166109f0565b6109bc6109b55a8490610c21565b8490610c34565b92505a600e805491935060006109d183610e25565b919050555080806109e190610e25565b91505061091c565b5050505050565b6001600160a01b038116600090815260066020526040902054610a105750565b6000610a1b8261058c565b90508015610b0857600954610a309082610c34565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa9190610e40565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610ade9082610c34565b6001600160a01b038316600090815260066020526040902060028101919091555461055d90610c40565b5050565b60038054610b1c90600190610e62565b81548110610b2c57610b2c610d8f565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b6a57610b6a610d8f565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610bb690600190610e62565b81548110610bc657610bc6610d8f565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610bfc57610bfc610e79565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c2d8284610e62565b9392505050565b6000610c2d8284610e8f565b6000610c5d600b546108d9600a5485610c6390919063ffffffff16565b92915050565b6000610c2d8284610ea7565b6000610c2d8284610ec6565b600c546001600160a01b03821660009081526005602052604081205490914291610ca59190610e8f565b108015610c5d5750600d54610cb98361058c565b1192915050565b6001600160a01b038116811461058957600080fd5b60008060408385031215610ce857600080fd5b8235610cf381610cc0565b946020939093013593505050565b600060208284031215610d1357600080fd5b8135610c2d81610cc0565b60008060408385031215610d3157600080fd5b50508035926020909101359150565b600060208284031215610d5257600080fd5b5035919050565b600060208284031215610d6b57600080fd5b5051919050565b600060208284031215610d8457600080fd5b8151610c2d81610cc0565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610def5784516001600160a01b031683529383019391830191600101610dca565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415610e3957610e39610e0f565b5060010190565b600060208284031215610e5257600080fd5b81518015158114610c2d57600080fd5b600082821015610e7457610e74610e0f565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610ea257610ea2610e0f565b500190565b6000816000190483118215151615610ec157610ec1610e0f565b500290565b600082610ee357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220cddb26f1442e9410d1f3d52e3220e5273169a3f6de60edf0bceaf2727de29bad64736f6c634300080a0033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c80637d99c66d116101c6578063bf56b371116100f7578063ec44acf211610095578063f6cfa08a1161006f578063f6cfa08a14610a4e578063f708a64f14610a6e578063f887ea4014610a8e578063fc899bdc14610aae57600080fd5b8063ec44acf2146109fa578063f0fc6bca14610a19578063f2fde38b14610a2e57600080fd5b8063cf46f24c116100d1578063cf46f24c1461095e578063dd62ed3e14610974578063df20fd49146109ba578063e01bb688146109da57600080fd5b8063bf56b37114610908578063bfe109281461091e578063ca33e64c1461093e57600080fd5b806395d89b4111610164578063a8aa1b311161013e578063a8aa1b3114610892578063a9059cbb146108b2578063aa4bde28146108d2578063aacebbe3146108e857600080fd5b806395d89b411461082e5780639d1944f51461085c5780639d9241ec1461087c57600080fd5b8063893c9f2b116101a0578063893c9f2b146107bb57806389a30271146107db5780638a8c523c146107fb5780638da5cb5b1461081057600080fd5b80637d99c66d1461075557806386cb8fb11461076b57806386db0c051461079b57600080fd5b80633f4218e0116102a0578063658d4b7f1161023e57806370a082311161021857806370a08231146106b2578063715018a6146106e857806374010ece146106fd57806375f0a8741461071d57600080fd5b8063658d4b7f146106585780636c3bbfd7146106785780636ddd17131461069857600080fd5b8063540b8a271161027a578063540b8a27146105dc578063571ac8b01461060c57806359b107b91461062c57806360e719621461064257600080fd5b80633f4218e01461055c5780634355855a1461058c57806349bc3feb146105bc57600080fd5b80631961cee21161030d57806327a14fc2116102e757806327a14fc2146104d05780632d48e896146104f0578063313ce567146105105780633bbac5791461052c57600080fd5b80631961cee21461047b5780631e89d5451461049057806323b872dd146104b057600080fd5b80630d075d9c116103495780630d075d9c1461040e5780630f683e9014610430578063180b0d7e1461045057806318160ddd1461046657600080fd5b80630445b6671461037b57806306fdde03146103a4578063095ea7b3146103de57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610391601c5481565b6040519081526020015b60405180910390f35b3480156103b057600080fd5b506040805180820190915260088152674b454e5441494e5560c01b60208201525b60405161039b91906124fe565b3480156103ea57600080fd5b506103fe6103f936600461256b565b610ace565b604051901515815260200161039b565b34801561041a57600080fd5b5061042e610429366004612597565b610b3b565b005b34801561043c57600080fd5b5061042e61044b366004612597565b610be7565b34801561045c57600080fd5b50610391600e5481565b34801561047257600080fd5b50610391610c85565b34801561048757600080fd5b50610391610ca5565b34801561049c57600080fd5b5061042e6104ab3660046126a2565b610d13565b3480156104bc57600080fd5b506103fe6104cb36600461275d565b610dd4565b3480156104dc57600080fd5b5061042e6104eb36600461279e565b610ead565b3480156104fc57600080fd5b5061042e61050b3660046127b7565b610f0e565b34801561051c57600080fd5b506040516012815260200161039b565b34801561053857600080fd5b506103fe6105473660046127d9565b601b6020526000908152604090205460ff1681565b34801561056857600080fd5b506103fe6105773660046127d9565b60176020526000908152604090205460ff1681565b34801561059857600080fd5b506103fe6105a73660046127d9565b601a6020526000908152604090205460ff1681565b3480156105c857600080fd5b506103916105d73660046127d9565b610fa2565b3480156105e857600080fd5b506103fe6105f73660046127d9565b60186020526000908152604090205460ff1681565b34801561061857600080fd5b506103fe6106273660046127d9565b611012565b34801561063857600080fd5b50610391600c5481565b34801561064e57600080fd5b5061039160105481565b34801561066457600080fd5b5061042e61067336600461280b565b611031565b34801561068457600080fd5b5061042e610693366004612840565b611086565b3480156106a457600080fd5b50601d546103fe9060ff1681565b3480156106be57600080fd5b506103916106cd3660046127d9565b6001600160a01b031660009081526015602052604090205490565b3480156106f457600080fd5b5061042e61111c565b34801561070957600080fd5b5061042e61071836600461279e565b611190565b34801561072957600080fd5b5060055461073d906001600160a01b031681565b6040516001600160a01b03909116815260200161039b565b34801561076157600080fd5b5061039160145481565b34801561077757600080fd5b506103fe6107863660046127d9565b60196020526000908152604090205460ff1681565b3480156107a757600080fd5b506103916107b63660046127d9565b6111f1565b3480156107c757600080fd5b5061042e6107d636600461279e565b611224565b3480156107e757600080fd5b5060015461073d906001600160a01b031681565b34801561080757600080fd5b5061042e611287565b34801561081c57600080fd5b506000546001600160a01b031661073d565b34801561083a57600080fd5b506040805180820190915260058152644b454e544160d81b60208201526103d1565b34801561086857600080fd5b5061042e61087736600461279e565b611310565b34801561088857600080fd5b50610391600d5481565b34801561089e57600080fd5b5060035461073d906001600160a01b031681565b3480156108be57600080fd5b506103fe6108cd36600461256b565b611391565b3480156108de57600080fd5b5061039160125481565b3480156108f457600080fd5b5061042e6109033660046127d9565b61139e565b34801561091457600080fd5b5061039160135481565b34801561092a57600080fd5b50600f5461073d906001600160a01b031681565b34801561094a57600080fd5b5060045461073d906001600160a01b031681565b34801561096a57600080fd5b5061039160115481565b34801561098057600080fd5b5061039161098f36600461287d565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b3480156109c657600080fd5b5061042e6109d53660046128b6565b6113ea565b3480156109e657600080fd5b5061042e6109f53660046127d9565b61143a565b348015610a0657600080fd5b50601d546103fe90610100900460ff1681565b348015610a2557600080fd5b5061042e611486565b348015610a3a57600080fd5b5061042e610a493660046127d9565b6114e5565b348015610a5a57600080fd5b5061042e610a693660046128d2565b6115cf565b348015610a7a57600080fd5b5061042e610a8936600461280b565b611660565b348015610a9a57600080fd5b5060025461073d906001600160a01b031681565b348015610aba57600080fd5b5061042e610ac936600461280b565b611769565b3360008181526016602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b299086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b6e5760405162461bcd60e51b8152600401610b6590612917565b60405180910390fd5b60068390556007829055610b8282846117be565b600c55600e819055610b9581600a6117ca565b600c541115610be25760405162461bcd60e51b815260206004820152601960248201527843616e27742062652067726561746572207468616e2031302560381b6044820152606401610b65565b505050565b6000546001600160a01b03163314610c115760405162461bcd60e51b8152600401610b6590612917565b60098390556008829055610c2583836117be565b600d55600e819055610c3881600a6117ca565b600d541115610be25760405162461bcd60e51b815260206004820152601960248201527843616e27742062652067726561746572207468616e2031302560381b6044820152606401610b65565b6000610c936012600a612a46565b610ca090620f4240612a55565b905090565b600f546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190612a74565b6000546001600160a01b03163314610d3d5760405162461bcd60e51b8152600401610b6590612917565b8051825114610d785760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606401610b65565b60005b8251811015610be257610dc133848381518110610d9a57610d9a612a8d565b6020026020010151848481518110610db457610db4612a8d565b60200260200101516117d6565b5080610dcc81612aa3565b915050610d7b565b6000610de26012600a612a46565b610def90620f4240612a55565b6001600160a01b038516600090815260166020908152604080832033845290915290205414610e9857604080518082018252601680825275496e73756666696369656e7420416c6c6f77616e636560501b6020808401919091526001600160a01b038816600090815291815283822033835290529190912054610e73918490611e45565b6001600160a01b03851660009081526016602090815260408083203384529091529020555b610ea38484846117d6565b90505b9392505050565b6000546001600160a01b03163314610ed75760405162461bcd60e51b8152600401610b6590612917565b6103e8610ee66012600a612a46565b610ef390620f4240612a55565b610efd9190612abe565b811015610f0957600080fd5b601255565b6000546001600160a01b03163314610f385760405162461bcd60e51b8152600401610b6590612917565b600f546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610f8657600080fd5b505af1158015610f9a573d6000803e3d6000fd5b505050505050565b600f54604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b359190612a74565b6000610b35826110246012600a612a46565b6103f990620f4240612a55565b6000546001600160a01b0316331461105b5760405162461bcd60e51b8152600401610b6590612917565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110b05760405162461bcd60e51b8152600401610b6590612917565b60005b8151811015611118576000601b60008484815181106110d4576110d4612a8d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061111081612aa3565b9150506110b3565b5050565b6000546001600160a01b031633146111465760405162461bcd60e51b8152600401610b6590612917565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111ba5760405162461bcd60e51b8152600401610b6590612917565b6103e86111c96012600a612a46565b6111d690620f4240612a55565b6111e09190612abe565b8110156111ec57600080fd5b601155565b600f5460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401610fd1565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610b6590612917565b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015611118573d6000803e3d6000fd5b6000546001600160a01b031633146112b15760405162461bcd60e51b8152600401610b6590612917565b601d54610100900460ff16156112fb5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610b65565b601d805461ffff191661010117905542601355565b6000546001600160a01b0316331461133a5760405162461bcd60e51b8152600401610b6590612917565b620b71b0811061138c5760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e203735303030300000006044820152606401610b65565b601055565b6000610ea63384846117d6565b6000546001600160a01b031633146113c85760405162461bcd60e51b8152600401610b6590612917565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114145760405162461bcd60e51b8152600401610b6590612917565b6000601c541161142357600080fd5b601d805460ff191692151592909217909155601c55565b6000546001600160a01b031633146114645760405162461bcd60e51b8152600401610b6590612917565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600f54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b1580156114cb57600080fd5b505af11580156114df573d6000803e3d6000fd5b50505050565b6000546001600160a01b0316331461150f5760405162461bcd60e51b8152600401610b6590612917565b6001600160a01b0381166115745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b65565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115f95760405162461bcd60e51b8152600401610b6590612917565b60005b8251811015610be257816018600085848151811061161c5761161c612a8d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061165881612aa3565b9150506115fc565b6000546001600160a01b0316331461168a5760405162461bcd60e51b8152600401610b6590612917565b6001600160a01b03821630148015906116b157506003546001600160a01b03838116911614155b6116ba57600080fd5b6001600160a01b0382166000908152601a60205260409020805460ff1916821580159190911790915561172057600f54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610f6c565b600f546001600160a01b0383811660008181526015602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610f6c565b6000546001600160a01b031633146117935760405162461bcd60e51b8152600401610b6590612917565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6000610ea68284612ae0565b6000610ea68284612abe565b6001600160a01b0383166000908152601b602052604081205460ff161561182e5760405162461bcd60e51b815260206004820152600c60248201526b109bdd0819195d1958dd195960a21b6044820152606401610b65565b6001600160a01b03841660009081526018602052604090205460ff1615801561187057506001600160a01b03831660009081526018602052604090205460ff16155b156119e4576011548211156118bf5760405162461bcd60e51b81526020600482015260156024820152744d61782074786e206c696d6974206578636565647360581b6044820152606401610b65565b601d54610100900460ff1661193b576003546001600160a01b038581169116148015906118fa57506003546001600160a01b03848116911614155b61193b5760405162461bcd60e51b815260206004820152601260248201527154726164696e672069732064697361626c6560701b6044820152606401610b65565b60145460135461194b9190612ae0565b4210801561196757506002546001600160a01b03858116911614155b156119e4576003546001600160a01b03858116911614156119aa576001600160a01b0383166000908152601b60205260409020805460ff191660011790556119e4565b6003546001600160a01b03848116911614156119e4576001600160a01b0384166000908152601b60205260409020805460ff191660011790555b6001600160a01b03831660009081526019602052604090205460ff16611a7e57601254611a3083611a2a866001600160a01b031660009081526015602052604090205490565b906117be565b1115611a7e5760405162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c6574206c696d6974206578636565647300000000000000006044820152606401610b65565b601d5462010000900460ff1615611aa157611a9a848484611e71565b9050610ea6565b611aa9611f57565b15611ab657611ab6611fac565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260159091529190912054611b08918490611e45565b6001600160a01b038516600090815260156020908152604080832093909355601790529081205460ff1680611b5557506001600160a01b03841660009081526017602052604090205460ff165b80611b8757506003546001600160a01b03868116911614801590611b8757506003546001600160a01b03858116911614155b15611b93575081611c31565b6003546000906001600160a01b0387811691161415611bf357611bcd600e54611bc7600c54876123c890919063ffffffff16565b906117ca565b9050611bd984826123d4565b9150611be586826123e0565b611bee84612457565b611c2f565b611c0e600e54611bc7600d54876123c890919063ffffffff16565b9050611c1a84826123d4565b9150611c2686826123e0565b611c2f846124b7565b505b6001600160a01b038416600090815260156020526040902054611c5490826117be565b6001600160a01b038086166000908152601560209081526040808320949094559188168152601a909152205460ff16611cf857600f546001600160a01b0386811660008181526015602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611ce557600080fd5b505af1925050508015611cf6575060015b505b6001600160a01b0384166000908152601a602052604090205460ff16611d8957600f546001600160a01b0385811660008181526015602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611d7657600080fd5b505af1925050508015611d87575060015b505b600f546010546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611dc19160040190815260200190565b600060405180830381600087803b158015611ddb57600080fd5b505af1925050508015611dec575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e3291815260200190565b60405180910390a3506001949350505050565b60008184841115611e695760405162461bcd60e51b8152600401610b6591906124fe565b505050900390565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601590915291822054611ec2918490611e45565b6001600160a01b038086166000908152601560205260408082209390935590851681522054611ef190836117be565b6001600160a01b0380851660008181526015602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f459086815260200190565b60405180910390a35060019392505050565b6003546000906001600160a01b03163314801590611f7e5750601d5462010000900460ff16155b8015611f8c5750601d5460ff165b8015610ca0575050601c5430600090815260156020526040902054101590565b601d805462ff0000191662010000179055600a54600b54600091611fd091906117be565b90506000611ff46002611bc784611bc7600b54601c546123c890919063ffffffff16565b9050600061200d82601c546123d490919063ffffffff16565b905061201b6012600a612a46565b61202890620f4240612a55565b306000908152601660209081526040808320600280546001600160a01b0316855290835281842094909455805184815260608101825292939183019080368337019050509050308160008151811061208257612082612a8d565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156120db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ff9190612af8565b8160018151811061211257612112612a8d565b6001600160a01b03928316602091820292909201015260025460405163791ac94760e01b81524792919091169063791ac9479061215c908690600090879030904290600401612b15565b600060405180830381600087803b15801561217657600080fd5b505af115801561218a573d6000803e3d6000fd5b5050505060006121a382476123d490919063ffffffff16565b905060006121c76121c06002600b546117ca90919063ffffffff16565b88906123d4565b905060006121e96002611bc784611bc7600b54886123c890919063ffffffff16565b905086156122c7576002546004805460405163f305d71960e01b81523092810192909252602482018a905260006044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015612265573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061228a9190612b86565b505060408051838152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b60006122e283611bc7600a54876123c890919063ffffffff16565b905080156123a75760006122f78260026117ca565b9050600061230583836123d4565b6005546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612340573d6000803e3d6000fd5b50600f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561239157600080fd5b505af1935050505080156123a3575060015b5050505b50506000600b819055600a555050601d805462ff0000191690555050505050565b6000610ea68284612a55565b6000610ea68284612bb4565b306000908152601560205260409020546123fa90826117be565b30600081815260156020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061244b9085815260200190565b60405180910390a35050565b612472600e54611bc7600754846123c890919063ffffffff16565b600b60008282546124839190612ae0565b9091555050600e5460065461249e9190611bc79084906123c8565b600a60008282546124af9190612ae0565b909155505050565b6124d2600e54611bc7600954846123c890919063ffffffff16565b600b60008282546124e39190612ae0565b9091555050600e5460085461249e9190611bc79084906123c8565b600060208083528351808285015260005b8181101561252b5785810183015185820160400152820161250f565b8181111561253d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461256857600080fd5b50565b6000806040838503121561257e57600080fd5b823561258981612553565b946020939093013593505050565b6000806000606084860312156125ac57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612602576126026125c3565b604052919050565b600067ffffffffffffffff821115612624576126246125c3565b5060051b60200190565b600082601f83011261263f57600080fd5b8135602061265461264f8361260a565b6125d9565b82815260059290921b8401810191818101908684111561267357600080fd5b8286015b8481101561269757803561268a81612553565b8352918301918301612677565b509695505050505050565b600080604083850312156126b557600080fd5b823567ffffffffffffffff808211156126cd57600080fd5b6126d98683870161262e565b93506020915081850135818111156126f057600080fd5b85019050601f8101861361270357600080fd5b803561271161264f8261260a565b81815260059190911b8201830190838101908883111561273057600080fd5b928401925b8284101561274e57833582529284019290840190612735565b80955050505050509250929050565b60008060006060848603121561277257600080fd5b833561277d81612553565b9250602084013561278d81612553565b929592945050506040919091013590565b6000602082840312156127b057600080fd5b5035919050565b600080604083850312156127ca57600080fd5b50508035926020909101359150565b6000602082840312156127eb57600080fd5b8135610ea681612553565b8035801515811461280657600080fd5b919050565b6000806040838503121561281e57600080fd5b823561282981612553565b9150612837602084016127f6565b90509250929050565b60006020828403121561285257600080fd5b813567ffffffffffffffff81111561286957600080fd5b6128758482850161262e565b949350505050565b6000806040838503121561289057600080fd5b823561289b81612553565b915060208301356128ab81612553565b809150509250929050565b600080604083850312156128c957600080fd5b612589836127f6565b600080604083850312156128e557600080fd5b823567ffffffffffffffff8111156128fc57600080fd5b6129088582860161262e565b925050612837602084016127f6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561299d5781600019048211156129835761298361294c565b8085161561299057918102915b93841c9390800290612967565b509250929050565b6000826129b457506001610b35565b816129c157506000610b35565b81600181146129d757600281146129e1576129fd565b6001915050610b35565b60ff8411156129f2576129f261294c565b50506001821b610b35565b5060208310610133831016604e8410600b8410161715612a20575081810a610b35565b612a2a8383612962565b8060001904821115612a3e57612a3e61294c565b029392505050565b6000610ea660ff8416836129a5565b6000816000190483118215151615612a6f57612a6f61294c565b500290565b600060208284031215612a8657600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612ab757612ab761294c565b5060010190565b600082612adb57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612af357612af361294c565b500190565b600060208284031215612b0a57600080fd5b8151610ea681612553565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b655784516001600160a01b031683529383019391830191600101612b40565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b9b57600080fd5b8351925060208401519150604084015190509250925092565b600082821015612bc657612bc661294c565b50039056fea2646970667358221220e310694c6683960630bc3fdb88e0a16ecd6bf8660daeed61d1fb66c97a02dedb64736f6c634300080a0033
Deployed Bytecode Sourcemap
13422:15701:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15112:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;15112:50:0;;;;;;;;17041:94;;;;;;;;;;-1:-1:-1;17122:5:0;;;;;;;;;;;;-1:-1:-1;;;17122:5:0;;;;17041:94;;;;;;;:::i;17466:248::-;;;;;;;;;;-1:-1:-1;17466:248:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;17466:248:0;1254:187:1;26931:463:0;;;;;;;;;;-1:-1:-1;26931:463:0;;;;;:::i;:::-;;:::i;:::-;;27402:468;;;;;;;;;;-1:-1:-1;27402:468:0;;;;;:::i;:::-;;:::i;14399:38::-;;;;;;;;;;;;;;;;16723:102;;;;;;;;;;;;;:::i;25096:127::-;;;;;;;;;;;;;:::i;28664:318::-;;;;;;;;;;-1:-1:-1;28664:318:0;;;;;:::i;:::-;;:::i;18043:419::-;;;;;;;;;;-1:-1:-1;18043:419:0;;;;;:::i;:::-;;:::i;26088:155::-;;;;;;;;;;-1:-1:-1;26088:155:0;;;;;:::i;:::-;;:::i;28273:207::-;;;;;;;;;;-1:-1:-1;28273:207:0;;;;;:::i;:::-;;:::i;16833:94::-;;;;;;;;;;-1:-1:-1;16833:94:0;;13641:2;5293:36:1;;5281:2;5266:18;16833:94:0;5151:184:1;15066:37:0;;;;;;;;;;-1:-1:-1;15066:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14858:43;;;;;;;;;;-1:-1:-1;14858:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15011:48;;;;;;;;;;-1:-1:-1;15011:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24726:174;;;;;;;;;;-1:-1:-1;24726:174:0;;;;;:::i;:::-;;:::i;14908:44::-;;;;;;;;;;-1:-1:-1;14908:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17722:117;;;;;;;;;;-1:-1:-1;17722:117:0;;;;;:::i;:::-;;:::i;14318:33::-;;;;;;;;;;;;;;;;14491:38;;;;;;;;;;;;;;;;26251:119;;;;;;;;;;-1:-1:-1;26251:119:0;;;;;:::i;:::-;;:::i;26721:202::-;;;;;;;;;;-1:-1:-1;26721:202:0;;;;;:::i;:::-;;:::i;15169:23::-;;;;;;;;;;-1:-1:-1;15169:23:0;;;;;;;;17143:119;;;;;;;;;;-1:-1:-1;17143:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;17236:18:0;17209:7;17236:18;;;:9;:18;;;;;;;17143:119;6021:157;;;;;;;;;;;;;:::i;25931:149::-;;;;;;;;;;-1:-1:-1;25931:149:0;;;;;:::i;:::-;;:::i;13998:84::-;;;;;;;;;;-1:-1:-1;13998:84:0;;;;-1:-1:-1;;;;;13998:84:0;;;;;;-1:-1:-1;;;;;6594:32:1;;;6576:51;;6564:2;6549:18;13998:84:0;6430:203:1;14684:39:0;;;;;;;;;;;;;;;;14959:45;;;;;;;;;;-1:-1:-1;14959:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24908:180;;;;;;;;;;-1:-1:-1;24908:180:0;;;;;:::i;:::-;;:::i;25812:111::-;;;;;;;;;;-1:-1:-1;25812:111:0;;;;;:::i;:::-;;:::i;13724:64::-;;;;;;;;;;-1:-1:-1;13724:64:0;;;;-1:-1:-1;;;;;13724:64:0;;;25612:192;;;;;;;;;;;;;:::i;5807:79::-;;;;;;;;;;-1:-1:-1;5845:7:0;5872:6;-1:-1:-1;;;;;5872:6:0;5807:79;;16935:98;;;;;;;;;;-1:-1:-1;17018:7:0;;;;;;;;;;;;-1:-1:-1;;;17018:7:0;;;;16935:98;;28488:168;;;;;;;;;;-1:-1:-1;28488:168:0;;;;;:::i;:::-;;:::i;14358:34::-;;;;;;;;;;;;;;;;13929:19;;;;;;;;;;-1:-1:-1;13929:19:0;;;;-1:-1:-1;;;;;13929:19:0;;;17847:188;;;;;;;;;;-1:-1:-1;17847:188:0;;;;;:::i;:::-;;:::i;14593:52::-;;;;;;;;;;;;;;;;28988:132;;;;;;;;;;-1:-1:-1;28988:132:0;;;;;:::i;:::-;;:::i;14652:25::-;;;;;;;;;;;;;;;;14446:38;;;;;;;;;;-1:-1:-1;14446:38:0;;;;-1:-1:-1;;;;;14446:38:0;;;13955:36;;;;;;;;;;-1:-1:-1;13955:36:0;;;;-1:-1:-1;;;;;13955:36:0;;;14538:48;;;;;;;;;;;;;;;;17270:188;;;;;;;;;;-1:-1:-1;17270:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;17422:19:0;;;17390:7;17422:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17270:188;28050:215;;;;;;;;;;-1:-1:-1;28050:215:0;;;;;:::i;:::-;;:::i;27878:164::-;;;;;;;;;;-1:-1:-1;27878:164:0;;;;;:::i;:::-;;:::i;15199:19::-;;;;;;;;;;-1:-1:-1;15199:19:0;;;;;;;;;;;24628:90;;;;;;;;;;;;;:::i;6186:281::-;;;;;;;;;;-1:-1:-1;6186:281:0;;;;;:::i;:::-;;:::i;26378:203::-;;;;;;;;;;-1:-1:-1;26378:203:0;;;;;:::i;:::-;;:::i;25231:373::-;;;;;;;;;;-1:-1:-1;25231:373:0;;;;;:::i;:::-;;:::i;13898:24::-;;;;;;;;;;-1:-1:-1;13898:24:0;;;;-1:-1:-1;;;;;13898:24:0;;;26589:124;;;;;;;;;;-1:-1:-1;26589:124:0;;;;;:::i;:::-;;:::i;17466:248::-;17602:10;17568:4;17590:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17590:32:0;;;;;;;;;;:41;;;17647:37;17568:4;;17590:32;;17647:37;;;;17625:6;160:25:1;;148:2;133:18;;14:177;17647:37:0;;;;;;;;-1:-1:-1;17702:4:0;17466:248;;;;;:::o;26931:463::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;;;;;;;;;27085:17:::1;:34:::0;;;27130:16:::1;:32:::0;;;27187:33:::1;27149:13:::0;27105:14;27187:17:::1;:33::i;:::-;27173:11;:47:::0;27231:14:::1;:32:::0;;;27311:22:::1;27248:15:::0;27330:2:::1;27311:18;:22::i;:::-;27296:11;;:37;;27274:112;;;::::0;-1:-1:-1;;;27274:112:0;;8730:2:1;27274:112:0::1;::::0;::::1;8712:21:1::0;8769:2;8749:18;;;8742:30;-1:-1:-1;;;8788:18:1;;;8781:55;8853:18;;27274:112:0::1;8528:349:1::0;27274:112:0::1;26931:463:::0;;;:::o;27402:468::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;27557:17:::1;:33:::0;;;27601:18:::1;:35:::0;;;27662:33:::1;27577:13:::0;27622:14;27662:17:::1;:33::i;:::-;27647:12;:48:::0;27706:14:::1;:32:::0;;;27787:22:::1;27723:15:::0;27806:2:::1;27787:18;:22::i;:::-;27771:12;;:38;;27749:113;;;::::0;-1:-1:-1;;;27749:113:0;;8730:2:1;27749:113:0::1;::::0;::::1;8712:21:1::0;8769:2;8749:18;;;8742:30;-1:-1:-1;;;8788:18:1;;;8781:55;8853:18;;27749:113:0::1;8528:349:1::0;16723:102:0;16778:7;13702:13;13641:2;13702;:13;:::i;:::-;13690:25;;:9;:25;:::i;:::-;16798:19;;16723:102;:::o;25096:127::-;25185:11;;:30;;;-1:-1:-1;;;25185:30:0;;;;25158:7;;-1:-1:-1;;;;;25185:11:0;;:28;;:30;;;;;;;;;;;;;;:11;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28664:318::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;28820:7:::1;:14;28801:8;:15;:33;28793:52;;;::::0;-1:-1:-1;;;28793:52:0;;10961:2:1;28793:52:0::1;::::0;::::1;10943:21:1::0;11000:1;10980:18;;;10973:29;-1:-1:-1;;;11018:18:1;;;11011:37;11065:18;;28793:52:0::1;10759:330:1::0;28793:52:0::1;28861:9;28856:119;28876:8;:15;28872:1;:19;28856:119;;;28913:50;28927:10;28939:8;28948:1;28939:11;;;;;;;;:::i;:::-;;;;;;;28952:7;28960:1;28952:10;;;;;;;;:::i;:::-;;;;;;;28913:13;:50::i;:::-;-1:-1:-1::0;28893:3:0;::::1;::::0;::::1;:::i;:::-;;;;28856:119;;18043:419:::0;18177:4;13702:13;13641:2;13702;:13;:::i;:::-;13690:25;;:9;:25;:::i;:::-;-1:-1:-1;;;;;18198:19:0;;;;;;:11;:19;;;;;;;;18218:10;18198:31;;;;;;;;:47;18194:201;;18296:87;;;;;;;;;;;;-1:-1:-1;;;18296:87:0;;;;;;;;-1:-1:-1;;;;;18296:19:0;;-1:-1:-1;18296:19:0;;;;;;;;;18316:10;18296:31;;;;;;;;;:87;;18350:6;;18296:53;:87::i;:::-;-1:-1:-1;;;;;18262:19:0;;;;;;:11;:19;;;;;;;;18282:10;18262:31;;;;;;;:121;18194:201;18414:40;18428:6;18436:9;18447:6;18414:13;:40::i;:::-;18407:47;;18043:419;;;;;;:::o;26088:155::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;26195:4:::1;13702:13;13641:2;13702;:13;:::i;:::-;13690:25;::::0;:9:::1;:25;:::i;:::-;26180:19;;;;:::i;:::-;26170:6;:29;;26162:38;;;::::0;::::1;;26211:15;:24:::0;26088:155::o;28273:207::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;28407:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;28407:65:0;;::::1;::::0;::::1;11762:25:1::0;;;11803:18;;;11796:34;;;-1:-1:-1;;;;;28407:11:0;;::::1;::::0;:35:::1;::::0;11735:18:1;;28407:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28273:207:::0;;:::o;24726:174::-;24852:11;;:40;;-1:-1:-1;;;24852:40:0;;-1:-1:-1;;;;;6594:32:1;;;24852:40:0;;;6576:51:1;24820:7:0;;24852:11;;:27;;6549:18:1;;24852:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17722:117::-;17777:4;17801:30;17809:7;13702:13;13641:2;13702;:13;:::i;:::-;13690:25;;:9;:25;:::i;26251:119::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26334:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;26334:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26251:119::o;26721:202::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;26826:9:::1;26821:95;26841:8;:15;26837:1;:19;26821:95;;;26899:5;26878;:18;26884:8;26893:1;26884:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26878:18:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26878:18:0;:26;;-1:-1:-1;;26878:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26858:3;::::1;::::0;::::1;:::i;:::-;;;;26821:95;;;;26721:202:::0;:::o;6021:157::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;6128:1:::1;6112:6:::0;;6091:40:::1;::::0;-1:-1:-1;;;;;6112:6:0;;::::1;::::0;6091:40:::1;::::0;6128:1;;6091:40:::1;6167:1;6142:28:::0;;-1:-1:-1;;;;;;6142:28:0::1;::::0;;6021:157::o;25931:149::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;26035:4:::1;13702:13;13641:2;13702;:13;:::i;:::-;13690:25;::::0;:9:::1;:25;:::i;:::-;26020:19;;;;:::i;:::-;26010:6;:29;;26002:38;;;::::0;::::1;;26051:12;:21:::0;25931:149::o;24908:180::-;25038:11;;:42;;-1:-1:-1;;;25038:42:0;;-1:-1:-1;;;;;6594:32:1;;;25038:42:0;;;6576:51:1;25006:7:0;;25038:11;;:29;;6549:18:1;;25038:42:0;6430:203:1;25812:111:0;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;5845:7;5872:6;;25882:33:::1;::::0;-1:-1:-1;;;;;5872:6:0;;;;25882:33;::::1;;;::::0;25908:6;;25882:33;5845:7;25882:33;25908:6;5872;25882:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;25612:192:::0;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;25676:7:::1;::::0;::::1;::::0;::::1;;;25675:8;25667:36;;;::::0;-1:-1:-1;;;25667:36:0;;12043:2:1;25667:36:0::1;::::0;::::1;12025:21:1::0;12082:2;12062:18;;;12055:30;-1:-1:-1;;;12101:18:1;;;12094:45;12156:18;;25667:36:0::1;11841:339:1::0;25667:36:0::1;25714:7;:14:::0;;-1:-1:-1;;25739:18:0;;;;;25781:15:::1;25768:10;:28:::0;25612:192::o;28488:168::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;28577:6:::1;28571:3;:12;28563:54;;;::::0;-1:-1:-1;;;28563:54:0;;12387:2:1;28563:54:0::1;::::0;::::1;12369:21:1::0;12426:2;12406:18;;;12399:30;12465:31;12445:18;;;12438:59;12514:18;;28563:54:0::1;12185:353:1::0;28563:54:0::1;28628:14;:20:::0;28488:168::o;17847:188::-;17954:4;17983:44;17997:10;18009:9;18020:6;17983:13;:44::i;28988:132::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;29076:15:::1;:36:::0;;-1:-1:-1;;;;;;29076:36:0::1;-1:-1:-1::0;;;;;29076:36:0;;;::::1;::::0;;;::::1;::::0;;28988:132::o;28050:215::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;28188:1:::1;28172:13;;:17;28164:26;;;::::0;::::1;;28201:11;:22:::0;;-1:-1:-1;;28201:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;28234:13:::1;:23:::0;28050:215::o;27878:164::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;27988:21:::1;:46:::0;;-1:-1:-1;;;;;;27988:46:0::1;-1:-1:-1::0;;;;;27988:46:0;;;::::1;::::0;;;::::1;::::0;;27878:164::o;24628:90::-;24673:11;;:37;;-1:-1:-1;;;24673:37:0;;24699:10;24673:37;;;6576:51:1;-1:-1:-1;;;;;24673:11:0;;;;:25;;6549:18:1;;24673:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24628:90::o;6186:281::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6289:22:0;::::1;6267:110;;;::::0;-1:-1:-1;;;6267:110:0;;12745:2:1;6267:110:0::1;::::0;::::1;12727:21:1::0;12784:2;12764:18;;;12757:30;12823:34;12803:18;;;12796:62;-1:-1:-1;;;12874:18:1;;;12867:36;12920:19;;6267:110:0::1;12543:402:1::0;6267:110:0::1;6414:6;::::0;;6393:38:::1;::::0;-1:-1:-1;;;;;6393:38:0;;::::1;::::0;6414:6;::::1;::::0;6393:38:::1;::::0;::::1;6442:6;:17:::0;;-1:-1:-1;;;;;;6442:17:0::1;-1:-1:-1::0;;;;;6442:17:0;;;::::1;::::0;;;::::1;::::0;;6186:281::o;26378:203::-;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;26478:9:::1;26473:101;26493:7;:14;26489:1;:18;26473:101;;;26556:6;26529:12;:24;26542:7;26550:1;26542:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26529:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26529:24:0;:33;;-1:-1:-1;;26529:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26509:3;::::1;::::0;::::1;:::i;:::-;;;;26473:101;;25231:373:::0;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25350:23:0;::::1;25368:4;25350:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;25387:4:0::1;::::0;-1:-1:-1;;;;;25377:14:0;;::::1;25387:4:::0;::::1;25377:14;;25350:41;25342:50;;;::::0;::::1;;-1:-1:-1::0;;;;;25403:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;25403:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;25447:150:::1;;25474:11;::::0;:31:::1;::::0;-1:-1:-1;;;25474:31:0;;-1:-1:-1;;;;;13150:32:1;;;25474:31:0::1;::::0;::::1;13132:51:1::0;25474:11:0::1;13199:18:1::0;;;13192:34;25474:11:0;;::::1;::::0;:20:::1;::::0;13105:18:1;;25474:31:0::1;12950:282:1::0;25447:150:0::1;25538:11;::::0;-1:-1:-1;;;;;25567:17:0;;::::1;25538:11;25567:17:::0;;;:9:::1;:17;::::0;;;;;;;25538:47;;-1:-1:-1;;;25538:47:0;;::::1;::::0;::::1;13132:51:1::0;;;;13199:18;;;13192:34;25538:11:0;::::1;::::0;:20:::1;::::0;13105:18:1;;25538:47:0::1;12950:282:1::0;26589:124:0;5934:6;;-1:-1:-1;;;;;5934:6:0;5239:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26675:21:0;;;::::1;;::::0;;;:13:::1;:21;::::0;;;;:30;;-1:-1:-1;;26675:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26589:124::o;1760:98::-;1818:7;1845:5;1849:1;1845;:5;:::i;2078:98::-;2136:7;2163:5;2167:1;2163;:5;:::i;18470:2772::-;-1:-1:-1;;;;;18622:13:0;;18596:4;18622:13;;;:5;:13;;;;;;;;18621:14;18613:38;;;;-1:-1:-1;;;18613:38:0;;13851:2:1;18613:38:0;;;13833:21:1;13890:2;13870:18;;;13863:30;-1:-1:-1;;;13909:18:1;;;13902:42;13961:18;;18613:38:0;13649:336:1;18613:38:0;-1:-1:-1;;;;;18667:20:0;;;;;;:12;:20;;;;;;;;18666:21;:49;;;;-1:-1:-1;;;;;;18692:23:0;;;;;;:12;:23;;;;;;;;18691:24;18666:49;18662:759;;;18750:12;;18740:6;:22;;18732:56;;;;-1:-1:-1;;;18732:56:0;;14192:2:1;18732:56:0;;;14174:21:1;14231:2;14211:18;;;14204:30;-1:-1:-1;;;14250:18:1;;;14243:51;14311:18;;18732:56:0;13990:345:1;18732:56:0;18854:7;;;;;;;18849:176;;18912:4;;-1:-1:-1;;;;;18912:14:0;;;:4;;:14;;;;:35;;-1:-1:-1;18930:4:0;;-1:-1:-1;;;;;18930:17:0;;;:4;;:17;;18912:35;18882:127;;;;-1:-1:-1;;;18882:127:0;;14542:2:1;18882:127:0;;;14524:21:1;14581:2;14561:18;;;14554:30;-1:-1:-1;;;14600:18:1;;;14593:48;14658:18;;18882:127:0;14340:342:1;18882:127:0;19125:11;;19112:10;;:24;;;;:::i;:::-;19094:15;:42;:88;;;;-1:-1:-1;19175:6:0;;-1:-1:-1;;;;;19157:25:0;;;19175:6;;19157:25;;19094:88;19072:338;;;19221:4;;-1:-1:-1;;;;;19221:14:0;;;:4;;:14;19217:178;;;-1:-1:-1;;;;;19260:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;19260:23:0;19279:4;19260:23;;;19217:178;;;19313:4;;-1:-1:-1;;;;;19313:17:0;;;:4;;:17;19309:86;;;-1:-1:-1;;;;;19355:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;19355:20:0;19371:4;19355:20;;;19309:86;-1:-1:-1;;;;;19438:24:0;;;;;;:13;:24;;;;;;;;19433:195;;19541:15;;19505:32;19530:6;19505:20;19515:9;-1:-1:-1;;;;;17236:18:0;17209:7;17236:18;;;:9;:18;;;;;;;17143:119;19505:20;:24;;:32::i;:::-;:51;;19479:137;;;;-1:-1:-1;;;19479:137:0;;14889:2:1;19479:137:0;;;14871:21:1;14928:2;14908:18;;;14901:30;14967:26;14947:18;;;14940:54;15011:18;;19479:137:0;14687:348:1;19479:137:0;19644:6;;;;;;;19640:87;;;19674:41;19689:6;19697:9;19708:6;19674:14;:41::i;:::-;19667:48;;;;19640:87;19743:16;:14;:16::i;:::-;19739:59;;;19776:10;:8;:10::i;:::-;19830:90;;;;;;;;;;;-1:-1:-1;;;19830:90:0;;;;;;;;-1:-1:-1;;;;;19830:17:0;;-1:-1:-1;19830:17:0;;;:9;:17;;;;;;;;:90;;19866:6;;19830:21;:90::i;:::-;-1:-1:-1;;;;;19810:17:0;;;;;;:9;:17;;;;;;;;:110;;;;19984:11;:19;;;;;;;;;:58;;-1:-1:-1;;;;;;20020:22:0;;;;;;:11;:22;;;;;;;;19984:58;:112;;;-1:-1:-1;20070:4:0;;-1:-1:-1;;;;;20060:14:0;;;20070:4;;20060:14;;;;:35;;-1:-1:-1;20091:4:0;;-1:-1:-1;;;;;20078:17:0;;;20091:4;;20078:17;;20060:35;19966:746;;;-1:-1:-1;20140:6:0;19966:746;;;20225:4;;20179:17;;-1:-1:-1;;;;;20215:14:0;;;20225:4;;20215:14;20211:490;;;20262:43;20290:14;;20262:23;20273:11;;20262:6;:10;;:23;;;;:::i;:::-;:27;;:43::i;:::-;20250:55;-1:-1:-1;20341:21:0;:6;20250:55;20341:10;:21::i;:::-;20324:38;;20381:26;20389:6;20397:9;20381:7;:26::i;:::-;20426:20;20439:6;20426:12;:20::i;:::-;20211:490;;;20499:44;20528:14;;20499:24;20510:12;;20499:6;:10;;:24;;;;:::i;:44::-;20487:56;-1:-1:-1;20579:21:0;:6;20487:56;20579:10;:21::i;:::-;20562:38;;20619:26;20627:6;20635:9;20619:7;:26::i;:::-;20664:21;20678:6;20664:13;:21::i;:::-;20164:548;19966:746;-1:-1:-1;;;;;20747:20:0;;;;;;:9;:20;;;;;;:40;;20772:14;20747:24;:40::i;:::-;-1:-1:-1;;;;;20724:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;20805:24;;;;;:16;:24;;;;;;;20800:120;;20850:11;;-1:-1:-1;;;;;20879:17:0;;;20850:11;20879:17;;;:9;:17;;;;;;;;20850:47;;-1:-1:-1;;;20850:47:0;;;;;13132:51:1;;;;13199:18;;;13192:34;20850:11:0;;;:20;;13105:18:1;;20850:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20846:63;;-1:-1:-1;;;;;20935:27:0;;;;;;:16;:27;;;;;;;;20930:159;;21000:11;;-1:-1:-1;;;;;21032:20:0;;;21000:11;21032:20;;;:9;:20;;;;;;;;21000:53;;-1:-1:-1;;;21000:53:0;;;;;13132:51:1;;;;13199:18;;;13192:34;21000:11:0;;;:20;;13105:18:1;;21000:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20979:99;;21105:11;;21125:14;;21105:35;;-1:-1:-1;;;;;;21105:35:0;;-1:-1:-1;;;;;21105:11:0;;;;:19;;:35;;;;160:25:1;;;148:2;133:18;;14:177;21105:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21101:51;21186:9;-1:-1:-1;;;;;21169:43:0;21178:6;-1:-1:-1;;;;;21169:43:0;;21197:14;21169:43;;;;160:25:1;;148:2;133:18;;14:177;21169:43:0;;;;;;;;-1:-1:-1;21230:4:0;;18470:2772;-1:-1:-1;;;;18470:2772:0:o;2290:240::-;2410:7;2471:12;2463:6;;;;2455:29;;;;-1:-1:-1;;;2455:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2506:5:0;;;2290:240::o;21250:401::-;21414:90;;;;;;;;;;;-1:-1:-1;;;21414:90:0;;;;;;;;-1:-1:-1;;;;;21414:17:0;;21377:4;21414:17;;;:9;:17;;;;;;;:90;;21450:6;;21414:21;:90::i;:::-;-1:-1:-1;;;;;21394:17:0;;;;;;;:9;:17;;;;;;:110;;;;21538:20;;;;;;;:32;;21563:6;21538:24;:32::i;:::-;-1:-1:-1;;;;;21515:20:0;;;;;;;:9;:20;;;;;;;:55;;;;21586:35;;;;;;;;;;21614:6;160:25:1;;148:2;133:18;;14:177;21586:35:0;;;;;;;;-1:-1:-1;21639:4:0;21250:401;;;;;:::o;22406:222::-;22506:4;;22455;;-1:-1:-1;;;;;22506:4:0;22492:10;:18;;;;:42;;-1:-1:-1;22528:6:0;;;;;;;22527:7;22492:42;:70;;;;-1:-1:-1;22551:11:0;;;;22492:70;:128;;;;-1:-1:-1;;22607:13:0;;22597:4;22579:24;;;;:9;:24;;;;;;:41;;;22406:222::o;22636:1984::-;15274:6;:13;;-1:-1:-1;;15274:13:0;;;;;22727:19:::1;::::0;22704:18:::1;::::0;15274:13;;22704:43:::1;::::0;:18;:22:::1;:43::i;:::-;22685:62;;22760:23;22786:100;22884:1;22786:79;22856:8;22786:51;22818:18;;22786:13;;:31;;:51;;;;:::i;:100::-;22760:126;;22899:20;22922:34;22940:15;22922:13;;:17;;:34;;;;:::i;:::-;22899:57:::0;-1:-1:-1;13702:13:0::1;13641:2;13702;:13;:::i;:::-;13690:25;::::0;:9:::1;:25;:::i;:::-;22987:4;22967:26;::::0;;;:11:::1;:26;::::0;;;;;;;23002:6:::1;::::0;;-1:-1:-1;;;;;23002:6:0::1;22967:43:::0;;;;;;;;:58;;;;23060:16;;;;;;;::::1;::::0;;22967:26;;23002:6;23060:16;::::1;::::0;22967:26;23060:16:::1;::::0;::::1;;::::0;-1:-1:-1;23060:16:0::1;23036:40;;23105:4;23087;23092:1;23087:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23087:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23131:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;23131:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;23087:7;;23131:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23121:4;23126:1;23121:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23121:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23213:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;23213:188:0;;23179:21:::1;::::0;23213:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;23285:12;;23155:21:::1;::::0;23328:4;;23355::::1;::::0;23375:15:::1;::::0;23213:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23414:17;23434:40;23460:13;23434:21;:25;;:40;;;;:::i;:::-;23414:60;;23487:19;23509:39;23522:25;23545:1;23522:18;;:22;;:25;;;;:::i;:::-;23509:8:::0;;:12:::1;:39::i;:::-;23487:61;;23561:26;23590:99;23687:1;23590:78;23656:11;23590:47;23618:18;;23590:9;:27;;:47;;;;:::i;:99::-;23561:128:::0;-1:-1:-1;23706:19:0;;23702:364:::1;;23742:6;::::0;23916:21:::1;::::0;;23742:244:::1;::::0;-1:-1:-1;;;23742:244:0;;23818:4:::1;23742:244:::0;;::::1;16622:34:1::0;;;;16672:18;;;16665:34;;;23742:6:0::1;16715:18:1::0;;;16708:34;;;16758:18;;;16751:34;-1:-1:-1;;;;;23916:21:0;;::::1;16801:19:1::0;;;16794:44;23956:15:0::1;16854:19:1::0;;;16847:35;23742:6:0;;::::1;::::0;:22:::1;::::0;23772:18;;16556:19:1;;23742:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24006:48:0::1;::::0;;11762:25:1;;;11818:2;11803:18;;11796:34;;;24006:48:0::1;::::0;-1:-1:-1;11735:18:1;24006:48:0::1;;;;;;;23702:364;24078:27;24108:75;24161:11;24108:34;24122:19;;24108:9;:13;;:34;;;;:::i;:75::-;24078:105:::0;-1:-1:-1;24208:23:0;;24204:342:::1;;24251:20;24274:26;:19:::0;24298:1:::1;24274:23;:26::i;:::-;24251:49:::0;-1:-1:-1;24315:23:0::1;24341:37;:19:::0;24251:49;24341:23:::1;:37::i;:::-;24401:15;::::0;24393:50:::1;::::0;24315:63;;-1:-1:-1;;;;;;24401:15:0::1;::::0;24393:50;::::1;;;::::0;24315:63;;24401:15:::1;24393:50:::0;24401:15;24393:50;24315:63;24401:15;24393:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24481:11;;;;;;;;;-1:-1:-1::0;;;;;24481:11:0::1;-1:-1:-1::0;;;;;24481:19:0::1;;24508:12;24481:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24477:58:::0;24233:313:::1;;24204:342;-1:-1:-1::0;;24577:1:0::1;24556:18;:22:::0;;;24589:19:::1;:23:::0;-1:-1:-1;;15310:6:0;:14;;-1:-1:-1;;15310:14:0;;;-1:-1:-1;;;;;22636:1984:0:o;1972:98::-;2030:7;2057:5;2061:1;2057;:5;:::i;1866:98::-;1924:7;1951:5;1955:1;1951;:5;:::i;21659:204::-;21776:4;21758:24;;;;:9;:24;;;;;;:39;;21787:9;21758:28;:39::i;:::-;21749:4;21731:24;;;;:9;:24;;;;;;;:66;;;;21813:42;;-1:-1:-1;;;;;21813:42:0;;;;;;;21845:9;160:25:1;;148:2;133:18;;14:177;21813:42:0;;;;;;;;21659:204;;:::o;21871:246::-;21952:49;21986:14;;21952:29;21964:16;;21952:7;:11;;:29;;;;:::i;:49::-;21930:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;22084:14:0;;22047:17;;22035:74;;22084:14;22035:30;;:7;;:11;:30::i;:74::-;22012:19;;:97;;;;;;;:::i;:::-;;;;-1:-1:-1;;;21871:246:0:o;22125:273::-;22207:74;22256:14;;22207:30;22219:17;;22207:7;:11;;:30;;;;:::i;:74::-;22185:18;;:96;;;;;;;:::i;:::-;;;;-1:-1:-1;;22365:14:0;;22327:18;;22315:75;;22365:14;22315:31;;:7;;:11;:31::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:315::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:316::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;-1:-1:-1;;1631:23:1;;;1701:2;1686:18;;1673:32;;-1:-1:-1;1752:2:1;1737:18;;;1724:32;;1446:316;-1:-1:-1;1446:316:1:o;1767:127::-;1828:10;1823:3;1819:20;1816:1;1809:31;1859:4;1856:1;1849:15;1883:4;1880:1;1873:15;1899:275;1970:2;1964:9;2035:2;2016:13;;-1:-1:-1;;2012:27:1;2000:40;;2070:18;2055:34;;2091:22;;;2052:62;2049:88;;;2117:18;;:::i;:::-;2153:2;2146:22;1899:275;;-1:-1:-1;1899:275:1:o;2179:183::-;2239:4;2272:18;2264:6;2261:30;2258:56;;;2294:18;;:::i;:::-;-1:-1:-1;2339:1:1;2335:14;2351:4;2331:25;;2179:183::o;2367:737::-;2421:5;2474:3;2467:4;2459:6;2455:17;2451:27;2441:55;;2492:1;2489;2482:12;2441:55;2528:6;2515:20;2554:4;2578:60;2594:43;2634:2;2594:43;:::i;:::-;2578:60;:::i;:::-;2672:15;;;2758:1;2754:10;;;;2742:23;;2738:32;;;2703:12;;;;2782:15;;;2779:35;;;2810:1;2807;2800:12;2779:35;2846:2;2838:6;2834:15;2858:217;2874:6;2869:3;2866:15;2858:217;;;2954:3;2941:17;2971:31;2996:5;2971:31;:::i;:::-;3015:18;;3053:12;;;;2891;;2858:217;;;-1:-1:-1;3093:5:1;2367:737;-1:-1:-1;;;;;;2367:737:1:o;3109:1138::-;3227:6;3235;3288:2;3276:9;3267:7;3263:23;3259:32;3256:52;;;3304:1;3301;3294:12;3256:52;3344:9;3331:23;3373:18;3414:2;3406:6;3403:14;3400:34;;;3430:1;3427;3420:12;3400:34;3453:61;3506:7;3497:6;3486:9;3482:22;3453:61;:::i;:::-;3443:71;;3533:2;3523:12;;3588:2;3577:9;3573:18;3560:32;3617:2;3607:8;3604:16;3601:36;;;3633:1;3630;3623:12;3601:36;3656:24;;;-1:-1:-1;3711:4:1;3703:13;;3699:27;-1:-1:-1;3689:55:1;;3740:1;3737;3730:12;3689:55;3776:2;3763:16;3799:60;3815:43;3855:2;3815:43;:::i;3799:60::-;3893:15;;;3975:1;3971:10;;;;3963:19;;3959:28;;;3924:12;;;;3999:19;;;3996:39;;;4031:1;4028;4021:12;3996:39;4055:11;;;;4075:142;4091:6;4086:3;4083:15;4075:142;;;4157:17;;4145:30;;4108:12;;;;4195;;;;4075:142;;;4236:5;4226:15;;;;;;;3109:1138;;;;;:::o;4252:456::-;4329:6;4337;4345;4398:2;4386:9;4377:7;4373:23;4369:32;4366:52;;;4414:1;4411;4404:12;4366:52;4453:9;4440:23;4472:31;4497:5;4472:31;:::i;:::-;4522:5;-1:-1:-1;4579:2:1;4564:18;;4551:32;4592:33;4551:32;4592:33;:::i;:::-;4252:456;;4644:7;;-1:-1:-1;;;4698:2:1;4683:18;;;;4670:32;;4252:456::o;4713:180::-;4772:6;4825:2;4813:9;4804:7;4800:23;4796:32;4793:52;;;4841:1;4838;4831:12;4793:52;-1:-1:-1;4864:23:1;;4713:180;-1:-1:-1;4713:180:1:o;4898:248::-;4966:6;4974;5027:2;5015:9;5006:7;5002:23;4998:32;4995:52;;;5043:1;5040;5033:12;4995:52;-1:-1:-1;;5066:23:1;;;5136:2;5121:18;;;5108:32;;-1:-1:-1;4898:248:1:o;5340:247::-;5399:6;5452:2;5440:9;5431:7;5427:23;5423:32;5420:52;;;5468:1;5465;5458:12;5420:52;5507:9;5494:23;5526:31;5551:5;5526:31;:::i;5592:160::-;5657:20;;5713:13;;5706:21;5696:32;;5686:60;;5742:1;5739;5732:12;5686:60;5592:160;;;:::o;5757:315::-;5822:6;5830;5883:2;5871:9;5862:7;5858:23;5854:32;5851:52;;;5899:1;5896;5889:12;5851:52;5938:9;5925:23;5957:31;5982:5;5957:31;:::i;:::-;6007:5;-1:-1:-1;6031:35:1;6062:2;6047:18;;6031:35;:::i;:::-;6021:45;;5757:315;;;;;:::o;6077:348::-;6161:6;6214:2;6202:9;6193:7;6189:23;6185:32;6182:52;;;6230:1;6227;6220:12;6182:52;6270:9;6257:23;6303:18;6295:6;6292:30;6289:50;;;6335:1;6332;6325:12;6289:50;6358:61;6411:7;6402:6;6391:9;6387:22;6358:61;:::i;:::-;6348:71;6077:348;-1:-1:-1;;;;6077:348:1:o;6874:388::-;6942:6;6950;7003:2;6991:9;6982:7;6978:23;6974:32;6971:52;;;7019:1;7016;7009:12;6971:52;7058:9;7045:23;7077:31;7102:5;7077:31;:::i;:::-;7127:5;-1:-1:-1;7184:2:1;7169:18;;7156:32;7197:33;7156:32;7197:33;:::i;:::-;7249:7;7239:17;;;6874:388;;;;;:::o;7267:248::-;7332:6;7340;7393:2;7381:9;7372:7;7368:23;7364:32;7361:52;;;7409:1;7406;7399:12;7361:52;7432:26;7448:9;7432:26;:::i;7520:416::-;7610:6;7618;7671:2;7659:9;7650:7;7646:23;7642:32;7639:52;;;7687:1;7684;7677:12;7639:52;7727:9;7714:23;7760:18;7752:6;7749:30;7746:50;;;7792:1;7789;7782:12;7746:50;7815:61;7868:7;7859:6;7848:9;7844:22;7815:61;:::i;:::-;7805:71;;;7895:35;7926:2;7915:9;7911:18;7895:35;:::i;8167:356::-;8369:2;8351:21;;;8388:18;;;8381:30;8447:34;8442:2;8427:18;;8420:62;8514:2;8499:18;;8167:356::o;8882:127::-;8943:10;8938:3;8934:20;8931:1;8924:31;8974:4;8971:1;8964:15;8998:4;8995:1;8988:15;9014:422;9103:1;9146:5;9103:1;9160:270;9181:7;9171:8;9168:21;9160:270;;;9240:4;9236:1;9232:6;9228:17;9222:4;9219:27;9216:53;;;9249:18;;:::i;:::-;9299:7;9289:8;9285:22;9282:55;;;9319:16;;;;9282:55;9398:22;;;;9358:15;;;;9160:270;;;9164:3;9014:422;;;;;:::o;9441:806::-;9490:5;9520:8;9510:80;;-1:-1:-1;9561:1:1;9575:5;;9510:80;9609:4;9599:76;;-1:-1:-1;9646:1:1;9660:5;;9599:76;9691:4;9709:1;9704:59;;;;9777:1;9772:130;;;;9684:218;;9704:59;9734:1;9725:10;;9748:5;;;9772:130;9809:3;9799:8;9796:17;9793:43;;;9816:18;;:::i;:::-;-1:-1:-1;;9872:1:1;9858:16;;9887:5;;9684:218;;9986:2;9976:8;9973:16;9967:3;9961:4;9958:13;9954:36;9948:2;9938:8;9935:16;9930:2;9924:4;9921:12;9917:35;9914:77;9911:159;;;-1:-1:-1;10023:19:1;;;10055:5;;9911:159;10102:34;10127:8;10121:4;10102:34;:::i;:::-;10172:6;10168:1;10164:6;10160:19;10151:7;10148:32;10145:58;;;10183:18;;:::i;:::-;10221:20;;9441:806;-1:-1:-1;;;9441:806:1:o;10252:140::-;10310:5;10339:47;10380:4;10370:8;10366:19;10360:4;10339:47;:::i;10397:168::-;10437:7;10503:1;10499;10495:6;10491:14;10488:1;10485:21;10480:1;10473:9;10466:17;10462:45;10459:71;;;10510:18;;:::i;:::-;-1:-1:-1;10550:9:1;;10397:168::o;10570:184::-;10640:6;10693:2;10681:9;10672:7;10668:23;10664:32;10661:52;;;10709:1;10706;10699:12;10661:52;-1:-1:-1;10732:16:1;;10570:184;-1:-1:-1;10570:184:1:o;11094:127::-;11155:10;11150:3;11146:20;11143:1;11136:31;11186:4;11183:1;11176:15;11210:4;11207:1;11200:15;11226:135;11265:3;-1:-1:-1;;11286:17:1;;11283:43;;;11306:18;;:::i;:::-;-1:-1:-1;11353:1:1;11342:13;;11226:135::o;11366:217::-;11406:1;11432;11422:132;;11476:10;11471:3;11467:20;11464:1;11457:31;11511:4;11508:1;11501:15;11539:4;11536:1;11529:15;11422:132;-1:-1:-1;11568:9:1;;11366:217::o;13516:128::-;13556:3;13587:1;13583:6;13580:1;13577:13;13574:39;;;13593:18;;:::i;:::-;-1:-1:-1;13629:9:1;;13516:128::o;15040:251::-;15110:6;15163:2;15151:9;15142:7;15138:23;15134:32;15131:52;;;15179:1;15176;15169:12;15131:52;15211:9;15205:16;15230:31;15255:5;15230:31;:::i;15296:980::-;15558:4;15606:3;15595:9;15591:19;15637:6;15626:9;15619:25;15663:2;15701:6;15696:2;15685:9;15681:18;15674:34;15744:3;15739:2;15728:9;15724:18;15717:31;15768:6;15803;15797:13;15834:6;15826;15819:22;15872:3;15861:9;15857:19;15850:26;;15911:2;15903:6;15899:15;15885:29;;15932:1;15942:195;15956:6;15953:1;15950:13;15942:195;;;16021:13;;-1:-1:-1;;;;;16017:39:1;16005:52;;16112:15;;;;16077:12;;;;16053:1;15971:9;15942:195;;;-1:-1:-1;;;;;;;16193:32:1;;;;16188:2;16173:18;;16166:60;-1:-1:-1;;;16257:3:1;16242:19;16235:35;16154:3;15296:980;-1:-1:-1;;;15296:980:1:o;16893:306::-;16981:6;16989;16997;17050:2;17038:9;17029:7;17025:23;17021:32;17018:52;;;17066:1;17063;17056:12;17018:52;17095:9;17089:16;17079:26;;17145:2;17134:9;17130:18;17124:25;17114:35;;17189:2;17178:9;17174:18;17168:25;17158:35;;16893:306;;;;;:::o;17204:125::-;17244:4;17272:1;17269;17266:8;17263:34;;;17277:18;;:::i;:::-;-1:-1:-1;17314:9:1;;17204:125::o
Swarm Source
ipfs://cddb26f1442e9410d1f3d52e3220e5273169a3f6de60edf0bceaf2727de29bad
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,663.7 | 0.000000000000000021 | <$0.000001 |
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.