More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 60574119 | 3 days ago | IN | 0 AVAX | 0.00004639 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
25294395 | 821 days ago | 395.57940314 AVAX | ||||
25294395 | 821 days ago | 395.57940314 AVAX | ||||
25294204 | 821 days ago | 5.30935527 AVAX | ||||
25294204 | 821 days ago | 5.30935527 AVAX | ||||
25293495 | 821 days ago | 5.36689825 AVAX | ||||
25293495 | 821 days ago | 5.36689825 AVAX | ||||
25291294 | 821 days ago | 4.74452185 AVAX | ||||
25291294 | 821 days ago | 4.74452185 AVAX | ||||
25289647 | 821 days ago | 5.06760833 AVAX | ||||
25289647 | 821 days ago | 5.06760833 AVAX | ||||
25288505 | 821 days ago | 5.074289 AVAX | ||||
25288505 | 821 days ago | 5.074289 AVAX | ||||
25285575 | 821 days ago | 5.02290282 AVAX | ||||
25285575 | 821 days ago | 5.02290282 AVAX | ||||
25284291 | 821 days ago | 4.61347874 AVAX | ||||
25284291 | 821 days ago | 4.61347874 AVAX | ||||
25283827 | 821 days ago | 4.91346933 AVAX | ||||
25283827 | 821 days ago | 4.91346933 AVAX | ||||
25283769 | 821 days ago | 4.91346933 AVAX | ||||
25283769 | 821 days ago | 4.91346933 AVAX | ||||
25283742 | 821 days ago | 5.00145708 AVAX | ||||
25283742 | 821 days ago | 5.00145708 AVAX | ||||
25282606 | 821 days ago | 4.49341579 AVAX | ||||
25282606 | 821 days ago | 4.49341579 AVAX | ||||
25282264 | 821 days ago | 5.20469772 AVAX |
Loading...
Loading
Contract Name:
EtherPrint
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2023-01-13 */ pragma solidity ^0.8.0; /** * SAFEMATH LIBRARY */ 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 IBEP20 { 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 getOwner() external view returns (address); 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 Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WAVAX() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityAVAX( address token, uint amountTokenDesired, uint amountTokenMin, uint amountAVAXMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountAVAX, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactAVAXForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForAVAXSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } 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; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded;// excluded dividend uint256 totalRealised; } IBEP20 EP = IBEP20(0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB); address WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed;// to be shown in UI uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 10 * (10 ** 18); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x60aE616a2155Ee3d9A68541Ba4544862310933d4); _token = msg.sender; } 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 = EP.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WAVAX; path[1] = address(EP); router.swapExactAVAXForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = EP.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); EP.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } /* returns the unpaid earnings */ 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(); } } contract EtherPrint is IBEP20, Auth { using SafeMath for uint256; uint256 public constant MASK = type(uint128).max; address EP = 0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB; // EP address public WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address DEAD_NON_CHECKSUM = 0x000000000000000000000000000000000000dEaD; string constant _name = "EtherPrint2.0"; string constant _symbol = "ETHP2"; uint8 constant _decimals = 6; uint256 _totalSupply = 1_000_000_000_000_000 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply.div(40); // 2,5% uint256 public _maxWallet = _totalSupply.div(40); // 2,5% mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isDividendExempt; mapping (address => bool) public _isFree; uint256 liquidityFee = 200; uint256 buybackFee = 0; uint256 reflectionFee = 0; uint256 marketingFee = 600; uint256 totalFee = 800; uint256 feeDenominator = 10000; address public autoLiquidityReceiver=0xB3F6120E4FC40C5aD0bA201A709B586910386F55; address public marketingFeeReceiver=0xB3F6120E4FC40C5aD0bA201A709B586910386F55; uint256 targetLiquidity = 10; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; uint256 public launchedAt; uint256 public launchedAtTimestamp; uint256 buybackMultiplierNumerator = 200; uint256 buybackMultiplierDenominator = 100; uint256 buybackMultiplierTriggeredAt; uint256 buybackMultiplierLength = 30 minutes; bool public autoBuybackEnabled = false; mapping (address => bool) buyBacker; uint256 autoBuybackCap; uint256 autoBuybackAccumulator; uint256 autoBuybackAmount; uint256 autoBuybackBlockPeriod; uint256 autoBuybackBlockLast; DividendDistributor distributor; address public distributorAddress; uint256 distributorGas = 500000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 5000; // 0.0025% bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { address _router = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4; router = IDEXRouter(_router); pair = IDEXFactory(router.factory()).createPair(WAVAX, address(this)); _allowances[address(this)][address(router)] = _totalSupply; WAVAX = router.WAVAX(); distributor = new DividendDistributor(_router); distributorAddress = address(distributor); isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; buyBacker[msg.sender] = true; autoLiquidityReceiver = msg.sender; approve(_router, _totalSupply); approve(address(pair), _totalSupply); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view 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 getOwner() external view override returns (address) { return owner; } modifier onlyBuybacker() { require(buyBacker[msg.sender] == true, ""); _; } 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) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } // Max tx check address routerAddress = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4; bool isBuy=sender== pair|| sender == routerAddress; bool isSell=recipient== pair|| recipient == routerAddress; checkTxLimit(sender, amount); // Max wallet check excluding pair and router if (!isSell && !_isFree[recipient]){ require((_balances[recipient] + amount) < _maxWallet, "Max wallet has been triggered"); } // No swapping on buy and tx if (isSell) { if(shouldSwapBack()){ swapBack(); } if(shouldAutoBuyback()){ triggerAutoBuyback(); } } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : 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); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function getTotalFee(bool selling) public view returns (uint256) { if(launchedAt + 1 >= block.number){ return totalFee; } if(selling){ return totalFee; } return totalFee; } function getMultipliedFee() public view returns (uint256) { return totalFee; } function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WAVAX; uint256 balanceBefore = address(this).balance; router.swapExactTokensForAVAXSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountAVAX = address(this).balance.sub(balanceBefore); uint256 totalAVAXFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountAVAXLiquidity = amountAVAX.mul(dynamicLiquidityFee).div(totalAVAXFee).div(2); uint256 amountAVAXReflection = amountAVAX.mul(reflectionFee).div(totalAVAXFee); uint256 amountAVAXMarketing = amountAVAX.mul(marketingFee).div(totalAVAXFee); try distributor.deposit{value: amountAVAXReflection}() {} catch {} payable(marketingFeeReceiver).transfer(amountAVAXMarketing); if(amountToLiquify > 0){ router.addLiquidityAVAX{value: amountAVAXLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountAVAXLiquidity, amountToLiquify); } } function shouldAutoBuyback() internal view returns (bool) { return msg.sender != pair && !inSwap && autoBuybackEnabled && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number // After N blocks from last buyback && address(this).balance >= autoBuybackAmount; } function triggerZeusBuyback(uint256 amount, bool triggerBuybackMultiplier) external authorized { buyTokens(amount, DEAD); if(triggerBuybackMultiplier){ buybackMultiplierTriggeredAt = block.timestamp; emit BuybackMultiplierActive(buybackMultiplierLength); } } function clearBuybackMultiplier() external authorized { buybackMultiplierTriggeredAt = 0; } function triggerAutoBuyback() internal { buyTokens(autoBuybackAmount, DEAD); autoBuybackBlockLast = block.number; autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount); if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; } } function buyTokens(uint256 amount, address to) internal swapping { address[] memory path = new address[](2); path[0] = WAVAX; path[1] = address(this); router.swapExactAVAXForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } function Sweep() external authorized { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized { autoBuybackEnabled = _enabled; autoBuybackCap = _cap; autoBuybackAccumulator = 0; autoBuybackAmount = _amount; autoBuybackBlockPeriod = _period; autoBuybackBlockLast = block.number; } function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized { require(numerator / denominator <= 2 && numerator > denominator); buybackMultiplierNumerator = numerator; buybackMultiplierDenominator = denominator; buybackMultiplierLength = length; } function launched() internal view returns (bool) { return launchedAt != 0; } function launch() public authorized { require(launchedAt == 0, "Already launched boi"); launchedAt = block.number; launchedAtTimestamp = block.timestamp; } function setMaxWallet(uint256 amount) external authorized { require(amount >= _totalSupply / 1000); _maxWallet = amount; } function setTxLimit(uint256 amount) external authorized { require(amount >= _totalSupply / 1000); _maxTxAmount = amount; } function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setFree(address holder) public onlyOwner { _isFree[holder] = true; } function unSetFree(address holder) public onlyOwner { _isFree[holder] = false; } function checkFree(address holder) public view onlyOwner returns(bool){ return _isFree[holder]; } function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; buybackFee = _buybackFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator/4); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } event AutoLiquify(uint256 amountAVAX, uint256 amountBOG); event BuybackMultiplierActive(uint256 duration); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountAVAX","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WAVAX","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"holder","type":"address"}],"name":"checkFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultipliedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","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"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"setFree","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":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","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":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unSetFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b03199081167349d5c2bdffac6ce2bfdb6640f4f80f226bc10bab1790915560038054821673b31f66aa3c1e785363f0875a1b74e27b85fd66c717905560048054821661dead9081179091556005805483169055600680549092161781556200007990600a62000644565b6200008c9066038d7ea4c6800062000703565b600755620000ac60286007546200051460201b620015781790919060201c565b600855620000cc60286007546200051460201b620015781790919060201c565b60095560c86010819055600060118190556012556102586013556103206014556127106015556016805473b3f6120e4fc40c5ad0ba201a709b586910386f556001600160a01b03199182168117909255601780549091169091179055600a60185560646019819055601e91909155601f556107086021556022805460ff199081169091556207a120602b55602c80549091166001179055600754620001759061138890620005d8565b602d553480156200018557600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601a80547360ae616a2155ee3d9a68541ba4544862310933d4931683179055825163c45a015560e01b815292519192839263c45a015592600480840193919291829003018186803b1580156200020b57600080fd5b505afa15801562000220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002469190620005a6565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200029357600080fd5b505af1158015620002a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ce9190620005a6565b601b80546001600160a01b0319166001600160a01b03928316179055600754306000908152600b60209081526040808320601a8054871685529083529281902093909355905482516339d94ae160e11b815292519316926373b295c2926004808201939291829003018186803b1580156200034857600080fd5b505afa1580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003839190620005a6565b600380546001600160a01b0319166001600160a01b03929092169190911790556040518190620003b39062000598565b6001600160a01b039091168152602001604051809103906000f080158015620003e0573d6000803e3d6000fd5b50602980546001600160a01b039283166001600160a01b03199182168117909255602a80548216909217909155336000818152600c60209081526040808320805460ff199081166001908117909255600d84528285208054821683179055601b5488168552600e845282852080548216831790553085528285208054821683179055600454909716845281842080548816821790558484526023909252909120805490941617909255601680549091169091179055600754620004a59082906200052b565b50601b54600754620004c1916001600160a01b0316906200052b565b50600754336000818152600a6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200073b565b6000620005228284620005d8565b90505b92915050565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620005879086815260200190565b60405180910390a350600192915050565b610e588062002d1383390190565b600060208284031215620005b957600080fd5b81516001600160a01b0381168114620005d157600080fd5b9392505050565b600082620005f657634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200063c57816000190482111562000620576200062062000725565b808516156200062e57918102915b93841c939080029062000600565b509250929050565b60006200052260ff841683600082620006605750600162000525565b816200066f5750600062000525565b81600181146200068857600281146200069357620006b3565b600191505062000525565b60ff841115620006a757620006a762000725565b50506001821b62000525565b5060208310610133831016604e8410600b8410161715620006d8575081810a62000525565b620006e48383620005fb565b8060001904821115620006fb57620006fb62000725565b029392505050565b600081600019048311821515161562000720576200072062000725565b500290565b634e487b7160e01b600052601160045260246000fd5b6125c8806200074b6000396000f3fe60806040526004361061036f5760003560e01c806382247ec0116101c6578063d51ed1c8116100f7578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610a3e578063f84ba65d14610a5e578063f887ea4014610a7e578063fe9fbb8014610a9e57600080fd5b8063f1f3bca3146109de578063f2fde38b146109fe578063f5cfec0a14610a1e57600080fd5b8063df20fd49116100d1578063df20fd491461095a578063e91f214e1461097a578063e96fada21461099e578063f0b37c04146109be57600080fd5b8063d51ed1c8146108df578063d806d12f146108ff578063dd62ed3e1461091457600080fd5b8063a8aa1b3111610164578063b6a5d7de1161013e578063b6a5d7de14610873578063bf56b37114610893578063c6d2577d146108a9578063ca33e64c146108bf57600080fd5b8063a8aa1b311461081e578063a9059cbb1461083e578063b210b06d1461085e57600080fd5b806395d89b41116101a057806395d89b41146107905780639d1944f5146107be578063a4b45c00146107de578063a51af4c5146107fe57600080fd5b806382247ec01461073c578063893d20e81461075257806389ef69f61461077057600080fd5b80632d48e896116102a05780635d0044ca1161023e5780637088fb7f116102185780637088fb7f146106a357806370a08231146106b857806373b295c2146106ee5780637d1db4a51461072657600080fd5b80635d0044ca14610649578063658d4b7f146106695780636ddd17131461068957600080fd5b80633425c0011161027a5780633425c001146105cf5780633bb8a8d4146105ef578063571ac8b0146106095780635c85974f1461062957600080fd5b80632d48e896146105645780632f54bf6e14610584578063313ce567146105b357600080fd5b80631161ae391161030d5780632375ce40116102e75780632375ce40146104df57806323b872dd146104ff578063296020e71461051f5780632b112e491461054f57600080fd5b80631161ae391461048a57806318160ddd146104aa578063201e7991146104bf57600080fd5b806304a66b481161034957806304a66b48146103db57806306fdde03146103fb57806307c89fe81461043a578063095ea7b31461046a57600080fd5b806301339c211461037b5780630445b66714610392578063048c7baf146103bb57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610abe565b005b34801561039e57600080fd5b506103a8602d5481565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103906103d6366004612263565b610b3d565b3480156103e757600080fd5b506103906103f6366004612354565b610b8b565b34801561040757600080fd5b5060408051808201909152600d81526c045746865725072696e74322e3609c1b60208201525b6040516103b29190612408565b34801561044657600080fd5b5061045a610455366004612134565b610c01565b60405190151581526020016103b2565b34801561047657600080fd5b5061045a610485366004612200565b610c4f565b34801561049657600080fd5b5061045a6104a53660046122d8565b610cbb565b3480156104b657600080fd5b506007546103a8565b3480156104cb57600080fd5b506103906104da3660046122d8565b610ccf565b3480156104eb57600080fd5b506103906104fa3660046122fa565b610cff565b34801561050b57600080fd5b5061045a61051a36600461218a565b610d54565b34801561052b57600080fd5b5061045a61053a366004612134565b600f6020526000908152604090205460ff1681565b34801561055b57600080fd5b506103a8610e18565b34801561057057600080fd5b5061039061057f3660046122d8565b610e6a565b34801561059057600080fd5b5061045a61059f366004612134565b6000546001600160a01b0391821691161490565b3480156105bf57600080fd5b50604051600681526020016103b2565b3480156105db57600080fd5b506103906105ea366004612134565b610ef9565b3480156105fb57600080fd5b5060225461045a9060ff1681565b34801561061557600080fd5b5061045a610624366004612134565b610f44565b34801561063557600080fd5b5061039061064436600461229c565b610f58565b34801561065557600080fd5b5061039061066436600461229c565b610f9e565b34801561067557600080fd5b506103906106843660046121cb565b610fe4565b34801561069557600080fd5b50602c5461045a9060ff1681565b3480156106af57600080fd5b50610390611034565b3480156106c457600080fd5b506103a86106d3366004612134565b6001600160a01b03166000908152600a602052604090205490565b3480156106fa57600080fd5b5060035461070e906001600160a01b031681565b6040516001600160a01b0390911681526020016103b2565b34801561073257600080fd5b506103a860085481565b34801561074857600080fd5b506103a860095481565b34801561075e57600080fd5b506000546001600160a01b031661070e565b34801561077c57600080fd5b5061039061078b366004612134565b61108c565b34801561079c57600080fd5b5060408051808201909152600581526422aa24281960d91b602082015261042d565b3480156107ca57600080fd5b506103906107d936600461229c565b6110da565b3480156107ea57600080fd5b506103906107f9366004612151565b611113565b34801561080a57600080fd5b50602a5461070e906001600160a01b031681565b34801561082a57600080fd5b50601b5461070e906001600160a01b031681565b34801561084a57600080fd5b5061045a610859366004612200565b611166565b34801561086a57600080fd5b50610390611173565b34801561087f57600080fd5b5061039061088e366004612134565b61119f565b34801561089f57600080fd5b506103a8601c5481565b3480156108b557600080fd5b506103a8601d5481565b3480156108cb57600080fd5b5060165461070e906001600160a01b031681565b3480156108eb57600080fd5b506103a86108fa36600461229c565b6111f0565b34801561090b57600080fd5b506014546103a8565b34801561092057600080fd5b506103a861092f366004612151565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561096657600080fd5b50610390610975366004612247565b611234565b34801561098657600080fd5b506103a86fffffffffffffffffffffffffffffffff81565b3480156109aa57600080fd5b5060175461070e906001600160a01b031681565b3480156109ca57600080fd5b506103906109d9366004612134565b611270565b3480156109ea57600080fd5b506103a86109f936600461222c565b6112bb565b348015610a0a57600080fd5b50610390610a19366004612134565b6112f0565b348015610a2a57600080fd5b50610390610a393660046122b5565b611386565b348015610a4a57600080fd5b50610390610a593660046121cb565b611406565b348015610a6a57600080fd5b50610390610a793660046121cb565b61150a565b348015610a8a57600080fd5b50601a5461070e906001600160a01b031681565b348015610aaa57600080fd5b5061045a610ab9366004612134565b61155a565b610ac73361155a565b610aec5760405162461bcd60e51b8152600401610ae39061247d565b60405180910390fd5b601c5415610b335760405162461bcd60e51b8152602060048201526014602482015273416c7265616479206c61756e6368656420626f6960601b6044820152606401610ae3565b43601c5542601d55565b610b463361155a565b610b625760405162461bcd60e51b8152600401610ae39061247d565b6022805460ff191694151594909417909355602491909155600060255560265560275543602855565b610b943361155a565b610bb05760405162461bcd60e51b8152600401610ae39061247d565b6010859055601184905560128390556013829055610bda82610bd485818989611584565b90611584565b6014556015819055610bed6004826124f6565b60145410610bfa57600080fd5b5050505050565b600080546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610ae39061245d565b506001600160a01b0381166000908152600f602052604090205460ff165b919050565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610caa9086815260200190565b60405180910390a350600192915050565b600082610cc7836111f0565b119392505050565b610cd83361155a565b610cf45760405162461bcd60e51b8152600401610ae39061247d565b601891909155601955565b610d083361155a565b610d245760405162461bcd60e51b8152600401610ae39061247d565b6002610d3083856124f6565b11158015610d3d57508183115b610d4657600080fd5b601e92909255601f55602155565b6007546001600160a01b0384166000908152600b60209081526040808320338452909152812054909114610e03576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610dde918490611590565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610e0e8484846115bc565b90505b9392505050565b6005546001600160a01b03166000908152600a6020526040812054610e65906004546001600160a01b03166000908152600a6020526040902054610e5f90600754906119dd565b906119dd565b905090565b610e733361155a565b610e8f5760405162461bcd60e51b8152600401610ae39061247d565b6029546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610edd57600080fd5b505af1158015610ef1573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610f235760405162461bcd60e51b8152600401610ae39061245d565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000610f5282600754610c4f565b92915050565b610f613361155a565b610f7d5760405162461bcd60e51b8152600401610ae39061247d565b6103e8600754610f8d91906124f6565b811015610f9957600080fd5b600855565b610fa73361155a565b610fc35760405162461bcd60e51b8152600401610ae39061247d565b6103e8600754610fd391906124f6565b811015610fdf57600080fd5b600955565b610fed3361155a565b6110095760405162461bcd60e51b8152600401610ae39061247d565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b61103d3361155a565b6110595760405162461bcd60e51b8152600401610ae39061247d565b6040514790339082156108fc029083906000818181858888f19350505050158015611088573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146110b65760405162461bcd60e51b8152600401610ae39061245d565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6110e33361155a565b6110ff5760405162461bcd60e51b8152600401610ae39061247d565b620b71b0811061110e57600080fd5b602b55565b61111c3361155a565b6111385760405162461bcd60e51b8152600401610ae39061247d565b601680546001600160a01b039384166001600160a01b03199182161790915560178054929093169116179055565b6000610e113384846115bc565b61117c3361155a565b6111985760405162461bcd60e51b8152600401610ae39061247d565b6000602055565b6000546001600160a01b031633146111c95760405162461bcd60e51b8152600401610ae39061245d565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610f526111fd610e18565b601b546001600160a01b03166000908152600a602052604090205461122e906112279060026119e9565b85906119e9565b90611578565b61123d3361155a565b6112595760405162461bcd60e51b8152600401610ae39061247d565b602c805460ff191692151592909217909155602d55565b6000546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610ae39061245d565b6001600160a01b03166000908152600160205260409020805460ff19169055565b600043601c5460016112cd91906124de565b106112da57505060145490565b81156112e857505060145490565b505060145490565b6000546001600160a01b0316331461131a5760405162461bcd60e51b8152600401610ae39061245d565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61138f3361155a565b6113ab5760405162461bcd60e51b8152600401610ae39061247d565b6004546113c29083906001600160a01b03166119f5565b8015611088574260209081556021546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a910160405180910390a15050565b61140f3361155a565b61142b5760405162461bcd60e51b8152600401610ae39061247d565b6001600160a01b03821630148015906114525750601b546001600160a01b03838116911614155b61145b57600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff191682158015919091179091556114c157602954604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610ec3565b6029546001600160a01b038381166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610ec3565b6115133361155a565b61152f5760405162461bcd60e51b8152600401610ae39061247d565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000610e1182846124f6565b6000610e1182846124de565b600081848411156115b45760405162461bcd60e51b8152600401610ae39190612408565b505050900390565b602e5460009060ff16156115dc576115d5848484611afe565b9050610e11565b601b547360ae616a2155ee3d9a68541ba4544862310933d4906000906001600160a01b03878116911614806116225750816001600160a01b0316866001600160a01b0316145b601b549091506000906001600160a01b03878116911614806116555750826001600160a01b0316866001600160a01b0316145b90506116618786611ba1565b8015801561168857506001600160a01b0386166000908152600f602052604090205460ff16155b15611701576009546001600160a01b0387166000908152600a60205260409020546116b49087906124de565b106117015760405162461bcd60e51b815260206004820152601d60248201527f4d61782077616c6c657420686173206265656e207472696767657265640000006044820152606401610ae3565b80156117315761170f611c0a565b1561171c5761171c611c59565b611724611fc7565b1561173157611731612022565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a166000908152600a9091529190912054611783918790611590565b6001600160a01b0388166000908152600a6020908152604080832093909355600c90529081205460ff16156117b857856117c3565b6117c3888888612069565b6001600160a01b0388166000908152600a60205260409020549091506117e99082611584565b6001600160a01b038089166000908152600a6020908152604080832094909455918b168152600e909152205460ff1661188d576029546001600160a01b038981166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561187a57600080fd5b505af192505050801561188b575060015b505b6001600160a01b0387166000908152600e602052604090205460ff1661191e576029546001600160a01b038881166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561190b57600080fd5b505af192505050801561191c575060015b505b602954602b546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119569160040190815260200190565b600060405180830381600087803b15801561197057600080fd5b505af1925050508015611981575060015b50866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119c791815260200190565b60405180910390a3506001979650505050505050565b6000610e118284612537565b6000610e118284612518565b602e805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b031691839150600090611a4357611a43612564565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a7757611a77612564565b6001600160a01b039283166020918202929092010152601a5460405163c57559dd60e01b815291169063c57559dd908590611abd906000908690889042906004016123d3565b6000604051808303818588803b158015611ad657600080fd5b505af1158015611aea573d6000803e3d6000fd5b5050602e805460ff19169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611b4f918490611590565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611b7e9083611584565b6001600160a01b0384166000908152600a60205260409020555060019392505050565b60085481111580611bca57506001600160a01b0382166000908152600d602052604090205460ff165b6110885760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ae3565b601b546000906001600160a01b03163314801590611c2b5750602e5460ff16155b8015611c395750602c5460ff165b8015610e65575050602d54306000908152600a6020526040902054101590565b602e805460ff19166001179055601854601954600091611c7891610cbb565b611c8457601054611c87565b60005b90506000611cab600261122e60145461122e86602d546119e990919063ffffffff16565b90506000611cc482602d546119dd90919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611cfe57611cfe612564565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611d2f57611d2f612564565b6001600160a01b039283166020918202929092010152601a54604051633b158ab160e11b81524792919091169063762b156290611d799086906000908790309042906004016124a2565b600060405180830381600087803b158015611d9357600080fd5b505af1158015611da7573d6000803e3d6000fd5b505050506000611dc082476119dd90919063ffffffff16565b90506000611ddb611dd2886002611578565b601454906119dd565b90506000611df0600261122e8481878d6119e9565b90506000611e0d8361122e601254876119e990919063ffffffff16565b90506000611e2a8461122e601354886119e990919063ffffffff16565b9050602960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e7c57600080fd5b505af193505050508015611e8e575060015b506017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611ec9573d6000803e3d6000fd5b508815611fb157601a54601654604051637c8d9fb960e11b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290859060c4016060604051808303818588803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f749190612326565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602e805460ff191690555050505050505050565b601b546000906001600160a01b03163314801590611fe85750602e5460ff16155b8015611ff6575060225460ff165b801561201157504360275460285461200e91906124de565b11155b8015610e6557505060265447101590565b60265460045461203b91906001600160a01b03166119f5565b4360285560265460255461204e91611584565b60258190556024541015612067576022805460ff191690555b565b601554601b54600091829161209b919061122e90612094906001600160a01b038981169116146112bb565b86906119e9565b306000908152600a60205260409020549091506120b89082611584565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121099085815260200190565b60405180910390a361211b83826119dd565b95945050505050565b80358015158114610c4a57600080fd5b60006020828403121561214657600080fd5b8135610e118161257a565b6000806040838503121561216457600080fd5b823561216f8161257a565b9150602083013561217f8161257a565b809150509250929050565b60008060006060848603121561219f57600080fd5b83356121aa8161257a565b925060208401356121ba8161257a565b929592945050506040919091013590565b600080604083850312156121de57600080fd5b82356121e98161257a565b91506121f760208401612124565b90509250929050565b6000806040838503121561221357600080fd5b823561221e8161257a565b946020939093013593505050565b60006020828403121561223e57600080fd5b610e1182612124565b6000806040838503121561225a57600080fd5b61221e83612124565b6000806000806080858703121561227957600080fd5b61228285612124565b966020860135965060408601359560600135945092505050565b6000602082840312156122ae57600080fd5b5035919050565b600080604083850312156122c857600080fd5b823591506121f760208401612124565b600080604083850312156122eb57600080fd5b50508035926020909101359150565b60008060006060848603121561230f57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561233b57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561236c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600081518084526020808501945080840160005b838110156123c85781516001600160a01b0316875295820195908201906001016123a3565b509495945050505050565b8481526080602082015260006123ec608083018661238f565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561243557858101830151858201604001528201612419565b81811115612447576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a0604082015260006124c160a083018661238f565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156124f1576124f161254e565b500190565b60008261251357634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156125325761253261254e565b500290565b6000828210156125495761254961254e565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461258f57600080fd5b5056fea2646970667358221220f4a9feb4b16cde93d85fc13471ce0cc512f2a39a68c3768253cad592bc69f7dc64736f6c634300080700336080604052600180546001600160a01b03199081167349d5c2bdffac6ce2bfdb6640f4f80f226bc10bab179091556002805490911673b31f66aa3c1e785363f0875a1b74e27b85fd66c71790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55678ac7230489e80000600e5534801561007d57600080fd5b50604051610e58380380610e5883398101604081905261009c916100f6565b6001600160a01b0381166100c4577360ae616a2155ee3d9a68541ba4544862310933d46100c6565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610126565b60006020828403121561010857600080fd5b81516001600160a01b038116811461011f57600080fd5b9392505050565b610d23806101356000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610b16565b610285565b005b34801561013957600080fd5b506100f8610148366004610afb565b6103fd565b34801561015957600080fd5b5061012b610168366004610b94565b610486565b34801561017957600080fd5b506100f860085481565b34801561018f57600080fd5b506100f8600e5481565b3480156101a557600080fd5b506100f860095481565b3480156101bb57600080fd5b506101eb6101ca366004610afb565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104a8565b34801561021a57600080fd5b506100f8600b5481565b34801561023057600080fd5b506100f8600a5481565b34801561024657600080fd5b5061012b6106f5565b34801561025b57600080fd5b5061012b61026a366004610b62565b610700565b34801561027b57600080fd5b506100f8600d5481565b6000546001600160a01b0316331461029c57600080fd5b6001600160a01b038216600090815260076020526040902054156102c3576102c382610800565b6000811180156102e957506001600160a01b038216600090815260076020526040902054155b1561034f57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055610382565b8015801561037457506001600160a01b03821660009081526007602052604090205415155b15610382576103828261092b565b6001600160a01b0382166000908152600760205260409020546008546103b39183916103ad91610a40565b90610a53565b6008556001600160a01b03821660009081526007602052604090208190556103da81610a5f565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461042257506000919050565b6001600160a01b03821660009081526007602052604081205461044490610a5f565b6001600160a01b038416600090815260076020526040902060010154909150808211610474575060009392505050565b61047e8282610a40565b949350505050565b6000546001600160a01b0316331461049d57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104bf57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561050357600080fd5b505afa158015610517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053b9190610b7b565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061058157610581610cd7565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105b1576105b1610cd7565b6001600160a01b03928316602091820292909201015260035460405163c57559dd60e01b815291169063c57559dd9034906105f790600090869030904290600401610bb6565b6000604051808303818588803b15801561061057600080fd5b505af1158015610624573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106b393508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190610b7b565b90610a40565b6009549091506106c39082610a53565b600955600854600c546106ed916106e4916106de9085610a82565b90610a8e565b600b5490610a53565b600b55505050565b6106fe33610800565b565b6000546001600160a01b0316331461071757600080fd5b60045480610723575050565b6000805a905060005b848310801561073a57508381105b156107f95783600f541061074e576000600f555b6107806004600f548154811061076657610766610cd7565b6000918252602090912001546001600160a01b0316610a9a565b156107b7576107b76004600f548154811061079d5761079d610cd7565b6000918252602090912001546001600160a01b0316610800565b6107cc6107c55a8490610a40565b8490610a53565b92505a600f805491935060006107e183610c90565b919050555080806107f190610c90565b91505061072c565b5050505050565b6001600160a01b0381166000908152600760205260409020546108205750565b600061082b826103fd565b9050801561092757600a546108409082610a53565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190610b40565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546108fd9082610a53565b6001600160a01b03831660009081526007602052604090206002810191909155546103da90610a5f565b5050565b6004805461093b90600190610c79565b8154811061094b5761094b610cd7565b60009182526020808320909101546001600160a01b038481168452600590925260409092205460048054929093169291811061098957610989610cd7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109d590600190610c79565b815481106109e5576109e5610cd7565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a1b57610a1b610cc1565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a4c8284610c79565b9392505050565b6000610a4c8284610c20565b6000610a7c600c546106de600b5485610a8290919063ffffffff16565b92915050565b6000610a4c8284610c5a565b6000610a4c8284610c38565b600d546001600160a01b03821660009081526006602052604081205490914291610ac49190610c20565b108015610a7c5750600e54610ad8836103fd565b1192915050565b80356001600160a01b0381168114610af657600080fd5b919050565b600060208284031215610b0d57600080fd5b610a4c82610adf565b60008060408385031215610b2957600080fd5b610b3283610adf565b946020939093013593505050565b600060208284031215610b5257600080fd5b81518015158114610a4c57600080fd5b600060208284031215610b7457600080fd5b5035919050565b600060208284031215610b8d57600080fd5b5051919050565b60008060408385031215610ba757600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610c005784516001600160a01b031683529383019391830191600101610bdb565b50506001600160a01b039690961660408501525050506060015292915050565b60008219821115610c3357610c33610cab565b500190565b600082610c5557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610c7457610c74610cab565b500290565b600082821015610c8b57610c8b610cab565b500390565b6000600019821415610ca457610ca4610cab565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea2646970667358221220e04797e3241aaaecfa659263109d6490055cce1cd7af44b8334613a3b46cd3fa64736f6c63430008070033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806382247ec0116101c6578063d51ed1c8116100f7578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610a3e578063f84ba65d14610a5e578063f887ea4014610a7e578063fe9fbb8014610a9e57600080fd5b8063f1f3bca3146109de578063f2fde38b146109fe578063f5cfec0a14610a1e57600080fd5b8063df20fd49116100d1578063df20fd491461095a578063e91f214e1461097a578063e96fada21461099e578063f0b37c04146109be57600080fd5b8063d51ed1c8146108df578063d806d12f146108ff578063dd62ed3e1461091457600080fd5b8063a8aa1b3111610164578063b6a5d7de1161013e578063b6a5d7de14610873578063bf56b37114610893578063c6d2577d146108a9578063ca33e64c146108bf57600080fd5b8063a8aa1b311461081e578063a9059cbb1461083e578063b210b06d1461085e57600080fd5b806395d89b41116101a057806395d89b41146107905780639d1944f5146107be578063a4b45c00146107de578063a51af4c5146107fe57600080fd5b806382247ec01461073c578063893d20e81461075257806389ef69f61461077057600080fd5b80632d48e896116102a05780635d0044ca1161023e5780637088fb7f116102185780637088fb7f146106a357806370a08231146106b857806373b295c2146106ee5780637d1db4a51461072657600080fd5b80635d0044ca14610649578063658d4b7f146106695780636ddd17131461068957600080fd5b80633425c0011161027a5780633425c001146105cf5780633bb8a8d4146105ef578063571ac8b0146106095780635c85974f1461062957600080fd5b80632d48e896146105645780632f54bf6e14610584578063313ce567146105b357600080fd5b80631161ae391161030d5780632375ce40116102e75780632375ce40146104df57806323b872dd146104ff578063296020e71461051f5780632b112e491461054f57600080fd5b80631161ae391461048a57806318160ddd146104aa578063201e7991146104bf57600080fd5b806304a66b481161034957806304a66b48146103db57806306fdde03146103fb57806307c89fe81461043a578063095ea7b31461046a57600080fd5b806301339c211461037b5780630445b66714610392578063048c7baf146103bb57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610abe565b005b34801561039e57600080fd5b506103a8602d5481565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103906103d6366004612263565b610b3d565b3480156103e757600080fd5b506103906103f6366004612354565b610b8b565b34801561040757600080fd5b5060408051808201909152600d81526c045746865725072696e74322e3609c1b60208201525b6040516103b29190612408565b34801561044657600080fd5b5061045a610455366004612134565b610c01565b60405190151581526020016103b2565b34801561047657600080fd5b5061045a610485366004612200565b610c4f565b34801561049657600080fd5b5061045a6104a53660046122d8565b610cbb565b3480156104b657600080fd5b506007546103a8565b3480156104cb57600080fd5b506103906104da3660046122d8565b610ccf565b3480156104eb57600080fd5b506103906104fa3660046122fa565b610cff565b34801561050b57600080fd5b5061045a61051a36600461218a565b610d54565b34801561052b57600080fd5b5061045a61053a366004612134565b600f6020526000908152604090205460ff1681565b34801561055b57600080fd5b506103a8610e18565b34801561057057600080fd5b5061039061057f3660046122d8565b610e6a565b34801561059057600080fd5b5061045a61059f366004612134565b6000546001600160a01b0391821691161490565b3480156105bf57600080fd5b50604051600681526020016103b2565b3480156105db57600080fd5b506103906105ea366004612134565b610ef9565b3480156105fb57600080fd5b5060225461045a9060ff1681565b34801561061557600080fd5b5061045a610624366004612134565b610f44565b34801561063557600080fd5b5061039061064436600461229c565b610f58565b34801561065557600080fd5b5061039061066436600461229c565b610f9e565b34801561067557600080fd5b506103906106843660046121cb565b610fe4565b34801561069557600080fd5b50602c5461045a9060ff1681565b3480156106af57600080fd5b50610390611034565b3480156106c457600080fd5b506103a86106d3366004612134565b6001600160a01b03166000908152600a602052604090205490565b3480156106fa57600080fd5b5060035461070e906001600160a01b031681565b6040516001600160a01b0390911681526020016103b2565b34801561073257600080fd5b506103a860085481565b34801561074857600080fd5b506103a860095481565b34801561075e57600080fd5b506000546001600160a01b031661070e565b34801561077c57600080fd5b5061039061078b366004612134565b61108c565b34801561079c57600080fd5b5060408051808201909152600581526422aa24281960d91b602082015261042d565b3480156107ca57600080fd5b506103906107d936600461229c565b6110da565b3480156107ea57600080fd5b506103906107f9366004612151565b611113565b34801561080a57600080fd5b50602a5461070e906001600160a01b031681565b34801561082a57600080fd5b50601b5461070e906001600160a01b031681565b34801561084a57600080fd5b5061045a610859366004612200565b611166565b34801561086a57600080fd5b50610390611173565b34801561087f57600080fd5b5061039061088e366004612134565b61119f565b34801561089f57600080fd5b506103a8601c5481565b3480156108b557600080fd5b506103a8601d5481565b3480156108cb57600080fd5b5060165461070e906001600160a01b031681565b3480156108eb57600080fd5b506103a86108fa36600461229c565b6111f0565b34801561090b57600080fd5b506014546103a8565b34801561092057600080fd5b506103a861092f366004612151565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561096657600080fd5b50610390610975366004612247565b611234565b34801561098657600080fd5b506103a86fffffffffffffffffffffffffffffffff81565b3480156109aa57600080fd5b5060175461070e906001600160a01b031681565b3480156109ca57600080fd5b506103906109d9366004612134565b611270565b3480156109ea57600080fd5b506103a86109f936600461222c565b6112bb565b348015610a0a57600080fd5b50610390610a19366004612134565b6112f0565b348015610a2a57600080fd5b50610390610a393660046122b5565b611386565b348015610a4a57600080fd5b50610390610a593660046121cb565b611406565b348015610a6a57600080fd5b50610390610a793660046121cb565b61150a565b348015610a8a57600080fd5b50601a5461070e906001600160a01b031681565b348015610aaa57600080fd5b5061045a610ab9366004612134565b61155a565b610ac73361155a565b610aec5760405162461bcd60e51b8152600401610ae39061247d565b60405180910390fd5b601c5415610b335760405162461bcd60e51b8152602060048201526014602482015273416c7265616479206c61756e6368656420626f6960601b6044820152606401610ae3565b43601c5542601d55565b610b463361155a565b610b625760405162461bcd60e51b8152600401610ae39061247d565b6022805460ff191694151594909417909355602491909155600060255560265560275543602855565b610b943361155a565b610bb05760405162461bcd60e51b8152600401610ae39061247d565b6010859055601184905560128390556013829055610bda82610bd485818989611584565b90611584565b6014556015819055610bed6004826124f6565b60145410610bfa57600080fd5b5050505050565b600080546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610ae39061245d565b506001600160a01b0381166000908152600f602052604090205460ff165b919050565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610caa9086815260200190565b60405180910390a350600192915050565b600082610cc7836111f0565b119392505050565b610cd83361155a565b610cf45760405162461bcd60e51b8152600401610ae39061247d565b601891909155601955565b610d083361155a565b610d245760405162461bcd60e51b8152600401610ae39061247d565b6002610d3083856124f6565b11158015610d3d57508183115b610d4657600080fd5b601e92909255601f55602155565b6007546001600160a01b0384166000908152600b60209081526040808320338452909152812054909114610e03576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610dde918490611590565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610e0e8484846115bc565b90505b9392505050565b6005546001600160a01b03166000908152600a6020526040812054610e65906004546001600160a01b03166000908152600a6020526040902054610e5f90600754906119dd565b906119dd565b905090565b610e733361155a565b610e8f5760405162461bcd60e51b8152600401610ae39061247d565b6029546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610edd57600080fd5b505af1158015610ef1573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610f235760405162461bcd60e51b8152600401610ae39061245d565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000610f5282600754610c4f565b92915050565b610f613361155a565b610f7d5760405162461bcd60e51b8152600401610ae39061247d565b6103e8600754610f8d91906124f6565b811015610f9957600080fd5b600855565b610fa73361155a565b610fc35760405162461bcd60e51b8152600401610ae39061247d565b6103e8600754610fd391906124f6565b811015610fdf57600080fd5b600955565b610fed3361155a565b6110095760405162461bcd60e51b8152600401610ae39061247d565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b61103d3361155a565b6110595760405162461bcd60e51b8152600401610ae39061247d565b6040514790339082156108fc029083906000818181858888f19350505050158015611088573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146110b65760405162461bcd60e51b8152600401610ae39061245d565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6110e33361155a565b6110ff5760405162461bcd60e51b8152600401610ae39061247d565b620b71b0811061110e57600080fd5b602b55565b61111c3361155a565b6111385760405162461bcd60e51b8152600401610ae39061247d565b601680546001600160a01b039384166001600160a01b03199182161790915560178054929093169116179055565b6000610e113384846115bc565b61117c3361155a565b6111985760405162461bcd60e51b8152600401610ae39061247d565b6000602055565b6000546001600160a01b031633146111c95760405162461bcd60e51b8152600401610ae39061245d565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610f526111fd610e18565b601b546001600160a01b03166000908152600a602052604090205461122e906112279060026119e9565b85906119e9565b90611578565b61123d3361155a565b6112595760405162461bcd60e51b8152600401610ae39061247d565b602c805460ff191692151592909217909155602d55565b6000546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610ae39061245d565b6001600160a01b03166000908152600160205260409020805460ff19169055565b600043601c5460016112cd91906124de565b106112da57505060145490565b81156112e857505060145490565b505060145490565b6000546001600160a01b0316331461131a5760405162461bcd60e51b8152600401610ae39061245d565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61138f3361155a565b6113ab5760405162461bcd60e51b8152600401610ae39061247d565b6004546113c29083906001600160a01b03166119f5565b8015611088574260209081556021546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a910160405180910390a15050565b61140f3361155a565b61142b5760405162461bcd60e51b8152600401610ae39061247d565b6001600160a01b03821630148015906114525750601b546001600160a01b03838116911614155b61145b57600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff191682158015919091179091556114c157602954604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610ec3565b6029546001600160a01b038381166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610ec3565b6115133361155a565b61152f5760405162461bcd60e51b8152600401610ae39061247d565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000610e1182846124f6565b6000610e1182846124de565b600081848411156115b45760405162461bcd60e51b8152600401610ae39190612408565b505050900390565b602e5460009060ff16156115dc576115d5848484611afe565b9050610e11565b601b547360ae616a2155ee3d9a68541ba4544862310933d4906000906001600160a01b03878116911614806116225750816001600160a01b0316866001600160a01b0316145b601b549091506000906001600160a01b03878116911614806116555750826001600160a01b0316866001600160a01b0316145b90506116618786611ba1565b8015801561168857506001600160a01b0386166000908152600f602052604090205460ff16155b15611701576009546001600160a01b0387166000908152600a60205260409020546116b49087906124de565b106117015760405162461bcd60e51b815260206004820152601d60248201527f4d61782077616c6c657420686173206265656e207472696767657265640000006044820152606401610ae3565b80156117315761170f611c0a565b1561171c5761171c611c59565b611724611fc7565b1561173157611731612022565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a166000908152600a9091529190912054611783918790611590565b6001600160a01b0388166000908152600a6020908152604080832093909355600c90529081205460ff16156117b857856117c3565b6117c3888888612069565b6001600160a01b0388166000908152600a60205260409020549091506117e99082611584565b6001600160a01b038089166000908152600a6020908152604080832094909455918b168152600e909152205460ff1661188d576029546001600160a01b038981166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561187a57600080fd5b505af192505050801561188b575060015b505b6001600160a01b0387166000908152600e602052604090205460ff1661191e576029546001600160a01b038881166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561190b57600080fd5b505af192505050801561191c575060015b505b602954602b546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119569160040190815260200190565b600060405180830381600087803b15801561197057600080fd5b505af1925050508015611981575060015b50866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119c791815260200190565b60405180910390a3506001979650505050505050565b6000610e118284612537565b6000610e118284612518565b602e805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b031691839150600090611a4357611a43612564565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a7757611a77612564565b6001600160a01b039283166020918202929092010152601a5460405163c57559dd60e01b815291169063c57559dd908590611abd906000908690889042906004016123d3565b6000604051808303818588803b158015611ad657600080fd5b505af1158015611aea573d6000803e3d6000fd5b5050602e805460ff19169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611b4f918490611590565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611b7e9083611584565b6001600160a01b0384166000908152600a60205260409020555060019392505050565b60085481111580611bca57506001600160a01b0382166000908152600d602052604090205460ff165b6110885760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ae3565b601b546000906001600160a01b03163314801590611c2b5750602e5460ff16155b8015611c395750602c5460ff165b8015610e65575050602d54306000908152600a6020526040902054101590565b602e805460ff19166001179055601854601954600091611c7891610cbb565b611c8457601054611c87565b60005b90506000611cab600261122e60145461122e86602d546119e990919063ffffffff16565b90506000611cc482602d546119dd90919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611cfe57611cfe612564565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611d2f57611d2f612564565b6001600160a01b039283166020918202929092010152601a54604051633b158ab160e11b81524792919091169063762b156290611d799086906000908790309042906004016124a2565b600060405180830381600087803b158015611d9357600080fd5b505af1158015611da7573d6000803e3d6000fd5b505050506000611dc082476119dd90919063ffffffff16565b90506000611ddb611dd2886002611578565b601454906119dd565b90506000611df0600261122e8481878d6119e9565b90506000611e0d8361122e601254876119e990919063ffffffff16565b90506000611e2a8461122e601354886119e990919063ffffffff16565b9050602960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e7c57600080fd5b505af193505050508015611e8e575060015b506017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611ec9573d6000803e3d6000fd5b508815611fb157601a54601654604051637c8d9fb960e11b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290859060c4016060604051808303818588803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f749190612326565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602e805460ff191690555050505050505050565b601b546000906001600160a01b03163314801590611fe85750602e5460ff16155b8015611ff6575060225460ff165b801561201157504360275460285461200e91906124de565b11155b8015610e6557505060265447101590565b60265460045461203b91906001600160a01b03166119f5565b4360285560265460255461204e91611584565b60258190556024541015612067576022805460ff191690555b565b601554601b54600091829161209b919061122e90612094906001600160a01b038981169116146112bb565b86906119e9565b306000908152600a60205260409020549091506120b89082611584565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121099085815260200190565b60405180910390a361211b83826119dd565b95945050505050565b80358015158114610c4a57600080fd5b60006020828403121561214657600080fd5b8135610e118161257a565b6000806040838503121561216457600080fd5b823561216f8161257a565b9150602083013561217f8161257a565b809150509250929050565b60008060006060848603121561219f57600080fd5b83356121aa8161257a565b925060208401356121ba8161257a565b929592945050506040919091013590565b600080604083850312156121de57600080fd5b82356121e98161257a565b91506121f760208401612124565b90509250929050565b6000806040838503121561221357600080fd5b823561221e8161257a565b946020939093013593505050565b60006020828403121561223e57600080fd5b610e1182612124565b6000806040838503121561225a57600080fd5b61221e83612124565b6000806000806080858703121561227957600080fd5b61228285612124565b966020860135965060408601359560600135945092505050565b6000602082840312156122ae57600080fd5b5035919050565b600080604083850312156122c857600080fd5b823591506121f760208401612124565b600080604083850312156122eb57600080fd5b50508035926020909101359150565b60008060006060848603121561230f57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561233b57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561236c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600081518084526020808501945080840160005b838110156123c85781516001600160a01b0316875295820195908201906001016123a3565b509495945050505050565b8481526080602082015260006123ec608083018661238f565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561243557858101830151858201604001528201612419565b81811115612447576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a0604082015260006124c160a083018661238f565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156124f1576124f161254e565b500190565b60008261251357634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156125325761253261254e565b500290565b6000828210156125495761254961254e565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461258f57600080fd5b5056fea2646970667358221220f4a9feb4b16cde93d85fc13471ce0cc512f2a39a68c3768253cad592bc69f7dc64736f6c63430008070033
Deployed Bytecode Sourcemap
12660:15692:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24869:187;;;;;;;;;;;;;:::i;:::-;;14963:50;;;;;;;;;;;;;;;;;;;10271:25:1;;;10259:2;10244:18;14963:50:0;;;;;;;;24054:359;;;;;;;;;;-1:-1:-1;24054:359:0;;;;;:::i;:::-;;:::i;26325:496::-;;;;;;;;;;-1:-1:-1;26325:496:0;;;;;:::i;:::-;;:::i;16379:80::-;;;;;;;;;;-1:-1:-1;16451:5:0;;;;;;;;;;;;-1:-1:-1;;;16451:5:0;;;;16379:80;;;;;;;:::i;26206:111::-;;;;;;;;;;-1:-1:-1;26206:111:0;;;;;:::i;:::-;;:::i;:::-;;;7028:14:1;;7021:22;7003:41;;6991:2;6976:18;26206:111:0;6863:187:1;16882:216:0;;;;;;;;;;-1:-1:-1;16882:216:0;;;;;:::i;:::-;;:::i;28080:150::-;;;;;;;;;;-1:-1:-1;28080:150:0;;;;;:::i;:::-;;:::i;16109:88::-;;;;;;;;;;-1:-1:-1;16182:12:0;;16109:88;;27229:183;;;;;;;;;;-1:-1:-1;27229:183:0;;;;;:::i;:::-;;:::i;24421:342::-;;;;;;;;;;-1:-1:-1;24421:342:0;;;;;:::i;:::-;;:::i;17395:365::-;;;;;;;;;;-1:-1:-1;17395:365:0;;;;;:::i;:::-;;:::i;13720:40::-;;;;;;;;;;-1:-1:-1;13720:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27755:142;;;;;;;;;;;;;:::i;27420:183::-;;;;;;;;;;-1:-1:-1;27420:183:0;;;;;:::i;:::-;;:::i;4480:103::-;;;;;;;;;;-1:-1:-1;4480:103:0;;;;;:::i;:::-;4535:4;4570:5;-1:-1:-1;;;;;4559:16:0;;;4570:5;;4559:16;;4480:103;16203:80;;;;;;;;;;-1:-1:-1;16203:80:0;;13253:1;11289:36:1;;11277:2;11262:18;16203:80:0;11147:184:1;26100:94:0;;;;;;;;;;-1:-1:-1;26100:94:0;;;;;:::i;:::-;;:::i;14547:38::-;;;;;;;;;;-1:-1:-1;14547:38:0;;;;;;;;17106:117;;;;;;;;;;-1:-1:-1;17106:117:0;;;;;:::i;:::-;;:::i;25221:145::-;;;;;;;;;;-1:-1:-1;25221:145:0;;;;;:::i;:::-;;:::i;25068:::-;;;;;;;;;;-1:-1:-1;25068:145:0;;;;;:::i;:::-;;:::i;25729:120::-;;;;;;;;;;-1:-1:-1;25729:120:0;;;;;:::i;:::-;;:::i;14926:30::-;;;;;;;;;;-1:-1:-1;14926:30:0;;;;;;;;23903:143;;;;;;;;;;;;;:::i;16630:105::-;;;;;;;;;;-1:-1:-1;16630:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;16714:18:0;16696:7;16714:18;;;:9;:18;;;;;;;16630:105;12861:65;;;;;;;;;;-1:-1:-1;12861:65:0;;;;-1:-1:-1;;;;;12861:65:0;;;;;;-1:-1:-1;;;;;5425:32:1;;;5407:51;;5395:2;5380:18;12861:65:0;5261:203:1;13334:50:0;;;;;;;;;;;;;;;;13399:48;;;;;;;;;;;;;;;;16465:78;;;;;;;;;;-1:-1:-1;16517:7:0;16535:5;-1:-1:-1;;;;;16535:5:0;16465:78;;25997:91;;;;;;;;;;-1:-1:-1;25997:91:0;;;;;:::i;:::-;;:::i;16289:84::-;;;;;;;;;;-1:-1:-1;16363:7:0;;;;;;;;;;;;-1:-1:-1;;;16363:7:0;;;;16289:84;;27611:136;;;;;;;;;;-1:-1:-1;27611:136:0;;;;;:::i;:::-;;:::i;26829:228::-;;;;;;;;;;-1:-1:-1;26829:228:0;;;;;:::i;:::-;;:::i;14844:33::-;;;;;;;;;;-1:-1:-1;14844:33:0;;;;-1:-1:-1;;;;;14844:33:0;;;14252:19;;;;;;;;;;-1:-1:-1;14252:19:0;;;;-1:-1:-1;;;;;14252:19:0;;;17231:156;;;;;;;;;;-1:-1:-1;17231:156:0;;;;;:::i;:::-;;:::i;23104:105::-;;;;;;;;;;;;;:::i;4153:94::-;;;;;;;;;;-1:-1:-1;4153:94:0;;;;;:::i;:::-;;:::i;14280:25::-;;;;;;;;;;;;;;;;14312:34;;;;;;;;;;;;;;;;13964:79;;;;;;;;;;-1:-1:-1;13964:79:0;;;;-1:-1:-1;;;;;13964:79:0;;;27905:167;;;;;;;;;;-1:-1:-1;27905:167:0;;;;;:::i;:::-;;:::i;20094:92::-;;;;;;;;;;-1:-1:-1;20170:8:0;;20094:92;;16741:133;;;;;;;;;;-1:-1:-1;16741:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;16843:19:0;;;16825:7;16843:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16741:133;27065:156;;;;;;;;;;-1:-1:-1;27065:156:0;;;;;:::i;:::-;;:::i;12738:48::-;;;;;;;;;;-1:-1:-1;12738:48:0;12769:17;12738:48;;14050:78;;;;;;;;;;-1:-1:-1;14050:78:0;;;;-1:-1:-1;;;;;14050:78:0;;;4323:97;;;;;;;;;;-1:-1:-1;4323:97:0;;;;;:::i;:::-;;:::i;19882:204::-;;;;;;;;;;-1:-1:-1;19882:204:0;;;;;:::i;:::-;;:::i;4880:173::-;;;;;;;;;;-1:-1:-1;4880:173:0;;;;;:::i;:::-;;:::i;22780:316::-;;;;;;;;;;-1:-1:-1;22780:316:0;;;;;:::i;:::-;;:::i;25374:347::-;;;;;;;;;;-1:-1:-1;25374:347:0;;;;;:::i;:::-;;:::i;25857:128::-;;;;;;;;;;-1:-1:-1;25857:128:0;;;;;:::i;:::-;;:::i;14221:24::-;;;;;;;;;;-1:-1:-1;14221:24:0;;;;-1:-1:-1;;;;;14221:24:0;;;4654:107;;;;;;;;;;-1:-1:-1;4654:107:0;;;;;:::i;:::-;;:::i;24869:187::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;;;;;;;;;24924:10:::1;::::0;:15;24916:48:::1;;;::::0;-1:-1:-1;;;24916:48:0;;9304:2:1;24916:48:0::1;::::0;::::1;9286:21:1::0;9343:2;9323:18;;;9316:30;-1:-1:-1;;;9362:18:1;;;9355:50;9422:18;;24916:48:0::1;9102:344:1::0;24916:48:0::1;24988:12;24975:10;:25:::0;25033:15:::1;25011:19;:37:::0;24869:187::o;24054:359::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;24180:18:::1;:29:::0;;-1:-1:-1;;24180:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;24220:14:::1;:21:::0;;;;-1:-1:-1;24252:22:0::1;:26:::0;24289:17:::1;:27:::0;24327:22:::1;:32:::0;24393:12:::1;24370:20;:35:::0;24054:359::o;26325:496::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;26489:12:::1;:28:::0;;;26528:10:::1;:24:::0;;;26563:13:::1;:30:::0;;;26604:12:::1;:28:::0;;;26654:69:::1;26619:13:::0;26654:50:::1;26579:14:::0;26654:50;26504:13;26541:11;26654:17:::1;:30::i;:::-;:34:::0;::::1;:50::i;:69::-;26643:8;:80:::0;26734:14:::1;:32:::0;;;26796:16:::1;26811:1;26751:15:::0;26796:16:::1;:::i;:::-;26785:8;;:27;26777:36;;;::::0;::::1;;26325:496:::0;;;;;:::o;26206:111::-;26271:4;4570:5;;-1:-1:-1;;;;;4570:5:0;3877:10;4559:16;3861:38;;;;-1:-1:-1;;;3861:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;26294:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;::::1;;3901:1;26206:111:::0;;;:::o;16882:216::-;16986:10;16957:4;16974:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16974:32:0;;;;;;;;;;:41;;;17031:37;16957:4;;16974:32;;17031:37;;;;17009:6;10271:25:1;;10259:2;10244:18;;10125:177;17031:37:0;;;;;;;;-1:-1:-1;17086:4:0;16882:216;;;;:::o;28080:150::-;28160:4;28216:6;28184:29;28204:8;28184:19;:29::i;:::-;:38;;28080:150;-1:-1:-1;;;28080:150:0:o;27229:183::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;27327:15:::1;:25:::0;;;;27363:26:::1;:41:::0;27229:183::o;24421:342::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;24581:1:::1;24554:23;24566:11:::0;24554:9;:23:::1;:::i;:::-;:28;;:55;;;;;24598:11;24586:9;:23;24554:55;24546:64;;;::::0;::::1;;24621:26;:38:::0;;;;24670:28:::1;:42:::0;24723:23:::1;:32:::0;24421:342::o;17395:365::-;17550:12;;-1:-1:-1;;;;;17515:19:0;;17495:4;17515:19;;;:11;:19;;;;;;;;17535:10;17515:31;;;;;;;;17495:4;;17515:47;17512:181;;17612:69;;;;;;;;;;;-1:-1:-1;;;17612:69:0;;;;;;;;-1:-1:-1;;;;;17612:19:0;;-1:-1:-1;17612:19:0;;;:11;:19;;;;;17632:10;17612:31;;;;;;;;;;:69;;17648:6;;17612:35;:69::i;:::-;-1:-1:-1;;;;;17578:19:0;;;;;;:11;:19;;;;;;;;17598:10;17578:31;;;;;;;:103;17512:181;17712:40;17726:6;17734:9;17745:6;17712:13;:40::i;:::-;17705:47;;17395:365;;;;;;:::o;27755:142::-;27883:4;;-1:-1:-1;;;;;27883:4:0;27808:7;16714:18;;;:9;:18;;;;;;27835:54;;27862:4;;-1:-1:-1;;;;;27862:4:0;16696:7;16714:18;;;:9;:18;;;;;;27835:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;27828:61;;27755:142;:::o;27420:183::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;27530:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;27530:65:0;;::::1;::::0;::::1;11068:25:1::0;;;11109:18;;;11102:34;;;-1:-1:-1;;;;;27530:11:0;;::::1;::::0;:35:::1;::::0;11041:18:1;;27530:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27420:183:::0;;:::o;26100:94::-;4535:4;4570:5;-1:-1:-1;;;;;4570:5:0;3877:10;4559:16;3861:38;;;;-1:-1:-1;;;3861:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26163:15:0::1;26181:5;26163:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;26163:23:0::1;::::0;;26100:94::o;17106:117::-;17161:4;17185:30;17193:7;17202:12;;17185:7;:30::i;:::-;17178:37;17106:117;-1:-1:-1;;17106:117:0:o;25221:145::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;25321:4:::1;25306:12;;:19;;;;:::i;:::-;25296:6;:29;;25288:38;;;::::0;::::1;;25337:12;:21:::0;25221:145::o;25068:::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;25170:4:::1;25155:12;;:19;;;;:::i;:::-;25145:6;:29;;25137:38;;;::::0;::::1;;25186:10;:19:::0;25068:145::o;25729:120::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25813:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;25813:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25729:120::o;23903:143::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;24001:37:::1;::::0;23969:21:::1;::::0;24009:10:::1;::::0;24001:37;::::1;;;::::0;23969:21;;23951:15:::1;24001:37:::0;23951:15;24001:37;23969:21;24009:10;24001:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23940:106;23903:143::o:0;25997:91::-;4535:4;4570:5;-1:-1:-1;;;;;4570:5:0;3877:10;4559:16;3861:38;;;;-1:-1:-1;;;3861:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26058:15:0::1;;::::0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;26058:22:0::1;26076:4;26058:22;::::0;;25997:91::o;27611:136::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;27701:6:::1;27695:3;:12;27687:21;;;::::0;::::1;;27719:14;:20:::0;27611:136::o;26829:228::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;26948:21:::1;:46:::0;;-1:-1:-1;;;;;26948:46:0;;::::1;-1:-1:-1::0;;;;;;26948:46:0;;::::1;;::::0;;;27005:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;26829:228::o;17231:156::-;17311:4;17335:44;17349:10;17361:9;17372:6;17335:13;:44::i;23104:105::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;23200:1:::1;23169:28;:32:::0;23104:105::o;4153:94::-;4535:4;4570:5;-1:-1:-1;;;;;4570:5:0;3877:10;4559:16;3861:38;;;;-1:-1:-1;;;3861:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4213:19:0::1;;::::0;;;4235:4:::1;4213:19;::::0;;;;;;;:26;;-1:-1:-1;;4213:26:0::1;::::0;;::::1;::::0;;4153:94::o;27905:167::-;27973:7;28000:64;28041:22;:20;:22::i;:::-;28023:4;;-1:-1:-1;;;;;28023:4:0;16696:7;16714:18;;;:9;:18;;;;;;28000:36;;28013:22;;28033:1;28013:19;:22::i;:::-;28000:8;;:12;:36::i;:::-;:40;;:64::i;27065:156::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;27157:11:::1;:22:::0;;-1:-1:-1;;27157:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;27190:13:::1;:23:::0;27065:156::o;4323:97::-;4535:4;4570:5;-1:-1:-1;;;;;4570:5:0;3877:10;4559:16;3861:38;;;;-1:-1:-1;;;3861:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4385:19:0::1;4407:5;4385:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;4385:27:0::1;::::0;;4323:97::o;19882:204::-;19938:7;19979:12;19961:10;;19974:1;19961:14;;;;:::i;:::-;:30;19958:54;;-1:-1:-1;;20001:8:0;;;19882:204::o;19958:54::-;20025:7;20022:31;;;-1:-1:-1;;20042:8:0;;;19882:204::o;20022:31::-;-1:-1:-1;;20070:8:0;;;19882:204::o;4880:173::-;4535:4;4570:5;-1:-1:-1;;;;;4570:5:0;3877:10;4559:16;3861:38;;;;-1:-1:-1;;;3861:38:0;;;;;;;:::i;:::-;4956:5:::1;:11:::0;;-1:-1:-1;;;;;;4956:11:0::1;-1:-1:-1::0;;;;;4956:11:0;::::1;::::0;;::::1;::::0;;4978:19;;;-1:-1:-1;4978:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4978:26:0::1;::::0;;::::1;::::0;;;5020:25;;5407:51:1;;;5020:25:0::1;::::0;5380:18:1;5020:25:0::1;;;;;;;4880:173:::0;:::o;22780:316::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;22904:4:::1;::::0;22886:23:::1;::::0;22896:6;;-1:-1:-1;;;;;22904:4:0::1;22886:9;:23::i;:::-;22923:24;22920:169;;;22994:15;22963:28;:46:::0;;;23053:23:::1;::::0;23029:48:::1;::::0;10271:25:1;;;23029:48:0::1;::::0;10244:18:1;23029:48:0::1;;;;;;;22780:316:::0;;:::o;25374:347::-;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25471:23:0;::::1;25489:4;25471:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;25508:4:0::1;::::0;-1:-1:-1;;;;;25498:14:0;;::::1;25508:4:::0;::::1;25498:14;;25471:41;25463:50;;;::::0;::::1;;-1:-1:-1::0;;;;;25524:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;25524:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;25568:146:::1;;25593:11;::::0;:31:::1;::::0;-1:-1:-1;;;25593:31:0;;-1:-1:-1;;;;;5885:32:1;;;25593:31:0::1;::::0;::::1;5867:51:1::0;25593:11:0::1;5934:18:1::0;;;5927:34;25593:11:0;;::::1;::::0;:20:::1;::::0;5840:18:1;;25593:31:0::1;5685:282:1::0;25568:146:0::1;25655:11;::::0;-1:-1:-1;;;;;25684:17:0;;::::1;25655:11;25684:17:::0;;;:9:::1;:17;::::0;;;;;;;25655:47;;-1:-1:-1;;;25655:47:0;;::::1;::::0;::::1;5867:51:1::0;;;;5934:18;;;5927:34;25655:11:0;::::1;::::0;:20:::1;::::0;5840:18:1;;25655:47:0::1;5685:282:1::0;25857:128:0;4038:24;4051:10;4038:12;:24::i;:::-;4030:48;;;;-1:-1:-1;;;4030:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25945:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;25945:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25857:128::o;4654:107::-;-1:-1:-1;;;;;4734:19:0;4710:4;4734:19;;;:14;:19;;;;;;;;;4654:107::o;1755:98::-;1813:7;1840:5;1844:1;1840;:5;:::i;1437:98::-;1495:7;1522:5;1526:1;1522;:5;:::i;1967:206::-;2053:7;2114:12;2106:6;;;;2098:29;;;;-1:-1:-1;;;2098:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2149:5:0;;;1967:206::o;17768:1523::-;17880:6;;17860:4;;17880:6;;17877:63;;;17896:41;17911:6;17919:9;17930:6;17896:14;:41::i;:::-;17889:48;;;;17877:63;18084:4;;18011:42;;17987:21;;-1:-1:-1;;;;;18075:13:0;;;18084:4;;18075:13;;:39;;;18101:13;-1:-1:-1;;;;;18091:23:0;:6;-1:-1:-1;;;;;18091:23:0;;18075:39;18149:4;;18064:50;;-1:-1:-1;18125:11:0;;-1:-1:-1;;;;;18137:16:0;;;18149:4;;18137:16;;:45;;;18169:13;-1:-1:-1;;;;;18156:26:0;:9;-1:-1:-1;;;;;18156:26:0;;18137:45;18125:57;;18203:28;18216:6;18224;18203:12;:28::i;:::-;18312:6;18311:7;:30;;;;-1:-1:-1;;;;;;18323:18:0;;;;;;:7;:18;;;;;;;;18322:19;18311:30;18307:148;;;18399:10;;-1:-1:-1;;;;;18366:20:0;;;;;;:9;:20;;;;;;:29;;18389:6;;18366:29;:::i;:::-;18365:44;18357:86;;;;-1:-1:-1;;;18357:86:0;;8946:2:1;18357:86:0;;;8928:21:1;8985:2;8965:18;;;8958:30;9024:31;9004:18;;;8997:59;9073:18;;18357:86:0;8744:353:1;18357:86:0;18517:6;18513:135;;;18543:16;:14;:16::i;:::-;18540:35;;;18562:10;:8;:10::i;:::-;18592:19;:17;:19::i;:::-;18589:48;;;18614:20;:18;:20::i;:::-;18680:53;;;;;;;;;;;-1:-1:-1;;;18680:53:0;;;;;;;;-1:-1:-1;;;;;18680:17:0;;-1:-1:-1;18680:17:0;;;:9;:17;;;;;;;;:53;;18702:6;;18680:21;:53::i;:::-;-1:-1:-1;;;;;18660:17:0;;;;;;:9;:17;;;;;;;;:73;;;;19847:11;:19;;;;;;;;19846:20;18771:67;;18832:6;18771:67;;;18795:34;18803:6;18811:9;18822:6;18795:7;:34::i;:::-;-1:-1:-1;;;;;18874:20:0;;;;;;:9;:20;;;;;;18746:92;;-1:-1:-1;18874:40:0;;18746:92;18874:24;:40::i;:::-;-1:-1:-1;;;;;18851:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18931:24;;;;;:16;:24;;;;;;;18927:96;;18962:11;;-1:-1:-1;;;;;18991:17:0;;;18962:11;18991:17;;;:9;:17;;;;;;;;18962:47;;-1:-1:-1;;;18962:47:0;;;;;5867:51:1;;;;5934:18;;;5927:34;18962:11:0;;;:20;;5840:18:1;;18962:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18958:63;;-1:-1:-1;;;;;19037:27:0;;;;;;:16;:27;;;;;;;;19033:105;;19071:11;;-1:-1:-1;;;;;19103:20:0;;;19071:11;19103:20;;;:9;:20;;;;;;;;19071:53;;-1:-1:-1;;;19071:53:0;;;;;5867:51:1;;;;5934:18;;;5927:34;19071:11:0;;;:20;;5840:18:1;;19071:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19067:69;;19154:11;;19174:14;;19154:35;;-1:-1:-1;;;;;;19154:35:0;;-1:-1:-1;;;;;19154:11:0;;;;:19;;:35;;;;10271:25:1;;;10259:2;10244:18;;10125:177;19154:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19150:51;19235:9;-1:-1:-1;;;;;19218:43:0;19227:6;-1:-1:-1;;;;;19218:43:0;;19246:14;19218:43;;;;10271:25:1;;10259:2;10244:18;;10125:177;19218:43:0;;;;;;;;-1:-1:-1;19279:4:0;;17768:1523;-1:-1:-1;;;;;;;17768:1523:0:o;1543:98::-;1601:7;1628:5;1632:1;1628;:5;:::i;1649:98::-;1707:7;1734:5;1738:1;1734;:5;:::i;23528:363::-;15071:6;:13;;-1:-1:-1;;15071:13:0;15080:4;15071:13;;;23628:16:::1;::::0;;23642:1:::1;23628:16:::0;;;;;::::1;::::0;;-1:-1:-1;;23628:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;23665:5:0::1;::::0;23655:7;;;;-1:-1:-1;;;;;;23665:5:0::1;::::0;23655:7;;-1:-1:-1;23665:5:0::1;::::0;23655:7:::1;;;;:::i;:::-;;;;;;:15;-1:-1:-1::0;;;;;23655:15:0::1;;;-1:-1:-1::0;;;;;23655:15:0::1;;;::::0;::::1;23699:4;23681;23686:1;23681:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23681:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23717:6:::1;::::0;:166:::1;::::0;-1:-1:-1;;;23717:166:0;;:6;::::1;::::0;:58:::1;::::0;23783:6;;23717:166:::1;::::0;:6:::1;::::0;23821:4;;23840:2;;23857:15:::1;::::0;23717:166:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15089:6:0;:14;;-1:-1:-1;;15089:14:0;;;-1:-1:-1;;;;;;23528:363:0:o;19299:279::-;19429:53;;;;;;;;;;;-1:-1:-1;;;19429:53:0;;;;;;;;-1:-1:-1;;;;;19429:17:0;;19392:4;19429:17;;;:9;:17;;;;;;;:53;;19451:6;;19429:21;:53::i;:::-;-1:-1:-1;;;;;19409:17:0;;;;;;;:9;:17;;;;;;:73;;;;19516:20;;;;;;;:32;;19541:6;19516:24;:32::i;:::-;-1:-1:-1;;;;;19493:20:0;;;;;;:9;:20;;;;;:55;-1:-1:-1;19566:4:0;19299:279;;;;;:::o;19586:166::-;19683:12;;19673:6;:22;;:49;;;-1:-1:-1;;;;;;19699:23:0;;;;;;:15;:23;;;;;;;;19673:49;19665:79;;;;-1:-1:-1;;;19665:79:0;;8600:2:1;19665:79:0;;;8582:21:1;8639:2;8619:18;;;8612:30;-1:-1:-1;;;8658:18:1;;;8651:47;8715:18;;19665:79:0;8398:341:1;20574:197:0;20661:4;;20623;;-1:-1:-1;;;;;20661:4:0;20647:10;:18;;;;:38;;-1:-1:-1;20679:6:0;;;;20678:7;20647:38;:62;;;;-1:-1:-1;20698:11:0;;;;20647:62;:116;;;;-1:-1:-1;;20750:13:0;;20740:4;20722:24;;;;:9;:24;;;;;;:41;;;20574:197::o;20779:1667::-;15071:6;:13;;-1:-1:-1;;15071:13:0;15080:4;15071:13;;;20874:15:::1;::::0;20891:26:::1;::::0;15071:6;;20858:60:::1;::::0;:15:::1;:60::i;:::-;:79;;20925:12;;20858:79;;;20921:1;20858:79;20828:109;;20948:23;20974:59;21031:1;20974:52;21017:8;;20974:38;20992:19;20974:13;;:17;;:38;;;;:::i;:59::-;20948:85;;21044:20;21067:34;21085:15;21067:13;;:17;;:34;;;;:::i;:::-;21138:16;::::0;;21152:1:::1;21138:16:::0;;;;;::::1;::::0;;21044:57;;-1:-1:-1;21114:21:0::1;::::0;21138:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21138:16:0::1;21114:40;;21183:4;21165;21170:1;21165:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21165:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21209:5:::1;::::0;21199:7;;21209:5;::::1;::::0;21199:4;;21209:5;;21199:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;21199:15:0;;::::1;:7;::::0;;::::1;::::0;;;;;:15;21283:6:::1;::::0;:189:::1;::::0;-1:-1:-1;;;21283:189:0;;21249:21:::1;::::0;21283:6;;;::::1;::::0;:58:::1;::::0;:189:::1;::::0;21356:12;;21225:21:::1;::::0;21399:4;;21426::::1;::::0;21446:15:::1;::::0;21283:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21485:18;21506:40;21532:13;21506:21;:25;;:40;;;;:::i;:::-;21485:61:::0;-1:-1:-1;21559:20:0::1;21582:40;21595:26;:19:::0;21619:1:::1;21595:23;:26::i;:::-;21582:8;::::0;;:12:::1;:40::i;:::-;21559:63:::0;-1:-1:-1;21635:27:0::1;21665:60;21723:1;21665:53;21559:63:::0;21665:53;:10;21680:19;21665:14:::1;:35::i;:60::-;21635:90;;21736:28;21767:47;21801:12;21767:29;21782:13;;21767:10;:14;;:29;;;;:::i;:47::-;21736:78;;21825:27;21855:46;21888:12;21855:28;21870:12;;21855:10;:14;;:28;;;;:::i;:46::-;21825:76;;21918:11;;;;;;;;;-1:-1:-1::0;;;;;21918:11:0::1;-1:-1:-1::0;;;;;21918:19:0::1;;21945:20;21918:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21914:66:::0;21998:20:::1;::::0;21990:59:::1;::::0;-1:-1:-1;;;;;21998:20:0;;::::1;::::0;21990:59;::::1;;;::::0;22029:19;;21998:20:::1;21990:59:::0;21998:20;21990:59;22029:19;21998:20;21990:59;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22077:19:0;;22074:365:::1;;22112:6;::::0;22288:21:::1;::::0;22112:246:::1;::::0;-1:-1:-1;;;22112:246:0;;22190:4:::1;22112:246;::::0;::::1;6592:34:1::0;6642:18;;;6635:34;;;22112:6:0::1;6685:18:1::0;;;6678:34;;;6728:18;;;6721:34;-1:-1:-1;;;;;22288:21:0;;::::1;6771:19:1::0;;;6764:44;22328:15:0::1;6824:19:1::0;;;6817:35;22112:6:0;::::1;::::0;:23:::1;::::0;22143:19;;6526::1;;22112:246:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22378:49:0::1;::::0;;11068:25:1;;;11124:2;11109:18;;11102:34;;;22378:49:0::1;::::0;-1:-1:-1;11041:18:1;22378:49:0::1;;;;;;;22074:365;-1:-1:-1::0;;15089:6:0;:14;;-1:-1:-1;;15089:14:0;;;-1:-1:-1;;;;;;;;20779:1667:0:o;22454:318::-;22544:4;;22506;;-1:-1:-1;;;;;22544:4:0;22530:10;:18;;;;:38;;-1:-1:-1;22562:6:0;;;;22561:7;22530:38;:69;;;;-1:-1:-1;22581:18:0;;;;22530:69;:143;;;;;22661:12;22635:22;;22612:20;;:45;;;;:::i;:::-;:61;;22530:143;:234;;;;-1:-1:-1;;22747:17:0;;22722:21;:42;;;22454:318::o;23217:303::-;23277:17;;23296:4;;23267:34;;23277:17;-1:-1:-1;;;;;23296:4:0;23267:9;:34::i;:::-;23335:12;23312:20;:35;23410:17;;23383:22;;:45;;:26;:45::i;:::-;23358:22;:70;;;23467:14;;-1:-1:-1;23439:74:0;;;23484:18;:26;;-1:-1:-1;;23484:26:0;;;23439:74;23217:303::o;20194:372::-;20365:14;;20354:4;;20279:7;;;;20319:61;;20365:14;20319:41;;20330:29;;-1:-1:-1;;;;;20342:16:0;;;20354:4;;20342:16;20330:11;:29::i;:::-;20319:6;;:10;:41::i;:61::-;20438:4;20420:24;;;;:9;:24;;;;;;20299:81;;-1:-1:-1;20420:39:0;;20299:81;20420:28;:39::i;:::-;20411:4;20393:24;;;;:9;:24;;;;;;;:66;;;;20475:42;;-1:-1:-1;;;;;20475:42:0;;;;;;;20507:9;10271:25:1;;10259:2;10244:18;;10125:177;20475:42:0;;;;;;;;20537:21;:6;20548:9;20537:10;:21::i;:::-;20530:28;20194:372;-1:-1:-1;;;;;20194:372:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;179:247;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;691:388::-;759:6;767;820:2;808:9;799:7;795:23;791:32;788:52;;;836:1;833;826:12;788:52;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;691:388;;;;;:::o;1084:456::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:52;;;1246:1;1243;1236:12;1198:52;1285:9;1272:23;1304:31;1329:5;1304:31;:::i;:::-;1354:5;-1:-1:-1;1411:2:1;1396:18;;1383:32;1424:33;1383:32;1424:33;:::i;:::-;1084:456;;1476:7;;-1:-1:-1;;;1530:2:1;1515:18;;;;1502:32;;1084:456::o;1545:315::-;1610:6;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1726:9;1713:23;1745:31;1770:5;1745:31;:::i;:::-;1795:5;-1:-1:-1;1819:35:1;1850:2;1835:18;;1819:35;:::i;:::-;1809:45;;1545:315;;;;;:::o;1865:::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:52;;;2010:1;2007;2000:12;1962:52;2049:9;2036:23;2068:31;2093:5;2068:31;:::i;:::-;2118:5;2170:2;2155:18;;;;2142:32;;-1:-1:-1;;;1865:315:1:o;2185:180::-;2241:6;2294:2;2282:9;2273:7;2269:23;2265:32;2262:52;;;2310:1;2307;2300:12;2262:52;2333:26;2349:9;2333:26;:::i;2370:248::-;2435:6;2443;2496:2;2484:9;2475:7;2471:23;2467:32;2464:52;;;2512:1;2509;2502:12;2464:52;2535:26;2551:9;2535:26;:::i;2623:385::-;2706:6;2714;2722;2730;2783:3;2771:9;2762:7;2758:23;2754:33;2751:53;;;2800:1;2797;2790:12;2751:53;2823:26;2839:9;2823:26;:::i;:::-;2813:36;2896:2;2881:18;;2868:32;;-1:-1:-1;2947:2:1;2932:18;;2919:32;;2998:2;2983:18;2970:32;;-1:-1:-1;2623:385:1;-1:-1:-1;;;2623:385:1:o;3013:180::-;3072:6;3125:2;3113:9;3104:7;3100:23;3096:32;3093:52;;;3141:1;3138;3131:12;3093:52;-1:-1:-1;3164:23:1;;3013:180;-1:-1:-1;3013:180:1:o;3198:248::-;3263:6;3271;3324:2;3312:9;3303:7;3299:23;3295:32;3292:52;;;3340:1;3337;3330:12;3292:52;3376:9;3363:23;3353:33;;3405:35;3436:2;3425:9;3421:18;3405:35;:::i;3451:248::-;3519:6;3527;3580:2;3568:9;3559:7;3555:23;3551:32;3548:52;;;3596:1;3593;3586:12;3548:52;-1:-1:-1;;3619:23:1;;;3689:2;3674:18;;;3661:32;;-1:-1:-1;3451:248:1:o;3704:316::-;3781:6;3789;3797;3850:2;3838:9;3829:7;3825:23;3821:32;3818:52;;;3866:1;3863;3856:12;3818:52;-1:-1:-1;;3889:23:1;;;3959:2;3944:18;;3931:32;;-1:-1:-1;4010:2:1;3995:18;;;3982:32;;3704:316;-1:-1:-1;3704:316:1:o;4025:306::-;4113:6;4121;4129;4182:2;4170:9;4161:7;4157:23;4153:32;4150:52;;;4198:1;4195;4188:12;4150:52;4227:9;4221:16;4211:26;;4277:2;4266:9;4262:18;4256:25;4246:35;;4321:2;4310:9;4306:18;4300:25;4290:35;;4025:306;;;;;:::o;4336:454::-;4431:6;4439;4447;4455;4463;4516:3;4504:9;4495:7;4491:23;4487:33;4484:53;;;4533:1;4530;4523:12;4484:53;-1:-1:-1;;4556:23:1;;;4626:2;4611:18;;4598:32;;-1:-1:-1;4677:2:1;4662:18;;4649:32;;4728:2;4713:18;;4700:32;;-1:-1:-1;4779:3:1;4764:19;4751:33;;-1:-1:-1;4336:454:1;-1:-1:-1;4336:454:1:o;4795:461::-;4848:3;4886:5;4880:12;4913:6;4908:3;4901:19;4939:4;4968:2;4963:3;4959:12;4952:19;;5005:2;4998:5;4994:14;5026:1;5036:195;5050:6;5047:1;5044:13;5036:195;;;5115:13;;-1:-1:-1;;;;;5111:39:1;5099:52;;5171:12;;;;5206:15;;;;5147:1;5065:9;5036:195;;;-1:-1:-1;5247:3:1;;4795:461;-1:-1:-1;;;;;4795:461:1:o;7281:510::-;7552:6;7541:9;7534:25;7595:3;7590:2;7579:9;7575:18;7568:31;7515:4;7616:57;7668:3;7657:9;7653:19;7645:6;7616:57;:::i;:::-;-1:-1:-1;;;;;7709:32:1;;;;7704:2;7689:18;;7682:60;-1:-1:-1;7773:2:1;7758:18;7751:34;7608:65;7281:510;-1:-1:-1;;7281:510:1:o;7796:597::-;7908:4;7937:2;7966;7955:9;7948:21;7998:6;7992:13;8041:6;8036:2;8025:9;8021:18;8014:34;8066:1;8076:140;8090:6;8087:1;8084:13;8076:140;;;8185:14;;;8181:23;;8175:30;8151:17;;;8170:2;8147:26;8140:66;8105:10;;8076:140;;;8234:6;8231:1;8228:13;8225:91;;;8304:1;8299:2;8290:6;8279:9;8275:22;8271:31;8264:42;8225:91;-1:-1:-1;8377:2:1;8356:15;-1:-1:-1;;8352:29:1;8337:45;;;;8384:2;8333:54;;7796:597;-1:-1:-1;;;7796:597:1:o;9451:329::-;9653:2;9635:21;;;9692:1;9672:18;;;9665:29;-1:-1:-1;;;9725:2:1;9710:18;;9703:36;9771:2;9756:18;;9451:329::o;9785:335::-;9987:2;9969:21;;;10026:2;10006:18;;;9999:30;-1:-1:-1;;;10060:2:1;10045:18;;10038:41;10111:2;10096:18;;9785:335::o;10307:582::-;10606:6;10595:9;10588:25;10649:6;10644:2;10633:9;10629:18;10622:34;10692:3;10687:2;10676:9;10672:18;10665:31;10569:4;10713:57;10765:3;10754:9;10750:19;10742:6;10713:57;:::i;:::-;-1:-1:-1;;;;;10806:32:1;;;;10801:2;10786:18;;10779:60;-1:-1:-1;10870:3:1;10855:19;10848:35;10705:65;10307:582;-1:-1:-1;;;10307:582:1:o;11336:128::-;11376:3;11407:1;11403:6;11400:1;11397:13;11394:39;;;11413:18;;:::i;:::-;-1:-1:-1;11449:9:1;;11336:128::o;11469:217::-;11509:1;11535;11525:132;;11579:10;11574:3;11570:20;11567:1;11560:31;11614:4;11611:1;11604:15;11642:4;11639:1;11632:15;11525:132;-1:-1:-1;11671:9:1;;11469:217::o;11691:168::-;11731:7;11797:1;11793;11789:6;11785:14;11782:1;11779:21;11774:1;11767:9;11760:17;11756:45;11753:71;;;11804:18;;:::i;:::-;-1:-1:-1;11844:9:1;;11691:168::o;11864:125::-;11904:4;11932:1;11929;11926:8;11923:34;;;11937:18;;:::i;:::-;-1:-1:-1;11974:9:1;;11864:125::o;11994:127::-;12055:10;12050:3;12046:20;12043:1;12036:31;12086:4;12083:1;12076:15;12110:4;12107:1;12100:15;12126:127;12187:10;12182:3;12178:20;12175:1;12168:31;12218:4;12215:1;12208:15;12242:4;12239:1;12232:15;12390:131;-1:-1:-1;;;;;12465:31:1;;12455:42;;12445:70;;12511:1;12508;12501:12;12445:70;12390:131;:::o
Swarm Source
ipfs://e04797e3241aaaecfa659263109d6490055cce1cd7af44b8334613a3b46cd3fa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
AVAX | 100.00% | $22.24 | 0.000000000000000255 | <$0.000001 |
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.