Polygon Sponsored slots available. Book your slot here!
ERC-20
Overview
Max Total Supply
101,101,101 VEM
Holders
16
Total Transfers
-
Market
Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
VertuMaster
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-12-21 */ //VertuFinale Thrift Saving //VERTU: 0xD3f6895928Bb1aA7811d2E08f8237994531396B0 //VERTU USDT: 0xb542F9744090e93C74c158b1C3e4859c95CA6F12 //VertuEntropy Powered By VERTU //VEM: 0xB5d4c220D92ea9A8b908b5C3E87a7E0a1bA47537 //VEM VERTUDistributor: 0xE81c6d5D8Dba5EDD1e38f16a586cFbFD141b911b library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } pragma solidity ^0.8.0; interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); } pragma solidity ^0.8.0; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); } pragma solidity ^0.8.0; library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } //SPDX-License-Identifier: BSD-3-Clause 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 { 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 ERC20 { 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; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } 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 WETH() 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 addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setDistribution(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; using SafeERC20 for IERC20; address _earn; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } ERC20 VERTU = ERC20(0xD3f6895928Bb1aA7811d2E08f8237994531396B0); address WMATIC = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270; 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; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 1 * (10 ** 18); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyEarn() { require(msg.sender == _earn); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff); _earn = msg.sender; } function setDistribution(uint256 _minPeriod, uint256 _minDistribution) external override onlyEarn { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyEarn { 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 onlyEarn { uint256 balanceBefore = VERTU.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WMATIC; path[1] = address(VERTU); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = VERTU.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyEarn { 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); VERTU.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); } 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(); } } pragma solidity ^0.8.8; contract VertuMaster is ERC20, Auth { using SafeMath for uint256; using SafeERC20 for IERC20; address public VERTU = 0xD3f6895928Bb1aA7811d2E08f8237994531396B0; address public WMATIC = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address DEAD_NON_CHECKSUM = 0x000000000000000000000000000000000000dEaD; string constant _name = "VertuEntropy"; string constant _symbol = "VEM"; uint8 constant _decimals = 9; uint256 public constant MASK = type(uint128).max; uint256 _totalSupply = 101_101_101 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply.div(400); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isDividendExempt; uint256 liquidityFee = 300; uint256 buybackFee = 100; uint256 reflectionFee = 200; uint256 marketingFee = 200; uint256 totalFee = 800; uint256 feeDenominator = 10000; address public decentralizedLiquidity; address public decentralizedDevelopment; uint256 targetLiquidity = 25; 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 / 4000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( address _dexRouter ) Auth(msg.sender) { router = IDEXRouter(_dexRouter); pair = IDEXFactory(router.factory()).createPair(WMATIC, address(this)); _allowances[address(this)][address(router)] = _totalSupply; WMATIC = router.WETH(); distributor = new DividendDistributor(_dexRouter); 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; decentralizedLiquidity = msg.sender; decentralizedDevelopment = msg.sender; approve(_dexRouter, _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); } checkTxLimit(sender, amount); 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 feeDenominator.sub(1); } if(selling){ return getMultipliedFee(); } return totalFee; } function getMultipliedFee() public view returns (uint256) { if (launchedAtTimestamp + 1 days > block.timestamp) { return totalFee.mul(18000).div(feeDenominator); } else if (buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp) { uint256 remainingTime = buybackMultiplierTriggeredAt.add(buybackMultiplierLength).sub(block.timestamp); uint256 feeIncrease = totalFee.mul(buybackMultiplierNumerator).div(buybackMultiplierDenominator).sub(totalFee); return totalFee.add(feeIncrease.mul(remainingTime).div(buybackMultiplierLength)); } 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 decentralizedLiquidityFee = isOverLP(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(decentralizedLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WMATIC; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountWMATIC = address(this).balance.sub(balanceBefore); uint256 totalWMATICFee = totalFee.sub(decentralizedLiquidityFee.div(2)); uint256 amountWMATICLiquidity = amountWMATIC.mul(decentralizedLiquidityFee).div(totalWMATICFee).div(2); uint256 amountWMATICReflection = amountWMATIC.mul(reflectionFee).div(totalWMATICFee); uint256 amountWMATICMarketing = amountWMATIC.mul(marketingFee).div(totalWMATICFee); try distributor.deposit{value: amountWMATICReflection}() {} catch {} payable(decentralizedDevelopment).transfer(amountWMATICMarketing); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountWMATICLiquidity}( address(this), amountToLiquify, 0, 0, decentralizedLiquidity, block.timestamp ); emit AutoLiquify(amountWMATICLiquidity, amountToLiquify); } } function shouldAutoBuyback() internal view returns (bool) { return msg.sender != pair && !inSwap && autoBuybackEnabled && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number && address(this).balance >= autoBuybackAmount; } function triggerBuyNBurn(uint256 amount, bool triggerBuybackMultiplier) external authorized { buyTokens(amount, DEAD); if(triggerBuybackMultiplier){ buybackMultiplierTriggeredAt = block.timestamp; emit BuybackMA(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] = WMATIC; path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } function updateBuyback(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized { autoBuybackEnabled = _enabled; autoBuybackCap = _cap; autoBuybackAccumulator = 0; autoBuybackAmount = _amount; autoBuybackBlockPeriod = _period; autoBuybackBlockLast = block.number; } function updateBuybackMultipliers(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, "Launched"); launchedAt = block.number; launchedAtTimestamp = block.timestamp; } 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 withdrawMatic(uint256 amount) external authorized() { if(amount == 0) payable(decentralizedDevelopment).transfer(address(this).balance); else payable(decentralizedDevelopment).transfer(amount); } function withdrawERC20(address _token) external authorized() { uint amount = IERC20(_token).balanceOf(address(this)); IERC20(_token).safeTransfer(decentralizedDevelopment, amount); } function setDecentralizedLP(address _decentralizedLiquidity, address _decentralizedDevelopment) external authorized { decentralizedLiquidity = _decentralizedLiquidity; decentralizedDevelopment = _decentralizedDevelopment; } function setSwapBack(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLP(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistribution(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistribution(_minPeriod, _minDistribution); } function setDistributorGas(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidity(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLP(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidity(accuracy) > target; } event AutoLiquify(uint256 amountWMATIC, uint256 amountGOLD); event BuybackMA(uint256 duration); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_dexRouter","type":"address"}],"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":"amountWMATIC","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountGOLD","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMA","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":"VERTU","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decentralizedDevelopment","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decentralizedLiquidity","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"getLiquidity","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":"isOverLP","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":"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":"address","name":"_decentralizedLiquidity","type":"address"},{"internalType":"address","name":"_decentralizedDevelopment","type":"address"}],"name":"setDecentralizedLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorGas","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":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLP","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":"triggerBuyNBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","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":"updateBuyback","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":"updateBuybackMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawMatic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405273d3f6895928bb1aa7811d2e08f8237994531396b0600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d500b1d8e8ef31e21c99d1db9a6444d3adf1270600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000186919062000daf565b630606ae2d62000197919062000e00565b600755620001b861019060075462000afb60201b6200239b1790919060201c565b60085561012c600e556064600f5560c860105560c86011556103206012556127106013556019601655606460175560c8601c556064601d55610708601f556000602060006101000a81548160ff0219169083151502179055506207a1206029556001602a60006101000a81548160ff021916908315150217905550610fa060075462000245919062000e7a565b602b553480156200025557600080fd5b50604051620074f1380380620074f183398181016040528101906200027b919062000f1c565b33806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000f1c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044792919062000f5f565b6020604051808303816000875af115801562000467573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048d919062000f1c565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000606919062000f1c565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080604051620006559062000c07565b62000661919062000f8c565b604051809103906000f0801580156200067e573d6000803e3d6000fd5b50602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000a0c8160075462000b1360201b60201c565b5062000a43601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660075462000b1360201b60201c565b50600754600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000aec919062000fba565b60405180910390a35062000fd7565b6000818362000b0b919062000e7a565b905092915050565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000bf5919062000fba565b60405180910390a36001905092915050565b611c59806200589883390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ca35780860481111562000c7b5762000c7a62000c15565b5b600185161562000c8b5780820291505b808102905062000c9b8562000c44565b945062000c5b565b94509492505050565b60008262000cbe576001905062000d91565b8162000cce576000905062000d91565b816001811462000ce7576002811462000cf25762000d28565b600191505062000d91565b60ff84111562000d075762000d0662000c15565b5b8360020a91508482111562000d215762000d2062000c15565b5b5062000d91565b5060208310610133831016604e8410600b841016171562000d625782820a90508381111562000d5c5762000d5b62000c15565b5b62000d91565b62000d71848484600162000c51565b9250905081840481111562000d8b5762000d8a62000c15565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000dbc8262000d98565b915062000dc98362000da2565b925062000df87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cac565b905092915050565b600062000e0d8262000d98565b915062000e1a8362000d98565b925082820262000e2a8162000d98565b9150828204841483151762000e445762000e4362000c15565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e878262000d98565b915062000e948362000d98565b92508262000ea75762000ea662000e4b565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ee48262000eb7565b9050919050565b62000ef68162000ed7565b811462000f0257600080fd5b50565b60008151905062000f168162000eeb565b92915050565b60006020828403121562000f355762000f3462000eb2565b5b600062000f458482850162000f05565b91505092915050565b62000f598162000ed7565b82525050565b600060408201905062000f76600083018562000f4e565b62000f85602083018462000f4e565b9392505050565b600060208201905062000fa3600083018462000f4e565b92915050565b62000fb48162000d98565b82525050565b600060208201905062000fd1600083018462000fa9565b92915050565b6148b18062000fe76000396000f3fe6080604052600436106102e85760003560e01c8063a7734e0e11610190578063e8a379b2116100dc578063f2fde38b11610095578063f708a64f1161006f578063f708a64f14610b47578063f84ba65d14610b70578063f887ea4014610b99578063fe9fbb8014610bc4576102ef565b8063f2fde38b14610acc578063f4f3b20014610af5578063f6612af214610b1e576102ef565b8063e8a379b2146109ac578063e91f214e146109d5578063ec4cfa6c14610a00578063f0b37c0414610a3d578063f18dba2614610a66578063f1f3bca314610a8f576102ef565b8063ba22415b11610149578063c6d2577d11610123578063c6d2577d146108f0578063d806d12f1461091b578063dd62ed3e14610946578063e180161814610983576102ef565b8063ba22415b14610871578063bf56b3711461089a578063c0548b7d146108c5576102ef565b8063a7734e0e14610777578063a8aa1b31146107a0578063a9059cbb146107cb578063ae34859114610808578063b210b06d14610831578063b6a5d7de14610848576102ef565b8063571ac8b01161024f5780637d1db4a51161020857806395d89b41116101e257806395d89b41146106cd57806397613b28146106f8578063a51af4c514610721578063a5791c221461074c576102ef565b80637d1db4a51461063a578063893d20e814610665578063951583c314610690576102ef565b8063571ac8b0146105185780635c85974f14610555578063658d4b7f1461057e5780636ddd1713146105a757806370a08231146105d257806378b547911461060f576102ef565b8063244ce7db116102a1578063244ce7db146104065780632b112e491461042f5780632f54bf6e1461045a578063313ce567146104975780633bb8a8d4146104c25780634d95cad9146104ed576102ef565b806301339c21146102f45780630445b6671461030b57806306fdde0314610336578063095ea7b31461036157806318160ddd1461039e57806323b872dd146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c01565b005b34801561031757600080fd5b50610320610c9e565b60405161032d91906139a0565b60405180910390f35b34801561034257600080fd5b5061034b610ca4565b6040516103589190613a4b565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190613afc565b610ce1565b6040516103959190613b57565b60405180910390f35b3480156103aa57600080fd5b506103b3610dd3565b6040516103c091906139a0565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190613b72565b610ddd565b6040516103fd9190613b57565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190613bc5565b610fbf565b005b34801561043b57600080fd5b50610444611020565b60405161045191906139a0565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190613bf2565b6110a2565b60405161048e9190613b57565b60405180910390f35b3480156104a357600080fd5b506104ac6110fb565b6040516104b99190613c3b565b60405180910390f35b3480156104ce57600080fd5b506104d7611104565b6040516104e49190613b57565b60405180910390f35b3480156104f957600080fd5b50610502611117565b60405161050f9190613c65565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a9190613bf2565b61113d565b60405161054c9190613b57565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190613bc5565b611152565b005b34801561058a57600080fd5b506105a560048036038101906105a09190613cac565b6111c0565b005b3480156105b357600080fd5b506105bc611263565b6040516105c99190613b57565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f49190613bf2565b611276565b60405161060691906139a0565b60405180910390f35b34801561061b57600080fd5b506106246112bf565b6040516106319190613c65565b60405180910390f35b34801561064657600080fd5b5061064f6112e5565b60405161065c91906139a0565b60405180910390f35b34801561067157600080fd5b5061067a6112eb565b6040516106879190613c65565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190613bc5565b611314565b6040516106c491906139a0565b60405180910390f35b3480156106d957600080fd5b506106e2611386565b6040516106ef9190613a4b565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190613cec565b6113c3565b005b34801561072d57600080fd5b50610736611430565b6040516107439190613c65565b60405180910390f35b34801561075857600080fd5b50610761611456565b60405161076e9190613c65565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190613d2c565b61147c565b005b3480156107ac57600080fd5b506107b5611508565b6040516107c29190613c65565b60405180910390f35b3480156107d757600080fd5b506107f260048036038101906107ed9190613afc565b61152e565b6040516107ff9190613b57565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a9190613d93565b611543565b005b34801561083d57600080fd5b50610846611611565b005b34801561085457600080fd5b5061086f600480360381019061086a9190613bf2565b611663565b005b34801561087d57600080fd5b5061089860048036038101906108939190613dd3565b611705565b005b3480156108a657600080fd5b506108af61178b565b6040516108bc91906139a0565b60405180910390f35b3480156108d157600080fd5b506108da611791565b6040516108e79190613c65565b60405180910390f35b3480156108fc57600080fd5b506109056117b7565b60405161091291906139a0565b60405180910390f35b34801561092757600080fd5b506109306117bd565b60405161093d91906139a0565b60405180910390f35b34801561095257600080fd5b5061096d60048036038101906109689190613d93565b6118e4565b60405161097a91906139a0565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a59190613e26565b61196b565b005b3480156109b857600080fd5b506109d360048036038101906109ce9190613bc5565b611a2a565b005b3480156109e157600080fd5b506109ea611b55565b6040516109f791906139a0565b60405180910390f35b348015610a0c57600080fd5b50610a276004803603810190610a229190613e66565b611b6b565b604051610a349190613b57565b60405180910390f35b348015610a4957600080fd5b50610a646004803603810190610a5f9190613bf2565b611b80565b005b348015610a7257600080fd5b50610a8d6004803603810190610a889190613e66565b611c23565b005b348015610a9b57600080fd5b50610ab66004803603810190610ab19190613ea6565b611cfe565b604051610ac391906139a0565b60405180910390f35b348015610ad857600080fd5b50610af36004803603810190610aee9190613f11565b611d52565b005b348015610b0157600080fd5b50610b1c6004803603810190610b179190613bf2565b611e6b565b005b348015610b2a57600080fd5b50610b456004803603810190610b409190613e66565b611f82565b005b348015610b5357600080fd5b50610b6e6004803603810190610b699190613cac565b611fdc565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190613cac565b61227c565b005b348015610ba557600080fd5b50610bae61231f565b604051610bbb9190613f9d565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be69190613bf2565b612345565b604051610bf89190613b57565b60405180910390f35b610c0a33612345565b610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090614004565b60405180910390fd5b6000601a5414610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590614070565b60405180910390fd5b43601a8190555042601b81905550565b602b5481565b60606040518060400160405280600c81526020017f5665727475456e74726f70790000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610dc191906139a0565b60405180910390a36001905092915050565b6000600754905090565b6000600754600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fab57610f2a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b19092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fb6848484612406565b90509392505050565b610fc833612345565b611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe90614004565b60405180910390fd5b620b71b0811061101657600080fd5b8060298190555050565b600061109d611050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611276565b61108f61107e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611276565b60075461291890919063ffffffff16565b61291890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b602060009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061114b82600754610ce1565b9050919050565b61115b33612345565b61119a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190614004565b60405180910390fd5b6103e86007546111aa91906140ee565b8110156111b657600080fd5b8060088190555050565b6111c933612345565b611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90614004565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602a60009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061137f611321611020565b6113716113626002611354601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611276565b61292e90919063ffffffff16565b8561292e90919063ffffffff16565b61239b90919063ffffffff16565b9050919050565b60606040518060400160405280600381526020017f56454d0000000000000000000000000000000000000000000000000000000000815250905090565b6113cc33612345565b61140b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140290614004565b60405180910390fd5b81602a60006101000a81548160ff02191690831515021790555080602b819055505050565b602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61148533612345565b6114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90614004565b60405180910390fd5b83602060006101000a81548160ff02191690831515021790555082602281905550600060238190555081602481905550806025819055504360268190555050505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061153b338484612406565b905092915050565b61154c33612345565b61158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290614004565b60405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61161a33612345565b611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614004565b60405180910390fd5b6000601e81905550565b61166c336110a2565b6116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a29061416b565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61170e33612345565b61174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174490614004565b60405180910390fd5b6002828461175b91906140ee565b1115801561176857508183115b61177157600080fd5b82601c8190555081601d8190555080601f81905550505050565b601a5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b60004262015180601b546117d1919061418b565b1115611809576118026013546117f461465060125461292e90919063ffffffff16565b61239b90919063ffffffff16565b90506118e1565b42611821601f54601e5461294490919063ffffffff16565b11156118db57600061185242611844601f54601e5461294490919063ffffffff16565b61291890919063ffffffff16565b90506000611895601254611887601d54611879601c5460125461292e90919063ffffffff16565b61239b90919063ffffffff16565b61291890919063ffffffff16565b90506118d26118c1601f546118b3858561292e90919063ffffffff16565b61239b90919063ffffffff16565b60125461294490919063ffffffff16565b925050506118e1565b60125490505b90565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61197433612345565b6119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90614004565b60405180910390fd5b6119df82600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661295a565b8015611a265742601e819055507fda1b5a4c951afa54d241d42ad0439a14050dc3711406fd2ddc2d4c4b10939150601f54604051611a1d91906139a0565b60405180910390a15b5050565b611a3333612345565b611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6990614004565b60405180910390fd5b60008103611ae857601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611ae2573d6000803e3d6000fd5b50611b52565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b50573d6000803e3d6000fd5b505b50565b6fffffffffffffffffffffffffffffffff801681565b600082611b7783611314565b11905092915050565b611b89336110a2565b611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf9061416b565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c2c33612345565b611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6290614004565b60405180910390fd5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f18dba2683836040518363ffffffff1660e01b8152600401611cc89291906141bf565b600060405180830381600087803b158015611ce257600080fd5b505af1158015611cf6573d6000803e3d6000fd5b505050505050565b6000436001601a54611d10919061418b565b10611d3257611d2b600160135461291890919063ffffffff16565b9050611d4d565b8115611d4757611d406117bd565b9050611d4d565b60125490505b919050565b611d5b336110a2565b611d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d919061416b565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611e609190614209565b60405180910390a150565b611e7433612345565b611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90614004565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611eee9190613c65565b602060405180830381865afa158015611f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2f9190614239565b9050611f7e601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16612b389092919063ffffffff16565b5050565b611f8b33612345565b611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190614004565b60405180910390fd5b81601681905550806017819055505050565b611fe533612345565b612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201b90614004565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120ae5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6120b757600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156121a957602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016121729291906142a1565b600060405180830381600087803b15801561218c57600080fd5b505af11580156121a0573d6000803e3d6000fd5b50505050612278565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016122459291906142ca565b600060405180830381600087803b15801561225f57600080fd5b505af1158015612273573d6000803e3d6000fd5b505050505b5050565b61228533612345565b6122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90614004565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081836123a991906140ee565b905092915050565b60008383111582906123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f09190613a4b565b60405180910390fd5b5082840390509392505050565b6000602c60009054906101000a900460ff161561242f57612428848484612bbe565b9050612911565b6124398483612d2c565b612441612dc9565b1561244f5761244e612ea0565b5b6124576133d2565b1561246557612464613485565b5b6124ee826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b19092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061253c85613501565b6125465782612552565b612551858585613558565b5b90506125a681600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661270357602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016126d69291906142ca565b600060405180830381600087803b1580156126f057600080fd5b505af1925050508015612701575060015b505b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661281d57602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016127f09291906142ca565b600060405180830381600087803b15801561280a57600080fd5b505af192505050801561281b575060015b505b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796029546040518263ffffffff1660e01b815260040161287a91906139a0565b600060405180830381600087803b15801561289457600080fd5b505af19250505080156128a5575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161290391906139a0565b60405180910390a360019150505b9392505050565b6000818361292691906142f3565b905092915050565b6000818361293c9190614327565b905092915050565b60008183612952919061418b565b905092915050565b6001602c60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561299257612991614369565b5b6040519080825280602002602001820160405280156129c05781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106129fa576129f9614398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612a4957612a48614398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b8152600401612ae69493929190614485565b6000604051808303818588803b158015612aff57600080fd5b505af1158015612b13573d6000803e3d6000fd5b5050505050506000602c60006101000a81548160ff0219169083151502179055505050565b612bb98363a9059cbb60e01b8484604051602401612b579291906142ca565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506136f3565b505050565b6000612c49826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b19092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cde82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b60085481111580612d865750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbc9061451d565b60405180910390fd5b5050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612e365750602c60009054906101000a900460ff16155b8015612e4e5750602a60009054906101000a900460ff165b8015612e9b5750602b54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602c60006101000a81548160ff0219169083151502179055506000612ecb601654601754611b6b565b612ed757600e54612eda565b60005b90506000612f1a6002612f0c601254612efe86602b5461292e90919063ffffffff16565b61239b90919063ffffffff16565b61239b90919063ffffffff16565b90506000612f3382602b5461291890919063ffffffff16565b90506000600267ffffffffffffffff811115612f5257612f51614369565b5b604051908082528060200260200182016040528015612f805781602001602082028036833780820191505090505b5090503081600081518110612f9857612f97614398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061300957613008614398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016130ac95949392919061453d565b600060405180830381600087803b1580156130c657600080fd5b505af11580156130da573d6000803e3d6000fd5b5050505060006130f3824761291890919063ffffffff16565b9050600061311f61310e60028961239b90919063ffffffff16565b60125461291890919063ffffffff16565b9050600061315b600261314d8461313f8c8861292e90919063ffffffff16565b61239b90919063ffffffff16565b61239b90919063ffffffff16565b90506000613186836131786010548761292e90919063ffffffff16565b61239b90919063ffffffff16565b905060006131b1846131a36011548861292e90919063ffffffff16565b61239b90919063ffffffff16565b9050602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561321d57600080fd5b505af19350505050801561322f575060015b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613298573d6000803e3d6000fd5b5060008911156133ab57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161332b96959493929190614597565b60606040518083038185885af1158015613349573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061336e91906145f8565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516133a29291906141bf565b60405180910390a15b505050505050505050506000602c60006101000a81548160ff021916908315150217905550565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561343f5750602c60009054906101000a900460ff16155b80156134575750602060009054906101000a900460ff165b801561347257504360255460265461346f919061418b565b11155b801561348057506024544710155b905090565b6134b3602454600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661295a565b436026819055506134d160245460235461294490919063ffffffff16565b60238190555060225460235411156134ff576000602060006101000a81548160ff0219169083151502179055505b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806135da6013546135cc6135bd601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611cfe565b8661292e90919063ffffffff16565b61239b90919063ffffffff16565b905061362e81600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce91906139a0565b60405180910390a36136e9818461291890919063ffffffff16565b9150509392505050565b6000613755826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137ba9092919063ffffffff16565b90506000815111156137b557808060200190518101906137759190614660565b6137b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ab906146ff565b60405180910390fd5b5b505050565b60606137c984846000856137d2565b90509392505050565b606082471015613817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380e90614791565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161384091906147f8565b60006040518083038185875af1925050503d806000811461387d576040519150601f19603f3d011682016040523d82523d6000602084013e613882565b606091505b50915091506138938783838761389f565b92505050949350505050565b606083156139015760008351036138f9576138b985613914565b6138f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138ef9061485b565b60405180910390fd5b5b82905061390c565b61390b8383613937565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561394a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397e9190613a4b565b60405180910390fd5b6000819050919050565b61399a81613987565b82525050565b60006020820190506139b56000830184613991565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139f55780820151818401526020810190506139da565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a1d826139bb565b613a2781856139c6565b9350613a378185602086016139d7565b613a4081613a01565b840191505092915050565b60006020820190508181036000830152613a658184613a12565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a9d82613a72565b9050919050565b613aad81613a92565b8114613ab857600080fd5b50565b600081359050613aca81613aa4565b92915050565b613ad981613987565b8114613ae457600080fd5b50565b600081359050613af681613ad0565b92915050565b60008060408385031215613b1357613b12613a6d565b5b6000613b2185828601613abb565b9250506020613b3285828601613ae7565b9150509250929050565b60008115159050919050565b613b5181613b3c565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b600080600060608486031215613b8b57613b8a613a6d565b5b6000613b9986828701613abb565b9350506020613baa86828701613abb565b9250506040613bbb86828701613ae7565b9150509250925092565b600060208284031215613bdb57613bda613a6d565b5b6000613be984828501613ae7565b91505092915050565b600060208284031215613c0857613c07613a6d565b5b6000613c1684828501613abb565b91505092915050565b600060ff82169050919050565b613c3581613c1f565b82525050565b6000602082019050613c506000830184613c2c565b92915050565b613c5f81613a92565b82525050565b6000602082019050613c7a6000830184613c56565b92915050565b613c8981613b3c565b8114613c9457600080fd5b50565b600081359050613ca681613c80565b92915050565b60008060408385031215613cc357613cc2613a6d565b5b6000613cd185828601613abb565b9250506020613ce285828601613c97565b9150509250929050565b60008060408385031215613d0357613d02613a6d565b5b6000613d1185828601613c97565b9250506020613d2285828601613ae7565b9150509250929050565b60008060008060808587031215613d4657613d45613a6d565b5b6000613d5487828801613c97565b9450506020613d6587828801613ae7565b9350506040613d7687828801613ae7565b9250506060613d8787828801613ae7565b91505092959194509250565b60008060408385031215613daa57613da9613a6d565b5b6000613db885828601613abb565b9250506020613dc985828601613abb565b9150509250929050565b600080600060608486031215613dec57613deb613a6d565b5b6000613dfa86828701613ae7565b9350506020613e0b86828701613ae7565b9250506040613e1c86828701613ae7565b9150509250925092565b60008060408385031215613e3d57613e3c613a6d565b5b6000613e4b85828601613ae7565b9250506020613e5c85828601613c97565b9150509250929050565b60008060408385031215613e7d57613e7c613a6d565b5b6000613e8b85828601613ae7565b9250506020613e9c85828601613ae7565b9150509250929050565b600060208284031215613ebc57613ebb613a6d565b5b6000613eca84828501613c97565b91505092915050565b6000613ede82613a72565b9050919050565b613eee81613ed3565b8114613ef957600080fd5b50565b600081359050613f0b81613ee5565b92915050565b600060208284031215613f2757613f26613a6d565b5b6000613f3584828501613efc565b91505092915050565b6000819050919050565b6000613f63613f5e613f5984613a72565b613f3e565b613a72565b9050919050565b6000613f7582613f48565b9050919050565b6000613f8782613f6a565b9050919050565b613f9781613f7c565b82525050565b6000602082019050613fb26000830184613f8e565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000613fee600b836139c6565b9150613ff982613fb8565b602082019050919050565b6000602082019050818103600083015261401d81613fe1565b9050919050565b7f4c61756e63686564000000000000000000000000000000000000000000000000600082015250565b600061405a6008836139c6565b915061406582614024565b602082019050919050565b600060208201905081810360008301526140898161404d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613987565b915061410483613987565b92508261411457614113614090565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006141556006836139c6565b91506141608261411f565b602082019050919050565b6000602082019050818103600083015261418481614148565b9050919050565b600061419682613987565b91506141a183613987565b92508282019050808211156141b9576141b86140bf565b5b92915050565b60006040820190506141d46000830185613991565b6141e16020830184613991565b9392505050565b60006141f382613f6a565b9050919050565b614203816141e8565b82525050565b600060208201905061421e60008301846141fa565b92915050565b60008151905061423381613ad0565b92915050565b60006020828403121561424f5761424e613a6d565b5b600061425d84828501614224565b91505092915050565b6000819050919050565b600061428b61428661428184614266565b613f3e565b613987565b9050919050565b61429b81614270565b82525050565b60006040820190506142b66000830185613c56565b6142c36020830184614292565b9392505050565b60006040820190506142df6000830185613c56565b6142ec6020830184613991565b9392505050565b60006142fe82613987565b915061430983613987565b9250828203905081811115614321576143206140bf565b5b92915050565b600061433282613987565b915061433d83613987565b925082820261434b81613987565b91508282048414831517614362576143616140bf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143fc81613a92565b82525050565b600061440e83836143f3565b60208301905092915050565b6000602082019050919050565b6000614432826143c7565b61443c81856143d2565b9350614447836143e3565b8060005b8381101561447857815161445f8882614402565b975061446a8361441a565b92505060018101905061444b565b5085935050505092915050565b600060808201905061449a6000830187614292565b81810360208301526144ac8186614427565b90506144bb6040830185613c56565b6144c86060830184613991565b95945050505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006145076011836139c6565b9150614512826144d1565b602082019050919050565b60006020820190508181036000830152614536816144fa565b9050919050565b600060a0820190506145526000830188613991565b61455f6020830187614292565b81810360408301526145718186614427565b90506145806060830185613c56565b61458d6080830184613991565b9695505050505050565b600060c0820190506145ac6000830189613c56565b6145b96020830188613991565b6145c66040830187614292565b6145d36060830186614292565b6145e06080830185613c56565b6145ed60a0830184613991565b979650505050505050565b60008060006060848603121561461157614610613a6d565b5b600061461f86828701614224565b935050602061463086828701614224565b925050604061464186828701614224565b9150509250925092565b60008151905061465a81613c80565b92915050565b60006020828403121561467657614675613a6d565b5b60006146848482850161464b565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006146e9602a836139c6565b91506146f48261468d565b604082019050919050565b60006020820190508181036000830152614718816146dc565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b600061477b6026836139c6565b91506147868261471f565b604082019050919050565b600060208201905081810360008301526147aa8161476e565b9050919050565b600081519050919050565b600081905092915050565b60006147d2826147b1565b6147dc81856147bc565b93506147ec8185602086016139d7565b80840191505092915050565b600061480482846147c7565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000614845601d836139c6565b91506148508261480f565b602082019050919050565b6000602082019050818103600083015261487481614838565b905091905056fea2646970667358221220c708d0bb9ff139c04f39f3c03f2632d4854a69bef869c43582ceee877dcb9f0f64736f6c63430008110033608060405273d3f6895928bb1aa7811d2e08f8237994531396b0600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d500b1d8e8ef31e21c99d1db9a6444d3adf1270600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e55348015620000e057600080fd5b5060405162001c5938038062001c59833981810160405281019062000106919062000249565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001565773a5e0829caced8ffdd4de3c43696c57f7d7a678ff62000158565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200027b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200021182620001e4565b9050919050565b620002238162000204565b81146200022f57600080fd5b50565b600081519050620002438162000218565b92915050565b600060208284031215620002625762000261620001df565b5b6000620002728482850162000232565b91505092915050565b6119ce806200028b6000396000f3fe6080604052600436106100dd5760003560e01c8063d0e30db01161007f578063f0fc6bca11610059578063f0fc6bca14610293578063f18dba26146102aa578063ffb2c479146102d3578063ffd49c84146102fc576100dd565b8063d0e30db014610233578063e2d2e2191461023d578063efca2eed14610268576100dd565b80633a98ef39116100bb5780633a98ef39146101735780634fab0ae81461019e578063997664d7146101c9578063ce7c2ac2146101f4576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610136575b600080fd5b3480156100ee57600080fd5b506100f7610327565b6040516101049190611386565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611430565b61032d565b005b34801561014257600080fd5b5061015d60048036038101906101589190611470565b6105ec565b60405161016a9190611386565b60405180910390f35b34801561017f57600080fd5b50610188610705565b6040516101959190611386565b60405180910390f35b3480156101aa57600080fd5b506101b361070b565b6040516101c09190611386565b60405180910390f35b3480156101d557600080fd5b506101de610711565b6040516101eb9190611386565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190611470565b610717565b60405161022a9392919061149d565b60405180910390f35b61023b610741565b005b34801561024957600080fd5b50610252610b13565b60405161025f9190611386565b60405180910390f35b34801561027457600080fd5b5061027d610b19565b60405161028a9190611386565b60405180910390f35b34801561029f57600080fd5b506102a8610b1f565b005b3480156102b657600080fd5b506102d160048036038101906102cc91906114d4565b610b2a565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190611514565b610b94565b005b34801561030857600080fd5b50610311610d27565b60405161031e9190611386565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038557600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103da576103d982610d2d565b5b60008111801561042c57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561043f5761043a82610fc0565b6104a1565b60008114801561049157506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104a05761049f8261106f565b5b5b61050a816104fc600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461127690919063ffffffff16565b61128c90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105a2600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546112a2565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154036106405760009050610700565b600061068d600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546112a2565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106e857600092505050610700565b6106fb818361127690919063ffffffff16565b925050505b919050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079957600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107f69190611550565b602060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108379190611580565b90506000600267ffffffffffffffff811115610856576108556115ad565b5b6040519080825280602002602001820160405280156108845781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106108be576108bd6115dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061092f5761092e6115dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016109cc949392919061170e565b6000604051808303818588803b1580156109e557600080fd5b505af11580156109f9573d6000803e3d6000fd5b50505050506000610aae83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a5f9190611550565b602060405180830381865afa158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190611580565b61127690919063ffffffff16565b9050610ac58160095461128c90919063ffffffff16565b600981905550610b08610af7600854610ae984600c546112d490919063ffffffff16565b6112ea90919063ffffffff16565b600b5461128c90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610b2833610d2d565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b8257600080fd5b81600d8190555080600e819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bec57600080fd5b6000600480549050905060008103610c045750610d24565b6000805a905060005b8483108015610c1b57508381105b15610d1f5783600f5410610c32576000600f819055505b610c7b6004600f5481548110610c4b57610c4a6115dc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611300565b15610cca57610cc96004600f5481548110610c9957610c986115dc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d2d565b5b610cef610ce05a8461127690919063ffffffff16565b8461128c90919063ffffffff16565b92505a9150600f6000815480929190610d0790611789565b91905055508080610d1790611789565b915050610c0d565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540315610fbd576000610d83826105ec565b90506000811115610fbb57610da381600a5461128c90919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610e069291906117d1565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e499190611832565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ee381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461128c90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610f74600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546112a2565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050611083919061185f565b81548110611094576110936115dc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611112576111116115dc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600460016004805490506111b2919061185f565b815481106111c3576111c26115dc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061123e5761123d611893565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b60008183611284919061185f565b905092915050565b6000818361129a91906118c2565b905092915050565b60006112cd600c546112bf600b54856112d490919063ffffffff16565b6112ea90919063ffffffff16565b9050919050565b600081836112e291906118f6565b905092915050565b600081836112f89190611967565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461135091906118c2565b1080156113665750600e54611364836105ec565b115b9050919050565b6000819050919050565b6113808161136d565b82525050565b600060208201905061139b6000830184611377565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113d1826113a6565b9050919050565b6113e1816113c6565b81146113ec57600080fd5b50565b6000813590506113fe816113d8565b92915050565b61140d8161136d565b811461141857600080fd5b50565b60008135905061142a81611404565b92915050565b60008060408385031215611447576114466113a1565b5b6000611455858286016113ef565b92505060206114668582860161141b565b9150509250929050565b600060208284031215611486576114856113a1565b5b6000611494848285016113ef565b91505092915050565b60006060820190506114b26000830186611377565b6114bf6020830185611377565b6114cc6040830184611377565b949350505050565b600080604083850312156114eb576114ea6113a1565b5b60006114f98582860161141b565b925050602061150a8582860161141b565b9150509250929050565b60006020828403121561152a576115296113a1565b5b60006115388482850161141b565b91505092915050565b61154a816113c6565b82525050565b60006020820190506115656000830184611541565b92915050565b60008151905061157a81611404565b92915050565b600060208284031215611596576115956113a1565b5b60006115a48482850161156b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061163a6116356116308461160b565b611615565b61136d565b9050919050565b61164a8161161f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611685816113c6565b82525050565b6000611697838361167c565b60208301905092915050565b6000602082019050919050565b60006116bb82611650565b6116c5818561165b565b93506116d08361166c565b8060005b838110156117015781516116e8888261168b565b97506116f3836116a3565b9250506001810190506116d4565b5085935050505092915050565b60006080820190506117236000830187611641565b818103602083015261173581866116b0565b90506117446040830185611541565b6117516060830184611377565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117948261136d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117c6576117c561175a565b5b600182019050919050565b60006040820190506117e66000830185611541565b6117f36020830184611377565b9392505050565b60008115159050919050565b61180f816117fa565b811461181a57600080fd5b50565b60008151905061182c81611806565b92915050565b600060208284031215611848576118476113a1565b5b60006118568482850161181d565b91505092915050565b600061186a8261136d565b91506118758361136d565b925082820390508181111561188d5761188c61175a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006118cd8261136d565b91506118d88361136d565b92508282019050808211156118f0576118ef61175a565b5b92915050565b60006119018261136d565b915061190c8361136d565b925082820261191a8161136d565b915082820484148315176119315761193061175a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006119728261136d565b915061197d8361136d565b92508261198d5761198c611938565b5b82820490509291505056fea26469706673582212209b7adf23f73b1cc48bbe2dabe47e2d3b7feec6c450915c28f67fee9e2c5e124a64736f6c63430008110033000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
Deployed Bytecode
0x6080604052600436106102e85760003560e01c8063a7734e0e11610190578063e8a379b2116100dc578063f2fde38b11610095578063f708a64f1161006f578063f708a64f14610b47578063f84ba65d14610b70578063f887ea4014610b99578063fe9fbb8014610bc4576102ef565b8063f2fde38b14610acc578063f4f3b20014610af5578063f6612af214610b1e576102ef565b8063e8a379b2146109ac578063e91f214e146109d5578063ec4cfa6c14610a00578063f0b37c0414610a3d578063f18dba2614610a66578063f1f3bca314610a8f576102ef565b8063ba22415b11610149578063c6d2577d11610123578063c6d2577d146108f0578063d806d12f1461091b578063dd62ed3e14610946578063e180161814610983576102ef565b8063ba22415b14610871578063bf56b3711461089a578063c0548b7d146108c5576102ef565b8063a7734e0e14610777578063a8aa1b31146107a0578063a9059cbb146107cb578063ae34859114610808578063b210b06d14610831578063b6a5d7de14610848576102ef565b8063571ac8b01161024f5780637d1db4a51161020857806395d89b41116101e257806395d89b41146106cd57806397613b28146106f8578063a51af4c514610721578063a5791c221461074c576102ef565b80637d1db4a51461063a578063893d20e814610665578063951583c314610690576102ef565b8063571ac8b0146105185780635c85974f14610555578063658d4b7f1461057e5780636ddd1713146105a757806370a08231146105d257806378b547911461060f576102ef565b8063244ce7db116102a1578063244ce7db146104065780632b112e491461042f5780632f54bf6e1461045a578063313ce567146104975780633bb8a8d4146104c25780634d95cad9146104ed576102ef565b806301339c21146102f45780630445b6671461030b57806306fdde0314610336578063095ea7b31461036157806318160ddd1461039e57806323b872dd146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c01565b005b34801561031757600080fd5b50610320610c9e565b60405161032d91906139a0565b60405180910390f35b34801561034257600080fd5b5061034b610ca4565b6040516103589190613a4b565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190613afc565b610ce1565b6040516103959190613b57565b60405180910390f35b3480156103aa57600080fd5b506103b3610dd3565b6040516103c091906139a0565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190613b72565b610ddd565b6040516103fd9190613b57565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190613bc5565b610fbf565b005b34801561043b57600080fd5b50610444611020565b60405161045191906139a0565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190613bf2565b6110a2565b60405161048e9190613b57565b60405180910390f35b3480156104a357600080fd5b506104ac6110fb565b6040516104b99190613c3b565b60405180910390f35b3480156104ce57600080fd5b506104d7611104565b6040516104e49190613b57565b60405180910390f35b3480156104f957600080fd5b50610502611117565b60405161050f9190613c65565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a9190613bf2565b61113d565b60405161054c9190613b57565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190613bc5565b611152565b005b34801561058a57600080fd5b506105a560048036038101906105a09190613cac565b6111c0565b005b3480156105b357600080fd5b506105bc611263565b6040516105c99190613b57565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f49190613bf2565b611276565b60405161060691906139a0565b60405180910390f35b34801561061b57600080fd5b506106246112bf565b6040516106319190613c65565b60405180910390f35b34801561064657600080fd5b5061064f6112e5565b60405161065c91906139a0565b60405180910390f35b34801561067157600080fd5b5061067a6112eb565b6040516106879190613c65565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190613bc5565b611314565b6040516106c491906139a0565b60405180910390f35b3480156106d957600080fd5b506106e2611386565b6040516106ef9190613a4b565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190613cec565b6113c3565b005b34801561072d57600080fd5b50610736611430565b6040516107439190613c65565b60405180910390f35b34801561075857600080fd5b50610761611456565b60405161076e9190613c65565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190613d2c565b61147c565b005b3480156107ac57600080fd5b506107b5611508565b6040516107c29190613c65565b60405180910390f35b3480156107d757600080fd5b506107f260048036038101906107ed9190613afc565b61152e565b6040516107ff9190613b57565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a9190613d93565b611543565b005b34801561083d57600080fd5b50610846611611565b005b34801561085457600080fd5b5061086f600480360381019061086a9190613bf2565b611663565b005b34801561087d57600080fd5b5061089860048036038101906108939190613dd3565b611705565b005b3480156108a657600080fd5b506108af61178b565b6040516108bc91906139a0565b60405180910390f35b3480156108d157600080fd5b506108da611791565b6040516108e79190613c65565b60405180910390f35b3480156108fc57600080fd5b506109056117b7565b60405161091291906139a0565b60405180910390f35b34801561092757600080fd5b506109306117bd565b60405161093d91906139a0565b60405180910390f35b34801561095257600080fd5b5061096d60048036038101906109689190613d93565b6118e4565b60405161097a91906139a0565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a59190613e26565b61196b565b005b3480156109b857600080fd5b506109d360048036038101906109ce9190613bc5565b611a2a565b005b3480156109e157600080fd5b506109ea611b55565b6040516109f791906139a0565b60405180910390f35b348015610a0c57600080fd5b50610a276004803603810190610a229190613e66565b611b6b565b604051610a349190613b57565b60405180910390f35b348015610a4957600080fd5b50610a646004803603810190610a5f9190613bf2565b611b80565b005b348015610a7257600080fd5b50610a8d6004803603810190610a889190613e66565b611c23565b005b348015610a9b57600080fd5b50610ab66004803603810190610ab19190613ea6565b611cfe565b604051610ac391906139a0565b60405180910390f35b348015610ad857600080fd5b50610af36004803603810190610aee9190613f11565b611d52565b005b348015610b0157600080fd5b50610b1c6004803603810190610b179190613bf2565b611e6b565b005b348015610b2a57600080fd5b50610b456004803603810190610b409190613e66565b611f82565b005b348015610b5357600080fd5b50610b6e6004803603810190610b699190613cac565b611fdc565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190613cac565b61227c565b005b348015610ba557600080fd5b50610bae61231f565b604051610bbb9190613f9d565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be69190613bf2565b612345565b604051610bf89190613b57565b60405180910390f35b610c0a33612345565b610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090614004565b60405180910390fd5b6000601a5414610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590614070565b60405180910390fd5b43601a8190555042601b81905550565b602b5481565b60606040518060400160405280600c81526020017f5665727475456e74726f70790000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610dc191906139a0565b60405180910390a36001905092915050565b6000600754905090565b6000600754600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fab57610f2a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b19092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fb6848484612406565b90509392505050565b610fc833612345565b611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe90614004565b60405180910390fd5b620b71b0811061101657600080fd5b8060298190555050565b600061109d611050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611276565b61108f61107e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611276565b60075461291890919063ffffffff16565b61291890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b602060009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061114b82600754610ce1565b9050919050565b61115b33612345565b61119a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190614004565b60405180910390fd5b6103e86007546111aa91906140ee565b8110156111b657600080fd5b8060088190555050565b6111c933612345565b611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90614004565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602a60009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061137f611321611020565b6113716113626002611354601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611276565b61292e90919063ffffffff16565b8561292e90919063ffffffff16565b61239b90919063ffffffff16565b9050919050565b60606040518060400160405280600381526020017f56454d0000000000000000000000000000000000000000000000000000000000815250905090565b6113cc33612345565b61140b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140290614004565b60405180910390fd5b81602a60006101000a81548160ff02191690831515021790555080602b819055505050565b602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61148533612345565b6114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90614004565b60405180910390fd5b83602060006101000a81548160ff02191690831515021790555082602281905550600060238190555081602481905550806025819055504360268190555050505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061153b338484612406565b905092915050565b61154c33612345565b61158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290614004565b60405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61161a33612345565b611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614004565b60405180910390fd5b6000601e81905550565b61166c336110a2565b6116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a29061416b565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61170e33612345565b61174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174490614004565b60405180910390fd5b6002828461175b91906140ee565b1115801561176857508183115b61177157600080fd5b82601c8190555081601d8190555080601f81905550505050565b601a5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b60004262015180601b546117d1919061418b565b1115611809576118026013546117f461465060125461292e90919063ffffffff16565b61239b90919063ffffffff16565b90506118e1565b42611821601f54601e5461294490919063ffffffff16565b11156118db57600061185242611844601f54601e5461294490919063ffffffff16565b61291890919063ffffffff16565b90506000611895601254611887601d54611879601c5460125461292e90919063ffffffff16565b61239b90919063ffffffff16565b61291890919063ffffffff16565b90506118d26118c1601f546118b3858561292e90919063ffffffff16565b61239b90919063ffffffff16565b60125461294490919063ffffffff16565b925050506118e1565b60125490505b90565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61197433612345565b6119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90614004565b60405180910390fd5b6119df82600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661295a565b8015611a265742601e819055507fda1b5a4c951afa54d241d42ad0439a14050dc3711406fd2ddc2d4c4b10939150601f54604051611a1d91906139a0565b60405180910390a15b5050565b611a3333612345565b611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6990614004565b60405180910390fd5b60008103611ae857601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611ae2573d6000803e3d6000fd5b50611b52565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b50573d6000803e3d6000fd5b505b50565b6fffffffffffffffffffffffffffffffff801681565b600082611b7783611314565b11905092915050565b611b89336110a2565b611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf9061416b565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c2c33612345565b611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6290614004565b60405180910390fd5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f18dba2683836040518363ffffffff1660e01b8152600401611cc89291906141bf565b600060405180830381600087803b158015611ce257600080fd5b505af1158015611cf6573d6000803e3d6000fd5b505050505050565b6000436001601a54611d10919061418b565b10611d3257611d2b600160135461291890919063ffffffff16565b9050611d4d565b8115611d4757611d406117bd565b9050611d4d565b60125490505b919050565b611d5b336110a2565b611d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d919061416b565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611e609190614209565b60405180910390a150565b611e7433612345565b611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90614004565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611eee9190613c65565b602060405180830381865afa158015611f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2f9190614239565b9050611f7e601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16612b389092919063ffffffff16565b5050565b611f8b33612345565b611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190614004565b60405180910390fd5b81601681905550806017819055505050565b611fe533612345565b612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201b90614004565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120ae5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6120b757600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156121a957602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016121729291906142a1565b600060405180830381600087803b15801561218c57600080fd5b505af11580156121a0573d6000803e3d6000fd5b50505050612278565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016122459291906142ca565b600060405180830381600087803b15801561225f57600080fd5b505af1158015612273573d6000803e3d6000fd5b505050505b5050565b61228533612345565b6122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90614004565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081836123a991906140ee565b905092915050565b60008383111582906123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f09190613a4b565b60405180910390fd5b5082840390509392505050565b6000602c60009054906101000a900460ff161561242f57612428848484612bbe565b9050612911565b6124398483612d2c565b612441612dc9565b1561244f5761244e612ea0565b5b6124576133d2565b1561246557612464613485565b5b6124ee826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b19092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061253c85613501565b6125465782612552565b612551858585613558565b5b90506125a681600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661270357602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016126d69291906142ca565b600060405180830381600087803b1580156126f057600080fd5b505af1925050508015612701575060015b505b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661281d57602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016127f09291906142ca565b600060405180830381600087803b15801561280a57600080fd5b505af192505050801561281b575060015b505b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796029546040518263ffffffff1660e01b815260040161287a91906139a0565b600060405180830381600087803b15801561289457600080fd5b505af19250505080156128a5575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161290391906139a0565b60405180910390a360019150505b9392505050565b6000818361292691906142f3565b905092915050565b6000818361293c9190614327565b905092915050565b60008183612952919061418b565b905092915050565b6001602c60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561299257612991614369565b5b6040519080825280602002602001820160405280156129c05781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106129fa576129f9614398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612a4957612a48614398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b8152600401612ae69493929190614485565b6000604051808303818588803b158015612aff57600080fd5b505af1158015612b13573d6000803e3d6000fd5b5050505050506000602c60006101000a81548160ff0219169083151502179055505050565b612bb98363a9059cbb60e01b8484604051602401612b579291906142ca565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506136f3565b505050565b6000612c49826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b19092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cde82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b60085481111580612d865750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbc9061451d565b60405180910390fd5b5050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612e365750602c60009054906101000a900460ff16155b8015612e4e5750602a60009054906101000a900460ff165b8015612e9b5750602b54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602c60006101000a81548160ff0219169083151502179055506000612ecb601654601754611b6b565b612ed757600e54612eda565b60005b90506000612f1a6002612f0c601254612efe86602b5461292e90919063ffffffff16565b61239b90919063ffffffff16565b61239b90919063ffffffff16565b90506000612f3382602b5461291890919063ffffffff16565b90506000600267ffffffffffffffff811115612f5257612f51614369565b5b604051908082528060200260200182016040528015612f805781602001602082028036833780820191505090505b5090503081600081518110612f9857612f97614398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061300957613008614398565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016130ac95949392919061453d565b600060405180830381600087803b1580156130c657600080fd5b505af11580156130da573d6000803e3d6000fd5b5050505060006130f3824761291890919063ffffffff16565b9050600061311f61310e60028961239b90919063ffffffff16565b60125461291890919063ffffffff16565b9050600061315b600261314d8461313f8c8861292e90919063ffffffff16565b61239b90919063ffffffff16565b61239b90919063ffffffff16565b90506000613186836131786010548761292e90919063ffffffff16565b61239b90919063ffffffff16565b905060006131b1846131a36011548861292e90919063ffffffff16565b61239b90919063ffffffff16565b9050602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561321d57600080fd5b505af19350505050801561322f575060015b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613298573d6000803e3d6000fd5b5060008911156133ab57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161332b96959493929190614597565b60606040518083038185885af1158015613349573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061336e91906145f8565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516133a29291906141bf565b60405180910390a15b505050505050505050506000602c60006101000a81548160ff021916908315150217905550565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561343f5750602c60009054906101000a900460ff16155b80156134575750602060009054906101000a900460ff165b801561347257504360255460265461346f919061418b565b11155b801561348057506024544710155b905090565b6134b3602454600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661295a565b436026819055506134d160245460235461294490919063ffffffff16565b60238190555060225460235411156134ff576000602060006101000a81548160ff0219169083151502179055505b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806135da6013546135cc6135bd601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611cfe565b8661292e90919063ffffffff16565b61239b90919063ffffffff16565b905061362e81600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce91906139a0565b60405180910390a36136e9818461291890919063ffffffff16565b9150509392505050565b6000613755826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137ba9092919063ffffffff16565b90506000815111156137b557808060200190518101906137759190614660565b6137b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ab906146ff565b60405180910390fd5b5b505050565b60606137c984846000856137d2565b90509392505050565b606082471015613817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380e90614791565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161384091906147f8565b60006040518083038185875af1925050503d806000811461387d576040519150601f19603f3d011682016040523d82523d6000602084013e613882565b606091505b50915091506138938783838761389f565b92505050949350505050565b606083156139015760008351036138f9576138b985613914565b6138f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138ef9061485b565b60405180910390fd5b5b82905061390c565b61390b8383613937565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561394a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397e9190613a4b565b60405180910390fd5b6000819050919050565b61399a81613987565b82525050565b60006020820190506139b56000830184613991565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139f55780820151818401526020810190506139da565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a1d826139bb565b613a2781856139c6565b9350613a378185602086016139d7565b613a4081613a01565b840191505092915050565b60006020820190508181036000830152613a658184613a12565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a9d82613a72565b9050919050565b613aad81613a92565b8114613ab857600080fd5b50565b600081359050613aca81613aa4565b92915050565b613ad981613987565b8114613ae457600080fd5b50565b600081359050613af681613ad0565b92915050565b60008060408385031215613b1357613b12613a6d565b5b6000613b2185828601613abb565b9250506020613b3285828601613ae7565b9150509250929050565b60008115159050919050565b613b5181613b3c565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b600080600060608486031215613b8b57613b8a613a6d565b5b6000613b9986828701613abb565b9350506020613baa86828701613abb565b9250506040613bbb86828701613ae7565b9150509250925092565b600060208284031215613bdb57613bda613a6d565b5b6000613be984828501613ae7565b91505092915050565b600060208284031215613c0857613c07613a6d565b5b6000613c1684828501613abb565b91505092915050565b600060ff82169050919050565b613c3581613c1f565b82525050565b6000602082019050613c506000830184613c2c565b92915050565b613c5f81613a92565b82525050565b6000602082019050613c7a6000830184613c56565b92915050565b613c8981613b3c565b8114613c9457600080fd5b50565b600081359050613ca681613c80565b92915050565b60008060408385031215613cc357613cc2613a6d565b5b6000613cd185828601613abb565b9250506020613ce285828601613c97565b9150509250929050565b60008060408385031215613d0357613d02613a6d565b5b6000613d1185828601613c97565b9250506020613d2285828601613ae7565b9150509250929050565b60008060008060808587031215613d4657613d45613a6d565b5b6000613d5487828801613c97565b9450506020613d6587828801613ae7565b9350506040613d7687828801613ae7565b9250506060613d8787828801613ae7565b91505092959194509250565b60008060408385031215613daa57613da9613a6d565b5b6000613db885828601613abb565b9250506020613dc985828601613abb565b9150509250929050565b600080600060608486031215613dec57613deb613a6d565b5b6000613dfa86828701613ae7565b9350506020613e0b86828701613ae7565b9250506040613e1c86828701613ae7565b9150509250925092565b60008060408385031215613e3d57613e3c613a6d565b5b6000613e4b85828601613ae7565b9250506020613e5c85828601613c97565b9150509250929050565b60008060408385031215613e7d57613e7c613a6d565b5b6000613e8b85828601613ae7565b9250506020613e9c85828601613ae7565b9150509250929050565b600060208284031215613ebc57613ebb613a6d565b5b6000613eca84828501613c97565b91505092915050565b6000613ede82613a72565b9050919050565b613eee81613ed3565b8114613ef957600080fd5b50565b600081359050613f0b81613ee5565b92915050565b600060208284031215613f2757613f26613a6d565b5b6000613f3584828501613efc565b91505092915050565b6000819050919050565b6000613f63613f5e613f5984613a72565b613f3e565b613a72565b9050919050565b6000613f7582613f48565b9050919050565b6000613f8782613f6a565b9050919050565b613f9781613f7c565b82525050565b6000602082019050613fb26000830184613f8e565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000613fee600b836139c6565b9150613ff982613fb8565b602082019050919050565b6000602082019050818103600083015261401d81613fe1565b9050919050565b7f4c61756e63686564000000000000000000000000000000000000000000000000600082015250565b600061405a6008836139c6565b915061406582614024565b602082019050919050565b600060208201905081810360008301526140898161404d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613987565b915061410483613987565b92508261411457614113614090565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006141556006836139c6565b91506141608261411f565b602082019050919050565b6000602082019050818103600083015261418481614148565b9050919050565b600061419682613987565b91506141a183613987565b92508282019050808211156141b9576141b86140bf565b5b92915050565b60006040820190506141d46000830185613991565b6141e16020830184613991565b9392505050565b60006141f382613f6a565b9050919050565b614203816141e8565b82525050565b600060208201905061421e60008301846141fa565b92915050565b60008151905061423381613ad0565b92915050565b60006020828403121561424f5761424e613a6d565b5b600061425d84828501614224565b91505092915050565b6000819050919050565b600061428b61428661428184614266565b613f3e565b613987565b9050919050565b61429b81614270565b82525050565b60006040820190506142b66000830185613c56565b6142c36020830184614292565b9392505050565b60006040820190506142df6000830185613c56565b6142ec6020830184613991565b9392505050565b60006142fe82613987565b915061430983613987565b9250828203905081811115614321576143206140bf565b5b92915050565b600061433282613987565b915061433d83613987565b925082820261434b81613987565b91508282048414831517614362576143616140bf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143fc81613a92565b82525050565b600061440e83836143f3565b60208301905092915050565b6000602082019050919050565b6000614432826143c7565b61443c81856143d2565b9350614447836143e3565b8060005b8381101561447857815161445f8882614402565b975061446a8361441a565b92505060018101905061444b565b5085935050505092915050565b600060808201905061449a6000830187614292565b81810360208301526144ac8186614427565b90506144bb6040830185613c56565b6144c86060830184613991565b95945050505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006145076011836139c6565b9150614512826144d1565b602082019050919050565b60006020820190508181036000830152614536816144fa565b9050919050565b600060a0820190506145526000830188613991565b61455f6020830187614292565b81810360408301526145718186614427565b90506145806060830185613c56565b61458d6080830184613991565b9695505050505050565b600060c0820190506145ac6000830189613c56565b6145b96020830188613991565b6145c66040830187614292565b6145d36060830186614292565b6145e06080830185613c56565b6145ed60a0830184613991565b979650505050505050565b60008060006060848603121561461157614610613a6d565b5b600061461f86828701614224565b935050602061463086828701614224565b925050604061464186828701614224565b9150509250925092565b60008151905061465a81613c80565b92915050565b60006020828403121561467657614675613a6d565b5b60006146848482850161464b565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006146e9602a836139c6565b91506146f48261468d565b604082019050919050565b60006020820190508181036000830152614718816146dc565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b600061477b6026836139c6565b91506147868261471f565b604082019050919050565b600060208201905081810360008301526147aa8161476e565b9050919050565b600081519050919050565b600081905092915050565b60006147d2826147b1565b6147dc81856147bc565b93506147ec8185602086016139d7565b80840191505092915050565b600061480482846147c7565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000614845601d836139c6565b91506148508261480f565b602082019050919050565b6000602082019050818103600083015261487481614838565b905091905056fea2646970667358221220c708d0bb9ff139c04f39f3c03f2632d4854a69bef869c43582ceee877dcb9f0f64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
-----Decoded View---------------
Arg [0] : _dexRouter (address): 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
Deployed Bytecode Sourcemap
19592:14761:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31496:175;;;;;;;;;;;;;:::i;:::-;;21821:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23231:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23732:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22961:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24239:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33652:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33789:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11713:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23055:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21411:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19773:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23954:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31677:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32181:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21784:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23482:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19701:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20285:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23317:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33937:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23141:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33143:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21706:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20932:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30700:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21122:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24077:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32891:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29913:105;;;;;;;;;;;;;:::i;:::-;;11510:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31056:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21148:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20892:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21180:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26369:663;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23593:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29608:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32441:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20169:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34103:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11610:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33479:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26136:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11935:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32678:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33297:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31828:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32307:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21091:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11822:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31496:175;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31565:1:::1;31551:10;;:15;31543:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;31603:12;31590:10;:25;;;;31648:15;31626:19;:37;;;;31496:175::o:0;21821:50::-;;;;:::o;23231:80::-;23279:13;23303:5;;;;;;;;;;;;;;;;;23296:12;;23231:80;:::o;23732:216::-;23807:4;23859:6;23824:11;:23;23836:10;23824:23;;;;;;;;;;;;;;;:32;23848:7;23824:32;;;;;;;;;;;;;;;:41;;;;23902:7;23881:37;;23890:10;23881:37;;;23911:6;23881:37;;;;;;:::i;:::-;;;;;;;;23936:4;23929:11;;23732:216;;;;:::o;22961:88::-;23016:7;23034:12;;23027:19;;22961:88;:::o;24239:363::-;24339:4;24394:12;;24359:11;:19;24371:6;24359:19;;;;;;;;;;;;;;;:31;24379:10;24359:31;;;;;;;;;;;;;;;;:47;24356:181;;24456:69;24492:6;24456:69;;;;;;;;;;;;;;;;;:11;:19;24468:6;24456:19;;;;;;;;;;;;;;;:31;24476:10;24456:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;24422:11;:19;24434:6;24422:19;;;;;;;;;;;;;;;:31;24442:10;24422:31;;;;;;;;;;;;;;;:103;;;;24356:181;24554:40;24568:6;24576:9;24587:6;24554:13;:40::i;:::-;24547:47;;24239:363;;;;;:::o;33652:131::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;33737:6:::1;33731:3;:12;33723:21;;;::::0;::::1;;33772:3;33755:14;:20;;;;33652:131:::0;:::o;33789:142::-;33842:7;33869:54;33907:15;33917:4;;;;;;;;;;;33907:9;:15::i;:::-;33869:33;33886:15;33896:4;;;;;;;;;;;33886:9;:15::i;:::-;33869:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;33862:61;;33789:142;:::o;11713:103::-;11768:4;11803:5;;;;;;;;;;;11792:16;;:7;:16;;;11785:23;;11713:103;;;:::o;23055:80::-;23107:5;20161:1;23116:16;;23055:80;:::o;21411:38::-;;;;;;;;;;;;;:::o;19773:66::-;;;;;;;;;;;;;:::o;23954:117::-;24009:4;24033:30;24041:7;24050:12;;24033:7;:30::i;:::-;24026:37;;23954:117;;;:::o;31677:145::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31777:4:::1;31762:12;;:19;;;;:::i;:::-;31752:6;:29;;31744:38;;;::::0;::::1;;31808:6;31793:12;:21;;;;31677:145:::0;:::o;32181:120::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;32287:6:::1;32265:11;:19;32277:6;32265:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;32181:120:::0;;:::o;21784:30::-;;;;;;;;;;;;;:::o;23482:105::-;23548:7;23566:9;:18;23576:7;23566:18;;;;;;;;;;;;;;;;23559:25;;23482:105;;;:::o;19701:65::-;;;;;;;;;;;;;:::o;20285:51::-;;;;:::o;23317:78::-;23369:7;23387:5;;;;;;;;;;;23380:12;;23317:78;:::o;33937:160::-;33998:7;34025:64;34066:22;:20;:22::i;:::-;34025:36;34038:22;34058:1;34038:15;34048:4;;;;;;;;;;;34038:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;34025:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;34018:71;;33937:160;;;:::o;23141:84::-;23191:13;23215:7;;;;;;;;;;;;;;;;;23208:14;;23141:84;:::o;33143:148::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;33241:8:::1;33227:11;;:22;;;;;;;;;;;;;;;;;;33276:7;33260:13;:23;;;;33143:148:::0;;:::o;21706:33::-;;;;;;;;;;;;;:::o;20932:39::-;;;;;;;;;;;;;:::o;30700:350::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30838:8:::1;30817:18;;:29;;;;;;;;;;;;;;;;;;30874:4;30857:14;:21;;;;30914:1;30889:22;:26;;;;30946:7;30926:17;:27;;;;30989:7;30964:22;:32;;;;31030:12;31007:20;:35;;;;30700:350:::0;;;;:::o;21122:19::-;;;;;;;;;;;;;:::o;24077:156::-;24157:4;24181:44;24195:10;24207:9;24218:6;24181:13;:44::i;:::-;24174:51;;24077:156;;;;:::o;32891:246::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;33043:23:::1;33018:22;;:48;;;;;;;;;;;;;;;;;;33104:25;33077:24;;:52;;;;;;;;;;;;;;;;;;32891:246:::0;;:::o;29913:105::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30009:1:::1;29978:28;:32;;;;29913:105::o:0;11510:94::-;11365:19;11373:10;11365:7;:19::i;:::-;11357:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11592:4:::1;11570:14:::0;:19:::1;11585:3;11570:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11510:94:::0;:::o;31056:338::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31212:1:::1;31197:11;31185:9;:23;;;;:::i;:::-;:28;;:55;;;;;31229:11;31217:9;:23;31185:55;31177:64;;;::::0;::::1;;31281:9;31252:26;:38;;;;31332:11;31301:28;:42;;;;31380:6;31354:23;:32;;;;31056:338:::0;;;:::o;21148:25::-;;;;:::o;20892:37::-;;;;;;;;;;;;;:::o;21180:34::-;;;;:::o;26369:663::-;26418:7;26473:15;26464:6;26442:19;;:28;;;;:::i;:::-;:46;26438:561;;;26512:39;26536:14;;26512:19;26525:5;26512:8;;:12;;:19;;;;:::i;:::-;:23;;:39;;;;:::i;:::-;26505:46;;;;26438:561;26633:15;26573:57;26606:23;;26573:28;;:32;;:57;;;;:::i;:::-;:75;26569:430;;;26665:21;26689:78;26751:15;26689:57;26722:23;;26689:28;;:32;;:57;;;;:::i;:::-;:61;;:78;;;;:::i;:::-;26665:102;;26782:19;26804:88;26883:8;;26804:74;26849:28;;26804:40;26817:26;;26804:8;;:12;;:40;;;;:::i;:::-;:44;;:74;;;;:::i;:::-;:78;;:88;;;;:::i;:::-;26782:110;;26914:73;26927:59;26962:23;;26927:30;26943:13;26927:11;:15;;:30;;;;:::i;:::-;:34;;:59;;;;:::i;:::-;26914:8;;:12;;:73;;;;:::i;:::-;26907:80;;;;;;26569:430;27016:8;;27009:15;;26369:663;;:::o;23593:133::-;23677:7;23695:11;:19;23707:6;23695:19;;;;;;;;;;;;;;;:28;23715:7;23695:28;;;;;;;;;;;;;;;;23688:35;;23593:133;;;;:::o;29608:299::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;29711:23:::1;29721:6;29729:4;;;;;;;;;;;29711:9;:23::i;:::-;29748:24;29745:155;;;29819:15;29788:28;:46;;;;29854:34;29864:23;;29854:34;;;;;;:::i;:::-;;;;;;;;29745:155;29608:299:::0;;:::o;32441:227::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;32526:1:::1;32516:6;:11:::0;32513:147:::1;;32537:24;;;;;;;;;;;32529:42;;:65;32572:21;32529:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;32513:147;;;32618:24;;;;;;;;;;;32610:42;;:50;32653:6;32610:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;32513:147;32441:227:::0;:::o;20169:48::-;20200:17;20169:48;;;:::o;34103:136::-;34176:4;34225:6;34200:22;34213:8;34200:12;:22::i;:::-;:31;34193:38;;34103:136;;;;:::o;11610:97::-;11365:19;11373:10;11365:7;:19::i;:::-;11357:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11694:5:::1;11672:14;:19;11687:3;11672:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11610:97:::0;:::o;33479:167::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;33581:11:::1;;;;;;;;;;;:27;;;33609:10;33621:16;33581:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33479:167:::0;;:::o;26136:227::-;26192:7;26233:12;26228:1;26215:10;;:14;;;;:::i;:::-;:30;26212:67;;26255:21;26274:1;26255:14;;:18;;:21;;;;:::i;:::-;26248:28;;;;26212:67;26292:7;26289:41;;;26309:18;:16;:18::i;:::-;26302:25;;;;26289:41;26347:8;;26340:15;;26136:227;;;;:::o;11935:173::-;11365:19;11373:10;11365:7;:19::i;:::-;11357:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12019:3:::1;12011:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;12055:4;12033:14:::0;:19:::1;12048:3;12033:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;12075:25;12096:3;12075:25;;;;;;:::i;:::-;;;;;;;;11935:173:::0;:::o;32678:207::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;32750:11:::1;32771:6;32764:24;;;32797:4;32764:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32750:53;;32816:61;32844:24;;;;;;;;;;;32870:6;32823;32816:27;;;;:61;;;;;:::i;:::-;32739:146;32678:207:::0;:::o;33297:176::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;33406:7:::1;33388:15;:25;;;;33453:12;33424:26;:41;;;;33297:176:::0;;:::o;31828:347::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31943:4:::1;31925:23;;:6;:23;;;;:41;;;;;31962:4;;;;;;;;;;;31952:14;;:6;:14;;;;31925:41;31917:50;;;::::0;::::1;;32005:6;31978:16;:24;31995:6;31978:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;32025:6;32022:146;;;32047:11;;;;;;;;;;;:20;;;32068:6;32076:1;32047:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32022:146;;;32109:11;;;;;;;;;;;:20;;;32130:6;32138:9;:17;32148:6;32138:17;;;;;;;;;;;;;;;;32109:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32022:146;31828:347:::0;;:::o;32307:128::-;11453:24;11466:10;11453:12;:24::i;:::-;11445:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;32421:6:::1;32395:15;:23;32411:6;32395:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;32307:128:::0;;:::o;21091:24::-;;;;;;;;;;;;;:::o;11822:107::-;11878:4;11902:14;:19;11917:3;11902:19;;;;;;;;;;;;;;;;;;;;;;;;;11895:26;;11822:107;;;:::o;9351:98::-;9409:7;9440:1;9436;:5;;;;:::i;:::-;9429:12;;9351:98;;;;:::o;9559:206::-;9645:7;9703:1;9698;:6;;9706:12;9690:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9745:1;9741;:5;9734:12;;9559:206;;;;;:::o;24608:945::-;24700:4;24720:6;;;;;;;;;;;24717:63;;;24736:41;24751:6;24759:9;24770:6;24736:14;:41::i;:::-;24729:48;;;;24717:63;24790:28;24803:6;24811;24790:12;:28::i;:::-;24832:16;:14;:16::i;:::-;24829:35;;;24851:10;:8;:10::i;:::-;24829:35;24877:19;:17;:19::i;:::-;24874:48;;;24899:20;:18;:20::i;:::-;24874:48;24952:53;24974:6;24952:53;;;;;;;;;;;;;;;;;:9;:17;24962:6;24952:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24932:9;:17;24942:6;24932:17;;;;;;;;;;;;;;;:73;;;;25016:22;25041:21;25055:6;25041:13;:21::i;:::-;:67;;25102:6;25041:67;;;25065:34;25073:6;25081:9;25092:6;25065:7;:34::i;:::-;25041:67;25016:92;;25142:40;25167:14;25142:9;:20;25152:9;25142:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;25119:9;:20;25129:9;25119:20;;;;;;;;;;;;;;;:63;;;;25197:16;:24;25214:6;25197:24;;;;;;;;;;;;;;;;;;;;;;;;;25193:96;;25228:11;;;;;;;;;;;:20;;;25249:6;25257:9;:17;25267:6;25257:17;;;;;;;;;;;;;;;;25228:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25224:63;25193:96;25303:16;:27;25320:9;25303:27;;;;;;;;;;;;;;;;;;;;;;;;;25299:105;;25337:11;;;;;;;;;;;:20;;;25358:9;25369;:20;25379:9;25369:20;;;;;;;;;;;;;;;;25337:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25333:69;25299:105;25418:11;;;;;;;;;;;:19;;;25438:14;;25418:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25414:51;25497:9;25480:43;;25489:6;25480:43;;;25508:14;25480:43;;;;;;:::i;:::-;;;;;;;;25541:4;25534:11;;;24608:945;;;;;;:::o;9143:98::-;9201:7;9232:1;9228;:5;;;;:::i;:::-;9221:12;;9143:98;;;;:::o;9247:::-;9305:7;9336:1;9332;:5;;;;:::i;:::-;9325:12;;9247:98;;;;:::o;9039:::-;9097:7;9128:1;9124;:5;;;;:::i;:::-;9117:12;;9039:98;;;;:::o;30333:361::-;21928:4;21919:6;;:13;;;;;;;;;;;;;;;;;;30409:21:::1;30447:1;30433:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30409:40;;30470:6;;;;;;;;;;;30460:4;30465:1;30460:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;::::0;::::1;30505:4;30487;30492:1;30487:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;30521:6;;;;;;;;;;;:57;;;30586:6;30608:1;30624:4;30643:2;30660:15;30521:165;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;30398:296;21946:5:::0;21937:6;;:14;;;;;;;;;;;;;;;;;;30333:361;;:::o;5339:211::-;5456:86;5476:5;5506:23;;;5531:2;5535:5;5483:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5456:19;:86::i;:::-;5339:211;;;:::o;25559:279::-;25652:4;25689:53;25711:6;25689:53;;;;;;;;;;;;;;;;;:9;:17;25699:6;25689:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25669:9;:17;25679:6;25669:17;;;;;;;;;;;;;;;:73;;;;25776:32;25801:6;25776:9;:20;25786:9;25776:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25753:9;:20;25763:9;25753:20;;;;;;;;;;;;;;;:55;;;;25826:4;25819:11;;25559:279;;;;;:::o;25844:166::-;25941:12;;25931:6;:22;;:49;;;;25957:15;:23;25973:6;25957:23;;;;;;;;;;;;;;;;;;;;;;;;;25931:49;25923:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;25844:166;;:::o;27412:197::-;27461:4;27499;;;;;;;;;;;27485:18;;:10;:18;;;;:38;;;;;27517:6;;;;;;;;;;;27516:7;27485:38;:62;;;;;27536:11;;;;;;;;;;;27485:62;:116;;;;;27588:13;;27560:9;:24;27578:4;27560:24;;;;;;;;;;;;;;;;:41;;27485:116;27478:123;;27412:197;:::o;27615:1699::-;21928:4;21919:6;;:13;;;;;;;;;;;;;;;;;;27664:33:::1;27700:53;27709:15;;27726:26;;27700:8;:53::i;:::-;:72;;27760:12;;27700:72;;;27756:1;27700:72;27664:108;;27783:23;27809:65;27872:1;27809:58;27858:8;;27809:44;27827:25;27809:13;;:17;;:44;;;;:::i;:::-;:48;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;27783:91;;27885:20;27908:34;27926:15;27908:13;;:17;;:34;;;;:::i;:::-;27885:57;;27953:21;27991:1;27977:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27953:40;;28022:4;28004;28009:1;28004:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;28048:6;;;;;;;;;;;28038:4;28043:1;28038:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;::::0;::::1;28065:21;28089;28065:45;;28121:6;;;;;;;;;;;:57;;;28193:12;28220:1;28236:4;28263;28283:15;28121:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28320:20;28343:40;28369:13;28343:21;:25;;:40;;;;:::i;:::-;28320:63;;28394:22;28419:46;28432:32;28462:1;28432:25;:29;;:32;;;;:::i;:::-;28419:8;;:12;;:46;;;;:::i;:::-;28394:71;;28476:29;28508:70;28576:1;28508:63;28556:14;28508:43;28525:25;28508:12;:16;;:43;;;;:::i;:::-;:47;;:63;;;;:::i;:::-;:67;;:70;;;;:::i;:::-;28476:102;;28589:30;28622:51;28658:14;28622:31;28639:13;;28622:12;:16;;:31;;;;:::i;:::-;:35;;:51;;;;:::i;:::-;28589:84;;28684:29;28716:50;28751:14;28716:30;28733:12;;28716;:16;;:30;;;;:::i;:::-;:34;;:50;;;;:::i;:::-;28684:82;;28781:11;;;;;;;;;;;:19;;;28808:22;28781:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;28777:68:::0;28863:24:::1;;;;;;;;;;;28855:42;;:65;28898:21;28855:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28959:1;28941:15;:19;28938:369;;;28976:6;;;;;;;;;;;:22;;;29006:21;29055:4;29079:15;29113:1;29133::::0;29153:22:::1;;;;;;;;;;;29194:15;28976:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29244:51;29256:21;29279:15;29244:51;;;;;;;:::i;:::-;;;;;;;;28938:369;27653:1661;;;;;;;;;;21946:5:::0;21937:6;;:14;;;;;;;;;;;;;;;;;;27615:1699::o;29320:282::-;29372:4;29410;;;;;;;;;;;29396:18;;:10;:18;;;;:38;;;;;29428:6;;;;;;;;;;;29427:7;29396:38;:69;;;;;29447:18;;;;;;;;;;;29396:69;:143;;;;;29527:12;29501:22;;29478:20;;:45;;;;:::i;:::-;:61;;29396:143;:198;;;;;29577:17;;29552:21;:42;;29396:198;29389:205;;29320:282;:::o;30024:303::-;30074:34;30084:17;;30103:4;;;;;;;;;;;30074:9;:34::i;:::-;30142:12;30119:20;:35;;;;30190:45;30217:17;;30190:22;;:26;;:45;;;;:::i;:::-;30165:22;:70;;;;30274:14;;30249:22;;:39;30246:74;;;30312:5;30291:18;;:26;;;;;;;;;;;;;;;;;;30246:74;30024:303::o;26016:114::-;26078:4;26103:11;:19;26115:6;26103:19;;;;;;;;;;;;;;;;;;;;;;;;;26102:20;26095:27;;26016:114;;;:::o;27038:368::-;27123:7;27143:17;27163:61;27209:14;;27163:41;27174:29;27198:4;;;;;;;;;;;27186:16;;:8;:16;;;27174:11;:29::i;:::-;27163:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;27143:81;;27262:39;27291:9;27262;:24;27280:4;27262:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27235:9;:24;27253:4;27235:24;;;;;;;;;;;;;;;:66;;;;27342:4;27317:42;;27326:6;27317:42;;;27349:9;27317:42;;;;;;:::i;:::-;;;;;;;;27377:21;27388:9;27377:6;:10;;:21;;;;:::i;:::-;27370:28;;;27038:368;;;;;:::o;7530:333::-;7611:23;7637:69;7665:4;7637:69;;;;;;;;;;;;;;;;;7645:5;7637:27;;;;:69;;;;;:::i;:::-;7611:95;;7741:1;7721:10;:17;:21;7717:139;;;7778:10;7767:30;;;;;;;;;;;;:::i;:::-;7759:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7717:139;7600:263;7530:333;;:::o;952:229::-;1089:12;1121:52;1143:6;1151:4;1157:1;1160:12;1121:21;:52::i;:::-;1114:59;;952:229;;;;;:::o;1453:455::-;1623:12;1681:5;1656:21;:30;;1648:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;1741:12;1755:23;1782:6;:11;;1801:5;1808:4;1782:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1740:73;;;;1831:69;1858:6;1866:7;1875:10;1887:12;1831:26;:69::i;:::-;1824:76;;;;1453:455;;;;;;:::o;3002:477::-;3187:12;3216:7;3212:260;;;3265:1;3244:10;:17;:22;3240:123;;3295:18;3306:6;3295:10;:18::i;:::-;3287:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;3240:123;3384:10;3377:17;;;;3212:260;3427:33;3435:10;3447:12;3427:7;:33::i;:::-;3002:477;;;;;;;:::o;315:115::-;375:4;421:1;399:7;:19;;;:23;392:30;;315:115;;;:::o;3796:352::-;3914:1;3894:10;:17;:21;3890:251;;;3989:10;3983:17;4046:15;4033:10;4029:2;4025:19;4018:44;3890:251;4116:12;4109:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:77:1;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:::-;4817:6;4866:2;4854:9;4845:7;4841:23;4837:32;4834:119;;;4872:79;;:::i;:::-;4834:119;4992:1;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4963:117;4758:329;;;;:::o;5093:86::-;5128:7;5168:4;5161:5;5157:16;5146:27;;5093:86;;;:::o;5185:112::-;5268:22;5284:5;5268:22;:::i;:::-;5263:3;5256:35;5185:112;;:::o;5303:214::-;5392:4;5430:2;5419:9;5415:18;5407:26;;5443:67;5507:1;5496:9;5492:17;5483:6;5443:67;:::i;:::-;5303:214;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:468::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6482:115;6136:468;;;;;:::o;6610:::-;6675:6;6683;6732:2;6720:9;6711:7;6707:23;6703:32;6700:119;;;6738:79;;:::i;:::-;6700:119;6858:1;6883:50;6925:7;6916:6;6905:9;6901:22;6883:50;:::i;:::-;6873:60;;6829:114;6982:2;7008:53;7053:7;7044:6;7033:9;7029:22;7008:53;:::i;:::-;6998:63;;6953:118;6610:468;;;;;:::o;7084:759::-;7167:6;7175;7183;7191;7240:3;7228:9;7219:7;7215:23;7211:33;7208:120;;;7247:79;;:::i;:::-;7208:120;7367:1;7392:50;7434:7;7425:6;7414:9;7410:22;7392:50;:::i;:::-;7382:60;;7338:114;7491:2;7517:53;7562:7;7553:6;7542:9;7538:22;7517:53;:::i;:::-;7507:63;;7462:118;7619:2;7645:53;7690:7;7681:6;7670:9;7666:22;7645:53;:::i;:::-;7635:63;;7590:118;7747:2;7773:53;7818:7;7809:6;7798:9;7794:22;7773:53;:::i;:::-;7763:63;;7718:118;7084:759;;;;;;;:::o;7849:474::-;7917:6;7925;7974:2;7962:9;7953:7;7949:23;7945:32;7942:119;;;7980:79;;:::i;:::-;7942:119;8100:1;8125:53;8170:7;8161:6;8150:9;8146:22;8125:53;:::i;:::-;8115:63;;8071:117;8227:2;8253:53;8298:7;8289:6;8278:9;8274:22;8253:53;:::i;:::-;8243:63;;8198:118;7849:474;;;;;:::o;8329:619::-;8406:6;8414;8422;8471:2;8459:9;8450:7;8446:23;8442:32;8439:119;;;8477:79;;:::i;:::-;8439:119;8597:1;8622:53;8667:7;8658:6;8647:9;8643:22;8622:53;:::i;:::-;8612:63;;8568:117;8724:2;8750:53;8795:7;8786:6;8775:9;8771:22;8750:53;:::i;:::-;8740:63;;8695:118;8852:2;8878:53;8923:7;8914:6;8903:9;8899:22;8878:53;:::i;:::-;8868:63;;8823:118;8329:619;;;;;:::o;8954:468::-;9019:6;9027;9076:2;9064:9;9055:7;9051:23;9047:32;9044:119;;;9082:79;;:::i;:::-;9044:119;9202:1;9227:53;9272:7;9263:6;9252:9;9248:22;9227:53;:::i;:::-;9217:63;;9173:117;9329:2;9355:50;9397:7;9388:6;9377:9;9373:22;9355:50;:::i;:::-;9345:60;;9300:115;8954:468;;;;;:::o;9428:474::-;9496:6;9504;9553:2;9541:9;9532:7;9528:23;9524:32;9521:119;;;9559:79;;:::i;:::-;9521:119;9679:1;9704:53;9749:7;9740:6;9729:9;9725:22;9704:53;:::i;:::-;9694:63;;9650:117;9806:2;9832:53;9877:7;9868:6;9857:9;9853:22;9832:53;:::i;:::-;9822:63;;9777:118;9428:474;;;;;:::o;9908:323::-;9964:6;10013:2;10001:9;9992:7;9988:23;9984:32;9981:119;;;10019:79;;:::i;:::-;9981:119;10139:1;10164:50;10206:7;10197:6;10186:9;10182:22;10164:50;:::i;:::-;10154:60;;10110:114;9908:323;;;;:::o;10237:104::-;10282:7;10311:24;10329:5;10311:24;:::i;:::-;10300:35;;10237:104;;;:::o;10347:138::-;10428:32;10454:5;10428:32;:::i;:::-;10421:5;10418:43;10408:71;;10475:1;10472;10465:12;10408:71;10347:138;:::o;10491:155::-;10545:5;10583:6;10570:20;10561:29;;10599:41;10634:5;10599:41;:::i;:::-;10491:155;;;;:::o;10652:345::-;10719:6;10768:2;10756:9;10747:7;10743:23;10739:32;10736:119;;;10774:79;;:::i;:::-;10736:119;10894:1;10919:61;10972:7;10963:6;10952:9;10948:22;10919:61;:::i;:::-;10909:71;;10865:125;10652:345;;;;:::o;11003:60::-;11031:3;11052:5;11045:12;;11003:60;;;:::o;11069:142::-;11119:9;11152:53;11170:34;11179:24;11197:5;11179:24;:::i;:::-;11170:34;:::i;:::-;11152:53;:::i;:::-;11139:66;;11069:142;;;:::o;11217:126::-;11267:9;11300:37;11331:5;11300:37;:::i;:::-;11287:50;;11217:126;;;:::o;11349:145::-;11418:9;11451:37;11482:5;11451:37;:::i;:::-;11438:50;;11349:145;;;:::o;11500:169::-;11606:56;11656:5;11606:56;:::i;:::-;11601:3;11594:69;11500:169;;:::o;11675:260::-;11787:4;11825:2;11814:9;11810:18;11802:26;;11838:90;11925:1;11914:9;11910:17;11901:6;11838:90;:::i;:::-;11675:260;;;;:::o;11941:161::-;12081:13;12077:1;12069:6;12065:14;12058:37;11941:161;:::o;12108:366::-;12250:3;12271:67;12335:2;12330:3;12271:67;:::i;:::-;12264:74;;12347:93;12436:3;12347:93;:::i;:::-;12465:2;12460:3;12456:12;12449:19;;12108:366;;;:::o;12480:419::-;12646:4;12684:2;12673:9;12669:18;12661:26;;12733:9;12727:4;12723:20;12719:1;12708:9;12704:17;12697:47;12761:131;12887:4;12761:131;:::i;:::-;12753:139;;12480:419;;;:::o;12905:158::-;13045:10;13041:1;13033:6;13029:14;13022:34;12905:158;:::o;13069:365::-;13211:3;13232:66;13296:1;13291:3;13232:66;:::i;:::-;13225:73;;13307:93;13396:3;13307:93;:::i;:::-;13425:2;13420:3;13416:12;13409:19;;13069:365;;;:::o;13440:419::-;13606:4;13644:2;13633:9;13629:18;13621:26;;13693:9;13687:4;13683:20;13679:1;13668:9;13664:17;13657:47;13721:131;13847:4;13721:131;:::i;:::-;13713:139;;13440:419;;;:::o;13865:180::-;13913:77;13910:1;13903:88;14010:4;14007:1;14000:15;14034:4;14031:1;14024:15;14051:180;14099:77;14096:1;14089:88;14196:4;14193:1;14186:15;14220:4;14217:1;14210:15;14237:185;14277:1;14294:20;14312:1;14294:20;:::i;:::-;14289:25;;14328:20;14346:1;14328:20;:::i;:::-;14323:25;;14367:1;14357:35;;14372:18;;:::i;:::-;14357:35;14414:1;14411;14407:9;14402:14;;14237:185;;;;:::o;14428:156::-;14568:8;14564:1;14556:6;14552:14;14545:32;14428:156;:::o;14590:365::-;14732:3;14753:66;14817:1;14812:3;14753:66;:::i;:::-;14746:73;;14828:93;14917:3;14828:93;:::i;:::-;14946:2;14941:3;14937:12;14930:19;;14590:365;;;:::o;14961:419::-;15127:4;15165:2;15154:9;15150:18;15142:26;;15214:9;15208:4;15204:20;15200:1;15189:9;15185:17;15178:47;15242:131;15368:4;15242:131;:::i;:::-;15234:139;;14961:419;;;:::o;15386:191::-;15426:3;15445:20;15463:1;15445:20;:::i;:::-;15440:25;;15479:20;15497:1;15479:20;:::i;:::-;15474:25;;15522:1;15519;15515:9;15508:16;;15543:3;15540:1;15537:10;15534:36;;;15550:18;;:::i;:::-;15534:36;15386:191;;;;:::o;15583:332::-;15704:4;15742:2;15731:9;15727:18;15719:26;;15755:71;15823:1;15812:9;15808:17;15799:6;15755:71;:::i;:::-;15836:72;15904:2;15893:9;15889:18;15880:6;15836:72;:::i;:::-;15583:332;;;;;:::o;15921:134::-;15979:9;16012:37;16043:5;16012:37;:::i;:::-;15999:50;;15921:134;;;:::o;16061:147::-;16156:45;16195:5;16156:45;:::i;:::-;16151:3;16144:58;16061:147;;:::o;16214:238::-;16315:4;16353:2;16342:9;16338:18;16330:26;;16366:79;16442:1;16431:9;16427:17;16418:6;16366:79;:::i;:::-;16214:238;;;;:::o;16458:143::-;16515:5;16546:6;16540:13;16531:22;;16562:33;16589:5;16562:33;:::i;:::-;16458:143;;;;:::o;16607:351::-;16677:6;16726:2;16714:9;16705:7;16701:23;16697:32;16694:119;;;16732:79;;:::i;:::-;16694:119;16852:1;16877:64;16933:7;16924:6;16913:9;16909:22;16877:64;:::i;:::-;16867:74;;16823:128;16607:351;;;;:::o;16964:85::-;17009:7;17038:5;17027:16;;16964:85;;;:::o;17055:158::-;17113:9;17146:61;17164:42;17173:32;17199:5;17173:32;:::i;:::-;17164:42;:::i;:::-;17146:61;:::i;:::-;17133:74;;17055:158;;;:::o;17219:147::-;17314:45;17353:5;17314:45;:::i;:::-;17309:3;17302:58;17219:147;;:::o;17372:348::-;17501:4;17539:2;17528:9;17524:18;17516:26;;17552:71;17620:1;17609:9;17605:17;17596:6;17552:71;:::i;:::-;17633:80;17709:2;17698:9;17694:18;17685:6;17633:80;:::i;:::-;17372:348;;;;;:::o;17726:332::-;17847:4;17885:2;17874:9;17870:18;17862:26;;17898:71;17966:1;17955:9;17951:17;17942:6;17898:71;:::i;:::-;17979:72;18047:2;18036:9;18032:18;18023:6;17979:72;:::i;:::-;17726:332;;;;;:::o;18064:194::-;18104:4;18124:20;18142:1;18124:20;:::i;:::-;18119:25;;18158:20;18176:1;18158:20;:::i;:::-;18153:25;;18202:1;18199;18195:9;18187:17;;18226:1;18220:4;18217:11;18214:37;;;18231:18;;:::i;:::-;18214:37;18064:194;;;;:::o;18264:410::-;18304:7;18327:20;18345:1;18327:20;:::i;:::-;18322:25;;18361:20;18379:1;18361:20;:::i;:::-;18356:25;;18416:1;18413;18409:9;18438:30;18456:11;18438:30;:::i;:::-;18427:41;;18617:1;18608:7;18604:15;18601:1;18598:22;18578:1;18571:9;18551:83;18528:139;;18647:18;;:::i;:::-;18528:139;18312:362;18264:410;;;;:::o;18680:180::-;18728:77;18725:1;18718:88;18825:4;18822:1;18815:15;18849:4;18846:1;18839:15;18866:180;18914:77;18911:1;18904:88;19011:4;19008:1;19001:15;19035:4;19032:1;19025:15;19052:114;19119:6;19153:5;19147:12;19137:22;;19052:114;;;:::o;19172:184::-;19271:11;19305:6;19300:3;19293:19;19345:4;19340:3;19336:14;19321:29;;19172:184;;;;:::o;19362:132::-;19429:4;19452:3;19444:11;;19482:4;19477:3;19473:14;19465:22;;19362:132;;;:::o;19500:108::-;19577:24;19595:5;19577:24;:::i;:::-;19572:3;19565:37;19500:108;;:::o;19614:179::-;19683:10;19704:46;19746:3;19738:6;19704:46;:::i;:::-;19782:4;19777:3;19773:14;19759:28;;19614:179;;;;:::o;19799:113::-;19869:4;19901;19896:3;19892:14;19884:22;;19799:113;;;:::o;19948:732::-;20067:3;20096:54;20144:5;20096:54;:::i;:::-;20166:86;20245:6;20240:3;20166:86;:::i;:::-;20159:93;;20276:56;20326:5;20276:56;:::i;:::-;20355:7;20386:1;20371:284;20396:6;20393:1;20390:13;20371:284;;;20472:6;20466:13;20499:63;20558:3;20543:13;20499:63;:::i;:::-;20492:70;;20585:60;20638:6;20585:60;:::i;:::-;20575:70;;20431:224;20418:1;20415;20411:9;20406:14;;20371:284;;;20375:14;20671:3;20664:10;;20072:608;;;19948:732;;;;:::o;20686:720::-;20921:4;20959:3;20948:9;20944:19;20936:27;;20973:79;21049:1;21038:9;21034:17;21025:6;20973:79;:::i;:::-;21099:9;21093:4;21089:20;21084:2;21073:9;21069:18;21062:48;21127:108;21230:4;21221:6;21127:108;:::i;:::-;21119:116;;21245:72;21313:2;21302:9;21298:18;21289:6;21245:72;:::i;:::-;21327;21395:2;21384:9;21380:18;21371:6;21327:72;:::i;:::-;20686:720;;;;;;;:::o;21412:167::-;21552:19;21548:1;21540:6;21536:14;21529:43;21412:167;:::o;21585:366::-;21727:3;21748:67;21812:2;21807:3;21748:67;:::i;:::-;21741:74;;21824:93;21913:3;21824:93;:::i;:::-;21942:2;21937:3;21933:12;21926:19;;21585:366;;;:::o;21957:419::-;22123:4;22161:2;22150:9;22146:18;22138:26;;22210:9;22204:4;22200:20;22196:1;22185:9;22181:17;22174:47;22238:131;22364:4;22238:131;:::i;:::-;22230:139;;21957:419;;;:::o;22382:831::-;22645:4;22683:3;22672:9;22668:19;22660:27;;22697:71;22765:1;22754:9;22750:17;22741:6;22697:71;:::i;:::-;22778:80;22854:2;22843:9;22839:18;22830:6;22778:80;:::i;:::-;22905:9;22899:4;22895:20;22890:2;22879:9;22875:18;22868:48;22933:108;23036:4;23027:6;22933:108;:::i;:::-;22925:116;;23051:72;23119:2;23108:9;23104:18;23095:6;23051:72;:::i;:::-;23133:73;23201:3;23190:9;23186:19;23177:6;23133:73;:::i;:::-;22382:831;;;;;;;;:::o;23219:807::-;23468:4;23506:3;23495:9;23491:19;23483:27;;23520:71;23588:1;23577:9;23573:17;23564:6;23520:71;:::i;:::-;23601:72;23669:2;23658:9;23654:18;23645:6;23601:72;:::i;:::-;23683:80;23759:2;23748:9;23744:18;23735:6;23683:80;:::i;:::-;23773;23849:2;23838:9;23834:18;23825:6;23773:80;:::i;:::-;23863:73;23931:3;23920:9;23916:19;23907:6;23863:73;:::i;:::-;23946;24014:3;24003:9;23999:19;23990:6;23946:73;:::i;:::-;23219:807;;;;;;;;;:::o;24032:663::-;24120:6;24128;24136;24185:2;24173:9;24164:7;24160:23;24156:32;24153:119;;;24191:79;;:::i;:::-;24153:119;24311:1;24336:64;24392:7;24383:6;24372:9;24368:22;24336:64;:::i;:::-;24326:74;;24282:128;24449:2;24475:64;24531:7;24522:6;24511:9;24507:22;24475:64;:::i;:::-;24465:74;;24420:129;24588:2;24614:64;24670:7;24661:6;24650:9;24646:22;24614:64;:::i;:::-;24604:74;;24559:129;24032:663;;;;;:::o;24701:137::-;24755:5;24786:6;24780:13;24771:22;;24802:30;24826:5;24802:30;:::i;:::-;24701:137;;;;:::o;24844:345::-;24911:6;24960:2;24948:9;24939:7;24935:23;24931:32;24928:119;;;24966:79;;:::i;:::-;24928:119;25086:1;25111:61;25164:7;25155:6;25144:9;25140:22;25111:61;:::i;:::-;25101:71;;25057:125;24844:345;;;;:::o;25195:229::-;25335:34;25331:1;25323:6;25319:14;25312:58;25404:12;25399:2;25391:6;25387:15;25380:37;25195:229;:::o;25430:366::-;25572:3;25593:67;25657:2;25652:3;25593:67;:::i;:::-;25586:74;;25669:93;25758:3;25669:93;:::i;:::-;25787:2;25782:3;25778:12;25771:19;;25430:366;;;:::o;25802:419::-;25968:4;26006:2;25995:9;25991:18;25983:26;;26055:9;26049:4;26045:20;26041:1;26030:9;26026:17;26019:47;26083:131;26209:4;26083:131;:::i;:::-;26075:139;;25802:419;;;:::o;26227:225::-;26367:34;26363:1;26355:6;26351:14;26344:58;26436:8;26431:2;26423:6;26419:15;26412:33;26227:225;:::o;26458:366::-;26600:3;26621:67;26685:2;26680:3;26621:67;:::i;:::-;26614:74;;26697:93;26786:3;26697:93;:::i;:::-;26815:2;26810:3;26806:12;26799:19;;26458:366;;;:::o;26830:419::-;26996:4;27034:2;27023:9;27019:18;27011:26;;27083:9;27077:4;27073:20;27069:1;27058:9;27054:17;27047:47;27111:131;27237:4;27111:131;:::i;:::-;27103:139;;26830:419;;;:::o;27255:98::-;27306:6;27340:5;27334:12;27324:22;;27255:98;;;:::o;27359:147::-;27460:11;27497:3;27482:18;;27359:147;;;;:::o;27512:386::-;27616:3;27644:38;27676:5;27644:38;:::i;:::-;27698:88;27779:6;27774:3;27698:88;:::i;:::-;27691:95;;27795:65;27853:6;27848:3;27841:4;27834:5;27830:16;27795:65;:::i;:::-;27885:6;27880:3;27876:16;27869:23;;27620:278;27512:386;;;;:::o;27904:271::-;28034:3;28056:93;28145:3;28136:6;28056:93;:::i;:::-;28049:100;;28166:3;28159:10;;27904:271;;;;:::o;28181:179::-;28321:31;28317:1;28309:6;28305:14;28298:55;28181:179;:::o;28366:366::-;28508:3;28529:67;28593:2;28588:3;28529:67;:::i;:::-;28522:74;;28605:93;28694:3;28605:93;:::i;:::-;28723:2;28718:3;28714:12;28707:19;;28366:366;;;:::o;28738:419::-;28904:4;28942:2;28931:9;28927:18;28919:26;;28991:9;28985:4;28981:20;28977:1;28966:9;28962:17;28955:47;29019:131;29145:4;29019:131;:::i;:::-;29011:139;;28738:419;;;:::o
Swarm Source
ipfs://9b7adf23f73b1cc48bbe2dabe47e2d3b7feec6c450915c28f67fee9e2c5e124a
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.