Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Liquidity Pa... | 10423703 | 1723 days ago | IN | 0 ETH | 0.003463 | ||||
Set Liquidity Pa... | 10327947 | 1737 days ago | IN | 0 ETH | 0.00251464 | ||||
Set Liquidity Pa... | 10327933 | 1737 days ago | IN | 0 ETH | 0.00325384 | ||||
Set Liquidity Pa... | 9921189 | 1800 days ago | IN | 0 ETH | 0.00078151 | ||||
Set Liquidity Pa... | 8070236 | 2096 days ago | IN | 0 ETH | 0.00138898 | ||||
Set Liquidity Pa... | 7217793 | 2234 days ago | IN | 0 ETH | 0.00231977 | ||||
Set Liquidity Pa... | 7138186 | 2250 days ago | IN | 0 ETH | 0.00899999 | ||||
Transfer Admin Q... | 7138106 | 2250 days ago | IN | 0 ETH | 0.0003854 | ||||
Claim Admin | 7127839 | 2252 days ago | IN | 0 ETH | 0.00003958 | ||||
Transfer Admin | 7127767 | 2253 days ago | IN | 0 ETH | 0.00009131 | ||||
Set Reserve Addr... | 7127757 | 2253 days ago | IN | 0 ETH | 0.00022402 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LiquidityConversionRates
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-01-26 */ pragma solidity 0.4.18; // File: contracts/ERC20Interface.sol // https://github.com/ethereum/EIPs/issues/20 interface ERC20 { function totalSupply() public view returns (uint supply); function balanceOf(address _owner) public view returns (uint balance); function transfer(address _to, uint _value) public returns (bool success); function transferFrom(address _from, address _to, uint _value) public returns (bool success); function approve(address _spender, uint _value) public returns (bool success); function allowance(address _owner, address _spender) public view returns (uint remaining); function decimals() public view returns(uint digits); event Approval(address indexed _owner, address indexed _spender, uint _value); } // File: contracts/ConversionRatesInterface.sol interface ConversionRatesInterface { function recordImbalance( ERC20 token, int buyAmount, uint rateUpdateBlock, uint currentBlock ) public; function getRate(ERC20 token, uint currentBlockNumber, bool buy, uint qty) public view returns(uint); } // File: contracts/LiquidityFormula.sol contract UtilMath { uint public constant BIG_NUMBER = (uint(1)<<uint(200)); function checkMultOverflow(uint x, uint y) public pure returns(bool) { if (y == 0) return false; return (((x*y) / y) != x); } function compactFraction(uint p, uint q, uint precision) public pure returns (uint, uint) { if (q < precision * precision) return (p, q); return compactFraction(p/precision, q/precision, precision); } /* solhint-disable code-complexity */ function exp(uint p, uint q, uint precision) public pure returns (uint) { uint n = 0; uint nFact = 1; uint currentP = 1; uint currentQ = 1; uint sum = 0; uint prevSum = 0; while (true) { if (checkMultOverflow(currentP, precision)) return sum; if (checkMultOverflow(currentQ, nFact)) return sum; sum += (currentP * precision) / (currentQ * nFact); if (sum == prevSum) return sum; prevSum = sum; n++; if (checkMultOverflow(currentP, p)) return sum; if (checkMultOverflow(currentQ, q)) return sum; if (checkMultOverflow(nFact, n)) return sum; currentP *= p; currentQ *= q; nFact *= n; (currentP, currentQ) = compactFraction(currentP, currentQ, precision); } } /* solhint-enable code-complexity */ function countLeadingZeros(uint p, uint q) public pure returns (uint) { uint denomator = (uint(1)<<255); for (int i = 255; i >= 0; i--) { if ((q*denomator)/denomator != q) { // overflow denomator = denomator/2; continue; } if (p/(q*denomator) > 0) return uint(i); denomator = denomator/2; } return uint(-1); } // log2 for a number that it in [1,2) function log2ForSmallNumber(uint x, uint numPrecisionBits) public pure returns (uint) { uint res = 0; uint one = (uint(1)<<numPrecisionBits); uint two = 2 * one; uint addition = one; require((x >= one) && (x <= two)); require(numPrecisionBits < 125); for (uint i = numPrecisionBits; i > 0; i--) { x = (x*x) / one; addition = addition/2; if (x >= two) { x = x/2; res += addition; } } return res; } function logBase2 (uint p, uint q, uint numPrecisionBits) public pure returns (uint) { uint n = 0; uint precision = (uint(1)<<numPrecisionBits); if (p > q) { n = countLeadingZeros(p, q); } require(!checkMultOverflow(p, precision)); require(!checkMultOverflow(n, precision)); require(!checkMultOverflow(uint(1)<<n, q)); uint y = p * precision / (q * (uint(1)<<n)); uint log2Small = log2ForSmallNumber(y, numPrecisionBits); require(n*precision <= BIG_NUMBER); require(log2Small <= BIG_NUMBER); return n * precision + log2Small; } function ln(uint p, uint q, uint numPrecisionBits) public pure returns (uint) { uint ln2Numerator = 6931471805599453094172; uint ln2Denomerator = 10000000000000000000000; uint log2x = logBase2(p, q, numPrecisionBits); require(!checkMultOverflow(ln2Numerator, log2x)); return ln2Numerator * log2x / ln2Denomerator; } } contract LiquidityFormula is UtilMath { function pE(uint r, uint pMIn, uint e, uint precision) public pure returns (uint) { uint expRE = exp(r*e, precision*precision, precision); require(!checkMultOverflow(expRE, pMIn)); return pMIn*expRE / precision; } function deltaTFunc(uint r, uint pMIn, uint e, uint deltaE, uint precision) public pure returns (uint) { uint pe = pE(r, pMIn, e, precision); uint rpe = r * pe; uint erdeltaE = exp(r*deltaE, precision*precision, precision); require(erdeltaE >= precision); require(!checkMultOverflow(erdeltaE - precision, precision)); require(!checkMultOverflow((erdeltaE - precision)*precision, precision)); require(!checkMultOverflow((erdeltaE - precision)*precision*precision, precision)); require(!checkMultOverflow(rpe, erdeltaE)); require(!checkMultOverflow(r, pe)); return (erdeltaE - precision) * precision * precision * precision / (rpe*erdeltaE); } function deltaEFunc(uint r, uint pMIn, uint e, uint deltaT, uint precision, uint numPrecisionBits) public pure returns (uint) { uint pe = pE(r, pMIn, e, precision); uint rpe = r * pe; uint lnPart = ln(precision*precision + rpe*deltaT/precision, precision*precision, numPrecisionBits); require(!checkMultOverflow(r, pe)); require(!checkMultOverflow(precision, precision)); require(!checkMultOverflow(rpe, deltaT)); require(!checkMultOverflow(lnPart, precision)); return lnPart * precision / r; } } // File: contracts/PermissionGroups.sol contract PermissionGroups { address public admin; address public pendingAdmin; mapping(address=>bool) internal operators; mapping(address=>bool) internal alerters; address[] internal operatorsGroup; address[] internal alertersGroup; uint constant internal MAX_GROUP_SIZE = 50; function PermissionGroups() public { admin = msg.sender; } modifier onlyAdmin() { require(msg.sender == admin); _; } modifier onlyOperator() { require(operators[msg.sender]); _; } modifier onlyAlerter() { require(alerters[msg.sender]); _; } function getOperators () external view returns(address[]) { return operatorsGroup; } function getAlerters () external view returns(address[]) { return alertersGroup; } event TransferAdminPending(address pendingAdmin); /** * @dev Allows the current admin to set the pendingAdmin address. * @param newAdmin The address to transfer ownership to. */ function transferAdmin(address newAdmin) public onlyAdmin { require(newAdmin != address(0)); TransferAdminPending(pendingAdmin); pendingAdmin = newAdmin; } /** * @dev Allows the current admin to set the admin in one tx. Useful initial deployment. * @param newAdmin The address to transfer ownership to. */ function transferAdminQuickly(address newAdmin) public onlyAdmin { require(newAdmin != address(0)); TransferAdminPending(newAdmin); AdminClaimed(newAdmin, admin); admin = newAdmin; } event AdminClaimed( address newAdmin, address previousAdmin); /** * @dev Allows the pendingAdmin address to finalize the change admin process. */ function claimAdmin() public { require(pendingAdmin == msg.sender); AdminClaimed(pendingAdmin, admin); admin = pendingAdmin; pendingAdmin = address(0); } event AlerterAdded (address newAlerter, bool isAdd); function addAlerter(address newAlerter) public onlyAdmin { require(!alerters[newAlerter]); // prevent duplicates. require(alertersGroup.length < MAX_GROUP_SIZE); AlerterAdded(newAlerter, true); alerters[newAlerter] = true; alertersGroup.push(newAlerter); } function removeAlerter (address alerter) public onlyAdmin { require(alerters[alerter]); alerters[alerter] = false; for (uint i = 0; i < alertersGroup.length; ++i) { if (alertersGroup[i] == alerter) { alertersGroup[i] = alertersGroup[alertersGroup.length - 1]; alertersGroup.length--; AlerterAdded(alerter, false); break; } } } event OperatorAdded(address newOperator, bool isAdd); function addOperator(address newOperator) public onlyAdmin { require(!operators[newOperator]); // prevent duplicates. require(operatorsGroup.length < MAX_GROUP_SIZE); OperatorAdded(newOperator, true); operators[newOperator] = true; operatorsGroup.push(newOperator); } function removeOperator (address operator) public onlyAdmin { require(operators[operator]); operators[operator] = false; for (uint i = 0; i < operatorsGroup.length; ++i) { if (operatorsGroup[i] == operator) { operatorsGroup[i] = operatorsGroup[operatorsGroup.length - 1]; operatorsGroup.length -= 1; OperatorAdded(operator, false); break; } } } } // File: contracts/Withdrawable.sol /** * @title Contracts that should be able to recover tokens or ethers * @author Ilan Doron * @dev This allows to recover any tokens or Ethers received in a contract. * This will prevent any accidental loss of tokens. */ contract Withdrawable is PermissionGroups { event TokenWithdraw(ERC20 token, uint amount, address sendTo); /** * @dev Withdraw all ERC20 compatible tokens * @param token ERC20 The address of the token contract */ function withdrawToken(ERC20 token, uint amount, address sendTo) external onlyAdmin { require(token.transfer(sendTo, amount)); TokenWithdraw(token, amount, sendTo); } event EtherWithdraw(uint amount, address sendTo); /** * @dev Withdraw Ethers */ function withdrawEther(uint amount, address sendTo) external onlyAdmin { sendTo.transfer(amount); EtherWithdraw(amount, sendTo); } } // File: contracts/Utils.sol /// @title Kyber constants contract contract Utils { ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee); uint constant internal PRECISION = (10**18); uint constant internal MAX_QTY = (10**28); // 10B tokens uint constant internal MAX_RATE = (PRECISION * 10**6); // up to 1M tokens per ETH uint constant internal MAX_DECIMALS = 18; uint constant internal ETH_DECIMALS = 18; mapping(address=>uint) internal decimals; function setDecimals(ERC20 token) internal { if (token == ETH_TOKEN_ADDRESS) decimals[token] = ETH_DECIMALS; else decimals[token] = token.decimals(); } function getDecimals(ERC20 token) internal view returns(uint) { if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access uint tokenDecimals = decimals[token]; // technically, there might be token with decimals 0 // moreover, very possible that old tokens have decimals 0 // these tokens will just have higher gas fees. if(tokenDecimals == 0) return token.decimals(); return tokenDecimals; } function calcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) { require(srcQty <= MAX_QTY); require(rate <= MAX_RATE); if (dstDecimals >= srcDecimals) { require((dstDecimals - srcDecimals) <= MAX_DECIMALS); return (srcQty * rate * (10**(dstDecimals - srcDecimals))) / PRECISION; } else { require((srcDecimals - dstDecimals) <= MAX_DECIMALS); return (srcQty * rate) / (PRECISION * (10**(srcDecimals - dstDecimals))); } } function calcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) { require(dstQty <= MAX_QTY); require(rate <= MAX_RATE); //source quantity is rounded up. to avoid dest quantity being too low. uint numerator; uint denominator; if (srcDecimals >= dstDecimals) { require((srcDecimals - dstDecimals) <= MAX_DECIMALS); numerator = (PRECISION * dstQty * (10**(srcDecimals - dstDecimals))); denominator = rate; } else { require((dstDecimals - srcDecimals) <= MAX_DECIMALS); numerator = (PRECISION * dstQty); denominator = (rate * (10**(dstDecimals - srcDecimals))); } return (numerator + denominator - 1) / denominator; //avoid rounding down errors } } // File: contracts/LiquidityConversionRates.sol contract LiquidityConversionRates is ConversionRatesInterface, LiquidityFormula, Withdrawable, Utils { ERC20 public token; address public reserveContract; uint public numFpBits; uint public formulaPrecision; uint public rInFp; uint public pMinInFp; uint public maxEthCapBuyInFp; uint public maxEthCapSellInFp; uint public maxQtyInFp; uint public feeInBps; uint public collectedFeesInTwei = 0; uint public maxBuyRateInPrecision; uint public minBuyRateInPrecision; uint public maxSellRateInPrecision; uint public minSellRateInPrecision; function LiquidityConversionRates(address _admin, ERC20 _token) public { transferAdminQuickly(_admin); token = _token; setDecimals(token); require(getDecimals(token) <= MAX_DECIMALS); } event ReserveAddressSet(address reserve); function setReserveAddress(address reserve) public onlyAdmin { reserveContract = reserve; ReserveAddressSet(reserve); } event LiquidityParamsSet( uint rInFp, uint pMinInFp, uint numFpBits, uint maxCapBuyInFp, uint maxEthCapSellInFp, uint feeInBps, uint formulaPrecision, uint maxQtyInFp, uint maxBuyRateInPrecision, uint minBuyRateInPrecision, uint maxSellRateInPrecision, uint minSellRateInPrecision ); function setLiquidityParams( uint _rInFp, uint _pMinInFp, uint _numFpBits, uint _maxCapBuyInWei, uint _maxCapSellInWei, uint _feeInBps, uint _maxTokenToEthRateInPrecision, uint _minTokenToEthRateInPrecision ) public onlyAdmin { require(_numFpBits < 256); require(formulaPrecision <= MAX_QTY); require(_feeInBps < 10000); require(_minTokenToEthRateInPrecision < _maxTokenToEthRateInPrecision); rInFp = _rInFp; pMinInFp = _pMinInFp; formulaPrecision = uint(1)<<_numFpBits; maxQtyInFp = fromWeiToFp(MAX_QTY); numFpBits = _numFpBits; maxEthCapBuyInFp = fromWeiToFp(_maxCapBuyInWei); maxEthCapSellInFp = fromWeiToFp(_maxCapSellInWei); feeInBps = _feeInBps; maxBuyRateInPrecision = PRECISION * PRECISION / _minTokenToEthRateInPrecision; minBuyRateInPrecision = PRECISION * PRECISION / _maxTokenToEthRateInPrecision; maxSellRateInPrecision = _maxTokenToEthRateInPrecision; minSellRateInPrecision = _minTokenToEthRateInPrecision; LiquidityParamsSet( rInFp, pMinInFp, numFpBits, maxEthCapBuyInFp, maxEthCapSellInFp, feeInBps, formulaPrecision, maxQtyInFp, maxBuyRateInPrecision, minBuyRateInPrecision, maxSellRateInPrecision, minSellRateInPrecision ); } function recordImbalance( ERC20 conversionToken, int buyAmountInTwei, uint rateUpdateBlock, uint currentBlock ) public { conversionToken; rateUpdateBlock; currentBlock; require(msg.sender == reserveContract); if (buyAmountInTwei > 0) { // Buy case collectedFeesInTwei += calcCollectedFee(abs(buyAmountInTwei)); } else { // Sell case collectedFeesInTwei += abs(buyAmountInTwei) * feeInBps / 10000; } } event CollectedFeesReset(uint resetFeesInTwei); function resetCollectedFees() public onlyAdmin { uint resetFeesInTwei = collectedFeesInTwei; collectedFeesInTwei = 0; CollectedFeesReset(resetFeesInTwei); } function getRate( ERC20 conversionToken, uint currentBlockNumber, bool buy, uint qtyInSrcWei ) public view returns(uint) { currentBlockNumber; require(qtyInSrcWei <= MAX_QTY); uint eInFp = fromWeiToFp(reserveContract.balance); uint rateInPrecision = getRateWithE(conversionToken, buy, qtyInSrcWei, eInFp); require(rateInPrecision <= MAX_RATE); return rateInPrecision; } function getRateWithE(ERC20 conversionToken, bool buy, uint qtyInSrcWei, uint eInFp) public view returns(uint) { uint deltaEInFp; uint sellInputTokenQtyInFp; uint deltaTInFp; uint rateInPrecision; require(qtyInSrcWei <= MAX_QTY); require(eInFp <= maxQtyInFp); if (conversionToken != token) return 0; if (buy) { // ETH goes in, token goes out deltaEInFp = fromWeiToFp(qtyInSrcWei); if (deltaEInFp > maxEthCapBuyInFp) return 0; if (deltaEInFp == 0) { rateInPrecision = buyRateZeroQuantity(eInFp); } else { rateInPrecision = buyRate(eInFp, deltaEInFp); } } else { sellInputTokenQtyInFp = fromTweiToFp(qtyInSrcWei); deltaTInFp = valueAfterReducingFee(sellInputTokenQtyInFp); if (deltaTInFp == 0) { rateInPrecision = sellRateZeroQuantity(eInFp); deltaEInFp = 0; } else { (rateInPrecision, deltaEInFp) = sellRate(eInFp, sellInputTokenQtyInFp, deltaTInFp); } if (deltaEInFp > maxEthCapSellInFp) return 0; } rateInPrecision = rateAfterValidation(rateInPrecision, buy); return rateInPrecision; } function rateAfterValidation(uint rateInPrecision, bool buy) public view returns(uint) { uint minAllowRateInPrecision; uint maxAllowedRateInPrecision; if (buy) { minAllowRateInPrecision = minBuyRateInPrecision; maxAllowedRateInPrecision = maxBuyRateInPrecision; } else { minAllowRateInPrecision = minSellRateInPrecision; maxAllowedRateInPrecision = maxSellRateInPrecision; } if ((rateInPrecision > maxAllowedRateInPrecision) || (rateInPrecision < minAllowRateInPrecision)) { return 0; } else if (rateInPrecision > MAX_RATE) { return 0; } else { return rateInPrecision; } } function buyRate(uint eInFp, uint deltaEInFp) public view returns(uint) { uint deltaTInFp = deltaTFunc(rInFp, pMinInFp, eInFp, deltaEInFp, formulaPrecision); require(deltaTInFp <= maxQtyInFp); deltaTInFp = valueAfterReducingFee(deltaTInFp); return deltaTInFp * PRECISION / deltaEInFp; } function buyRateZeroQuantity(uint eInFp) public view returns(uint) { uint ratePreReductionInPrecision = formulaPrecision * PRECISION / pE(rInFp, pMinInFp, eInFp, formulaPrecision); return valueAfterReducingFee(ratePreReductionInPrecision); } function sellRate( uint eInFp, uint sellInputTokenQtyInFp, uint deltaTInFp ) public view returns(uint rateInPrecision, uint deltaEInFp) { deltaEInFp = deltaEFunc(rInFp, pMinInFp, eInFp, deltaTInFp, formulaPrecision, numFpBits); require(deltaEInFp <= maxQtyInFp); rateInPrecision = deltaEInFp * PRECISION / sellInputTokenQtyInFp; } function sellRateZeroQuantity(uint eInFp) public view returns(uint) { uint ratePreReductionInPrecision = pE(rInFp, pMinInFp, eInFp, formulaPrecision) * PRECISION / formulaPrecision; return valueAfterReducingFee(ratePreReductionInPrecision); } function fromTweiToFp(uint qtyInTwei) public view returns(uint) { require(qtyInTwei <= MAX_QTY); return qtyInTwei * formulaPrecision / (10 ** getDecimals(token)); } function fromWeiToFp(uint qtyInwei) public view returns(uint) { require(qtyInwei <= MAX_QTY); return qtyInwei * formulaPrecision / (10 ** ETH_DECIMALS); } function valueAfterReducingFee(uint val) public view returns(uint) { require(val <= BIG_NUMBER); return ((10000 - feeInBps) * val) / 10000; } function calcCollectedFee(uint val) public view returns(uint) { require(val <= MAX_QTY); return val * feeInBps / (10000 - feeInBps); } function abs(int val) public pure returns(uint) { if (val < 0) { return uint(val * (-1)); } else { return uint(val); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxSellRateInPrecision","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"reserve","type":"address"}],"name":"setReserveAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"val","type":"int256"}],"name":"abs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"qtyInwei","type":"uint256"}],"name":"fromWeiToFp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"r","type":"uint256"},{"name":"pMIn","type":"uint256"},{"name":"e","type":"uint256"},{"name":"precision","type":"uint256"}],"name":"pE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"p","type":"uint256"},{"name":"q","type":"uint256"},{"name":"numPrecisionBits","type":"uint256"}],"name":"ln","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"maxEthCapSellInFp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BIG_NUMBER","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"collectedFeesInTwei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rInFp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxEthCapBuyInFp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"formulaPrecision","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rInFp","type":"uint256"},{"name":"_pMinInFp","type":"uint256"},{"name":"_numFpBits","type":"uint256"},{"name":"_maxCapBuyInWei","type":"uint256"},{"name":"_maxCapSellInWei","type":"uint256"},{"name":"_feeInBps","type":"uint256"},{"name":"_maxTokenToEthRateInPrecision","type":"uint256"},{"name":"_minTokenToEthRateInPrecision","type":"uint256"}],"name":"setLiquidityParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"x","type":"uint256"},{"name":"y","type":"uint256"}],"name":"checkMultOverflow","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"eInFp","type":"uint256"},{"name":"deltaEInFp","type":"uint256"}],"name":"buyRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"eInFp","type":"uint256"}],"name":"sellRateZeroQuantity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"val","type":"uint256"}],"name":"valueAfterReducingFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numFpBits","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"r","type":"uint256"},{"name":"pMIn","type":"uint256"},{"name":"e","type":"uint256"},{"name":"deltaE","type":"uint256"},{"name":"precision","type":"uint256"}],"name":"deltaTFunc","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"x","type":"uint256"},{"name":"numPrecisionBits","type":"uint256"}],"name":"log2ForSmallNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"p","type":"uint256"},{"name":"q","type":"uint256"},{"name":"precision","type":"uint256"}],"name":"compactFraction","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"conversionToken","type":"address"},{"name":"buy","type":"bool"},{"name":"qtyInSrcWei","type":"uint256"},{"name":"eInFp","type":"uint256"}],"name":"getRateWithE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"p","type":"uint256"},{"name":"q","type":"uint256"}],"name":"countLeadingZeros","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"eInFp","type":"uint256"},{"name":"sellInputTokenQtyInFp","type":"uint256"},{"name":"deltaTInFp","type":"uint256"}],"name":"sellRate","outputs":[{"name":"rateInPrecision","type":"uint256"},{"name":"deltaEInFp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"qtyInTwei","type":"uint256"}],"name":"fromTweiToFp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"r","type":"uint256"},{"name":"pMIn","type":"uint256"},{"name":"e","type":"uint256"},{"name":"deltaT","type":"uint256"},{"name":"precision","type":"uint256"},{"name":"numPrecisionBits","type":"uint256"}],"name":"deltaEFunc","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"feeInBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"p","type":"uint256"},{"name":"q","type":"uint256"},{"name":"numPrecisionBits","type":"uint256"}],"name":"logBase2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"rateInPrecision","type":"uint256"},{"name":"buy","type":"bool"}],"name":"rateAfterValidation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"val","type":"uint256"}],"name":"calcCollectedFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"p","type":"uint256"},{"name":"q","type":"uint256"},{"name":"precision","type":"uint256"}],"name":"exp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"resetCollectedFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"conversionToken","type":"address"},{"name":"currentBlockNumber","type":"uint256"},{"name":"buy","type":"bool"},{"name":"qtyInSrcWei","type":"uint256"}],"name":"getRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"conversionToken","type":"address"},{"name":"buyAmountInTwei","type":"int256"},{"name":"rateUpdateBlock","type":"uint256"},{"name":"currentBlock","type":"uint256"}],"name":"recordImbalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"eInFp","type":"uint256"}],"name":"buyRateZeroQuantity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBuyRateInPrecision","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minSellRateInPrecision","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pMinInFp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxQtyInFp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minBuyRateInPrecision","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_admin","type":"address"},{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"reserve","type":"address"}],"name":"ReserveAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rInFp","type":"uint256"},{"indexed":false,"name":"pMinInFp","type":"uint256"},{"indexed":false,"name":"numFpBits","type":"uint256"},{"indexed":false,"name":"maxCapBuyInFp","type":"uint256"},{"indexed":false,"name":"maxEthCapSellInFp","type":"uint256"},{"indexed":false,"name":"feeInBps","type":"uint256"},{"indexed":false,"name":"formulaPrecision","type":"uint256"},{"indexed":false,"name":"maxQtyInFp","type":"uint256"},{"indexed":false,"name":"maxBuyRateInPrecision","type":"uint256"},{"indexed":false,"name":"minBuyRateInPrecision","type":"uint256"},{"indexed":false,"name":"maxSellRateInPrecision","type":"uint256"},{"indexed":false,"name":"minSellRateInPrecision","type":"uint256"}],"name":"LiquidityParamsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"resetFeesInTwei","type":"uint256"}],"name":"CollectedFeesReset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAdmin","type":"address"},{"indexed":false,"name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAlerter","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]
Contract Creation Code
6060604052600060115534156200001557600080fd5b60405160408062002382833981016040528080519190602001805160008054600160a060020a03191633600160a060020a0316179055915062000068905082640100000000620000df8102620011be1704565b60078054600160a060020a031916600160a060020a038381169190911791829055620000a39116640100000000620001c3810262001efd1704565b600754601290620000cb90600160a060020a031664010000000062001dea620002a382021704565b1115620000d757600080fd5b505062000386565b60005433600160a060020a03908116911614620000fb57600080fd5b600160a060020a03811615156200011157600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b600160a060020a03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156200020b57600160a060020a038116600090815260066020526040902060129055620002a0565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200026b57600080fd5b6102c65a03f115156200027d57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415620002d6576012915062000380565b50600160a060020a0382166000908152600660205260409020548015156200037c5782600160a060020a031663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200035857600080fd5b6102c65a03f115156200036a57600080fd5b50505060405180519050915062000380565b8091505b50919050565b611fec80620003966000396000f3006060604052600436106102795763ffffffff60e060020a60003504166301a12fd3811461027e5780630f9b51291461029f57806314673d31146102c45780631b5ac4b5146102e35780631f05ff29146102f957806320b0961c1461030f578063267822471461032e578063275acbe31461035d578063279fe9671461037957806327a099d81461038c5780632f4fda30146103f25780633ccdbb2814610405578063402776041461042e578063408ee7fe14610441578063436f64ac14610460578063463cf7301461047357806347be7bce146104865780634857d52d146104995780635111249e146104c45780635909e897146104f1578063625cfc461461050a5780636f3d80431461052057806371f805bf1461053657806375829def1461054957806377f50f97146105685780637acc86781461057b5780637c423f541461059a57806382f19e3a146105ad5780638369ff08146105cf5780638401824f146105e8578063859618641461061c578063869d7d9314610646578063925176d61461065f578063958186031461067b5780639870d7fe14610691578063a0099b60146106b0578063a0a7299b146106d5578063a0dbde9d146106e8578063a2c99d4714610704578063a7f43acd1461071f578063aa98d57b14610732578063ac8a584a14610748578063b5debaf514610767578063b86f6aa714610783578063b8e9c22e14610796578063c6fd2103146107c0578063ce56c454146107e8578063debc74f61461080a578063e255d5ad14610820578063e570270114610833578063ec6b16ca14610846578063f0247f7814610859578063f851a4401461086c578063fbe3462c1461087f578063fc0c546a14610892575b600080fd5b341561028957600080fd5b61029d600160a060020a03600435166108a5565b005b34156102aa57600080fd5b6102b2610a15565b60405190815260200160405180910390f35b34156102cf57600080fd5b61029d600160a060020a0360043516610a1b565b34156102ee57600080fd5b6102b2600435610a91565b341561030457600080fd5b6102b2600435610aae565b341561031a57600080fd5b6102b2600435602435604435606435610ae0565b341561033957600080fd5b610341610b20565b604051600160a060020a03909116815260200160405180910390f35b341561036857600080fd5b6102b2600435602435604435610b2f565b341561038457600080fd5b6102b2610b82565b341561039757600080fd5b61039f610b88565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156103de5780820151838201526020016103c6565b505050509050019250505060405180910390f35b34156103fd57600080fd5b6102b2610bf1565b341561041057600080fd5b61029d600160a060020a036004358116906024359060443516610bf9565b341561043957600080fd5b6102b2610cf0565b341561044c57600080fd5b61029d600160a060020a0360043516610cf6565b341561046b57600080fd5b6102b2610df2565b341561047e57600080fd5b6102b2610df8565b341561049157600080fd5b6102b2610dfe565b34156104a457600080fd5b61029d60043560243560443560643560843560a43560c43560e435610e04565b34156104cf57600080fd5b6104dd600435602435610fa4565b604051901515815260200160405180910390f35b34156104fc57600080fd5b6102b2600435602435610fcf565b341561051557600080fd5b6102b2600435611020565b341561052b57600080fd5b6102b2600435611060565b341561054157600080fd5b6102b2611083565b341561055457600080fd5b61029d600160a060020a0360043516611089565b341561057357600080fd5b61029d611124565b341561058657600080fd5b61029d600160a060020a03600435166111be565b34156105a557600080fd5b61039f6112a0565b34156105b857600080fd5b6102b2600435602435604435606435608435611306565b34156105da57600080fd5b6102b26004356024356113d0565b34156105f357600080fd5b61060460043560243560443561144e565b60405191825260208201526040908101905180910390f35b341561062757600080fd5b6102b2600160a060020a03600435166024351515604435606435611493565b341561065157600080fd5b6102b260043560243561159c565b341561066a57600080fd5b610604600435602435604435611625565b341561068657600080fd5b6102b2600435611670565b341561069c57600080fd5b61029d600160a060020a03600435166116b1565b34156106bb57600080fd5b6102b260043560243560443560643560843560a435611781565b34156106e057600080fd5b6102b2611826565b34156106f357600080fd5b6102b260043560243560443561182c565b341561070f57600080fd5b6102b260043560243515156118df565b341561072a57600080fd5b61034161193e565b341561073d57600080fd5b6102b260043561194d565b341561075357600080fd5b61029d600160a060020a036004351661197d565b341561077257600080fd5b6102b2600435602435604435611ae9565b341561078e57600080fd5b61029d611bc0565b34156107a157600080fd5b6102b2600160a060020a03600435166024356044351515606435611c1c565b34156107cb57600080fd5b61029d600160a060020a0360043516602435604435606435611c80565b34156107f357600080fd5b61029d600435600160a060020a0360243516611cf0565b341561081557600080fd5b6102b2600435611d83565b341561082b57600080fd5b6102b2611dae565b341561083e57600080fd5b6102b2611db4565b341561085157600080fd5b6102b2611dba565b341561086457600080fd5b6102b2611dc0565b341561087757600080fd5b610341611dc6565b341561088a57600080fd5b6102b2611dd5565b341561089d57600080fd5b610341611ddb565b6000805433600160a060020a039081169116146108c157600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156108e857600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b600554811015610a115781600160a060020a031660058281548110151561092d57fe5b600091825260209091200154600160a060020a03161415610a095760058054600019810190811061095a57fe5b60009182526020909120015460058054600160a060020a03909216918390811061098057fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560058054906109bc906000198301611ea4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a1610a11565b60010161090a565b5050565b60145481565b60005433600160a060020a03908116911614610a3657600080fd5b60088054600160a060020a031916600160a060020a0383161790557fbd2ca09dd2b354751631db75d1a63231ec123c0d68c81928ea03d0be326c7f8881604051600160a060020a03909116815260200160405180910390a150565b600080821215610aa657506000198102610aa9565b50805b919050565b60006b204fce5e3e25026110000000821115610ac957600080fd5b600a54670de0b6b3a76400009083025b0492915050565b600080610af284870284850285611ae9565b9050610afe8186610fa4565b15610b0857600080fd5b82818602811515610b1557fe5b049695505050505050565b600154600160a060020a031681565b6000690177c17eb2ae5edd211c69021e19e0c9bab240000082610b5387878761182c565b9050610b5f8382610fa4565b15610b6957600080fd5b81818402811515610b7657fe5b04979650505050505050565b600e5481565b610b90611ecd565b6004805480602002602001604051908101604052809291908181526020018280548015610be657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610bc8575b505050505090505b90565b60c860020a81565b60005433600160a060020a03908116911614610c1457600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610c7157600080fd5b6102c65a03f11515610c8257600080fd5b505050604051805190501515610c9757600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60115481565b60005433600160a060020a03908116911614610d1157600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610d3757600080fd5b60055460329010610d4757600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610dc68382611ea4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600b5481565b600d5481565b600a5481565b60005433600160a060020a03908116911614610e1f57600080fd5b6101008610610e2d57600080fd5b600a546b204fce5e3e25026110000000901115610e4957600080fd5b6127108310610e5757600080fd5b818110610e6357600080fd5b600b889055600c879055600286900a600a55610e8a6b204fce5e3e25026110000000610aae565b600f556009869055610e9b85610aae565b600d55610ea784610aae565b600e556010839055806ec097ce7bc90715b34b9f1000000000811515610ec957fe5b04601255816ec097ce7bc90715b34b9f1000000000811515610ee757fe5b04601381905560148390556015829055600b54600c54600954600d54600e54601054600a54600f546012547f52db0a06d138736a4425764a1f7e1b432b5ce79099d523c0c4cd01e7320aba0e998c8c6040519b8c5260208c019a909a526040808c019990995260608b019790975260808a019590955260a089019390935260c088019190915260e0870152610100860152610120850152610140840152610160830191909152610180909101905180910390a15050505050505050565b6000811515610fb557506000610fc9565b8282838502811515610fc357fe5b04141590505b92915050565b600080610fe5600b54600c548686600a54611306565b600f54909150811115610ff757600080fd5b61100081611060565b905082670de0b6b3a7640000820281151561101757fe5b04949350505050565b600080600a54670de0b6b3a7640000611041600b54600c5487600a54610ae0565b0281151561104b57fe5b04905061105781611060565b91505b50919050565b600060c860020a82111561107357600080fd5b6010546127109081038302610ad9565b60095481565b60005433600160a060020a039081169116146110a457600080fd5b600160a060020a03811615156110b957600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461113f57600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146111d957600080fd5b600160a060020a03811615156111ee57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6112a8611ecd565b6005805480602002602001604051908101604052809291908181526020018280548015610be657602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610bc8575050505050905090565b60008060008061131889898988610ae0565b9250828902915061132e868a0286870287611ae9565b90508481101561133d57600080fd5b61134985820386610fa4565b1561135357600080fd5b611361858683030286610fa4565b1561136b57600080fd5b61137b8586878403020286610fa4565b1561138557600080fd5b61138f8282610fa4565b1561139957600080fd5b6113a38984610fa4565b156113ad57600080fd5b8082028586878885030202028115156113c257fe5b049998505050505050505050565b600080600283810a90810281838188108015906113ed5750828811155b15156113f857600080fd5b607d871061140557600080fd5b50855b6000811115611442578388890281151561141e57fe5b04975060028204915082881061143957600288049750938101935b60001901611408565b50929695505050505050565b60008082830284101561146557508390508261148b565b611486838681151561147357fe5b04848681151561147f57fe5b048561144e565b915091505b935093915050565b6000808080806b204fce5e3e250261100000008711156114b257600080fd5b600f548611156114c157600080fd5b600754600160a060020a038a81169116146114df5760009450611590565b871561152c576114ee87610aae565b9350600d548411156115035760009450611590565b83151561151a5761151386611d83565b9050611527565b6115248685610fcf565b90505b611580565b61153587611670565b925061154083611060565b915081151561155d5761155286611020565b90506000935061156d565b611568868484611625565b945090505b600e548411156115805760009450611590565b61158a81896118df565b90508094505b50505050949350505050565b60007f800000000000000000000000000000000000000000000000000000000000000060ff5b600081126116175783828386028115156115d857fe5b04146115e95760028204915061160e565b6000828502868115156115f857fe5b0411156116075780925061161d565b6002820491505b600019016115c2565b60001992505b505092915050565b60008061163e600b54600c548786600a54600954611781565b600f5490915081111561165057600080fd5b83670de0b6b3a7640000820281151561166557fe5b049150935093915050565b60006b204fce5e3e2502611000000082111561168b57600080fd5b6007546116a090600160a060020a0316611dea565b600a0a600a548302811515610ad957fe5b60005433600160a060020a039081169116146116cc57600080fd5b600160a060020a03811660009081526002602052604090205460ff16156116f257600080fd5b6004546032901061170257600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610dc68382611ea4565b6000806000806117938a8a8a89610ae0565b9250828a0291506117b8868884028115156117aa57fe5b048788020187880287610b2f565b90506117c48a84610fa4565b156117ce57600080fd5b6117d88687610fa4565b156117e257600080fd5b6117ec8288610fa4565b156117f657600080fd5b6118008187610fa4565b1561180a57600080fd5b8986820281151561181757fe5b049a9950505050505050505050565b60105481565b600080600283900a81808688111561184b57611848888861159c565b93505b6118558884610fa4565b1561185f57600080fd5b6118698484610fa4565b1561187357600080fd5b611881600285900a88610fa4565b1561188b57600080fd5b600284900a870288840281151561189e57fe5b0491506118ab82876113d0565b905060c860020a84840211156118c057600080fd5b60c860020a8111156118d157600080fd5b919092020195945050505050565b600080600083156118f7575050601354601254611900565b50506015546014545b8085118061190d57508185105b1561191b576000925061161d565b69d3c21bcecceda1000000851115611936576000925061161d565b84925061161d565b600854600160a060020a031681565b60006b204fce5e3e2502611000000082111561196857600080fd5b601054612710036010548302811515610ad957fe5b6000805433600160a060020a0390811691161461199957600080fd5b600160a060020a03821660009081526002602052604090205460ff1615156119c057600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b600454811015610a115781600160a060020a0316600482815481101515611a0557fe5b600091825260209091200154600160a060020a03161415611ae157600480546000198101908110611a3257fe5b60009182526020909120015460048054600160a060020a039092169183908110611a5857fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600480546000190190611a949082611ea4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a1610a11565b6001016119e2565b6000806001808083805b611afd8489610fa4565b15611b0a57819650611bb3565b611b148386610fa4565b15611b2157819650611bb3565b848302888502811515611b3057fe5b048201915080821415611b4557819650611bb3565b5060019094019380611b57848b610fa4565b15611b6457819650611bb3565b611b6e838a610fa4565b15611b7b57819650611bb3565b611b858587610fa4565b15611b9257819650611bb3565b938502939289029291880291611ba984848a61144e565b9094509250611af3565b5050505050509392505050565b6000805433600160a060020a03908116911614611bdc57600080fd5b506011805460009091557fdeb4766cf1de6f18e3b195f199d403a02a3e09fbee1192b37d797fb300f052618160405190815260200160405180910390a150565b600080806b204fce5e3e25026110000000841115611c3957600080fd5b600854611c4f90600160a060020a031631610aae565b9150611c5d87868685611493565b905069d3c21bcecceda1000000811115611c7657600080fd5b9695505050505050565b60085433600160a060020a03908116911614611c9b57600080fd5b6000831315611cc357611cb5611cb084610a91565b61194d565b601180549091019055611cea565b612710601054611cd285610a91565b02811515611cdc57fe5b601180549290910490910190555b50505050565b60005433600160a060020a03908116911614611d0b57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515611d3c57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600080611d98600b54600c5485600a54610ae0565b670de0b6b3a7640000600a540281151561104b57fe5b60125481565b60155481565b600c5481565b600f5481565b600054600160a060020a031681565b60135481565b600754600160a060020a031681565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611e1b576012915061105a565b50600160a060020a038216600090815260066020526040902054801515610fc95782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e8257600080fd5b6102c65a03f11515611e9357600080fd5b50505060405180519050915061105a565b815481835581811511611ec857600083815260209020611ec8918101908301611edf565b505050565b60206040519081016040526000815290565b610bee91905b80821115611ef95760008155600101611ee5565b5090565b600160a060020a03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611f4357600160a060020a038116600090815260066020526040902060129055611fbd565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611f8957600080fd5b6102c65a03f11515611f9a57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b505600a165627a7a723058209636cabc4449ec62d936e4966d4fa26799ad0832ce885b881fd7a07012aae9d60029000000000000000000000000086b47c43d5046d059d234f863d9ae6821c945e6000000000000000000000000408e41876cccdc0f92210600ef50372656052a38
Deployed Bytecode
0x6060604052600436106102795763ffffffff60e060020a60003504166301a12fd3811461027e5780630f9b51291461029f57806314673d31146102c45780631b5ac4b5146102e35780631f05ff29146102f957806320b0961c1461030f578063267822471461032e578063275acbe31461035d578063279fe9671461037957806327a099d81461038c5780632f4fda30146103f25780633ccdbb2814610405578063402776041461042e578063408ee7fe14610441578063436f64ac14610460578063463cf7301461047357806347be7bce146104865780634857d52d146104995780635111249e146104c45780635909e897146104f1578063625cfc461461050a5780636f3d80431461052057806371f805bf1461053657806375829def1461054957806377f50f97146105685780637acc86781461057b5780637c423f541461059a57806382f19e3a146105ad5780638369ff08146105cf5780638401824f146105e8578063859618641461061c578063869d7d9314610646578063925176d61461065f578063958186031461067b5780639870d7fe14610691578063a0099b60146106b0578063a0a7299b146106d5578063a0dbde9d146106e8578063a2c99d4714610704578063a7f43acd1461071f578063aa98d57b14610732578063ac8a584a14610748578063b5debaf514610767578063b86f6aa714610783578063b8e9c22e14610796578063c6fd2103146107c0578063ce56c454146107e8578063debc74f61461080a578063e255d5ad14610820578063e570270114610833578063ec6b16ca14610846578063f0247f7814610859578063f851a4401461086c578063fbe3462c1461087f578063fc0c546a14610892575b600080fd5b341561028957600080fd5b61029d600160a060020a03600435166108a5565b005b34156102aa57600080fd5b6102b2610a15565b60405190815260200160405180910390f35b34156102cf57600080fd5b61029d600160a060020a0360043516610a1b565b34156102ee57600080fd5b6102b2600435610a91565b341561030457600080fd5b6102b2600435610aae565b341561031a57600080fd5b6102b2600435602435604435606435610ae0565b341561033957600080fd5b610341610b20565b604051600160a060020a03909116815260200160405180910390f35b341561036857600080fd5b6102b2600435602435604435610b2f565b341561038457600080fd5b6102b2610b82565b341561039757600080fd5b61039f610b88565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156103de5780820151838201526020016103c6565b505050509050019250505060405180910390f35b34156103fd57600080fd5b6102b2610bf1565b341561041057600080fd5b61029d600160a060020a036004358116906024359060443516610bf9565b341561043957600080fd5b6102b2610cf0565b341561044c57600080fd5b61029d600160a060020a0360043516610cf6565b341561046b57600080fd5b6102b2610df2565b341561047e57600080fd5b6102b2610df8565b341561049157600080fd5b6102b2610dfe565b34156104a457600080fd5b61029d60043560243560443560643560843560a43560c43560e435610e04565b34156104cf57600080fd5b6104dd600435602435610fa4565b604051901515815260200160405180910390f35b34156104fc57600080fd5b6102b2600435602435610fcf565b341561051557600080fd5b6102b2600435611020565b341561052b57600080fd5b6102b2600435611060565b341561054157600080fd5b6102b2611083565b341561055457600080fd5b61029d600160a060020a0360043516611089565b341561057357600080fd5b61029d611124565b341561058657600080fd5b61029d600160a060020a03600435166111be565b34156105a557600080fd5b61039f6112a0565b34156105b857600080fd5b6102b2600435602435604435606435608435611306565b34156105da57600080fd5b6102b26004356024356113d0565b34156105f357600080fd5b61060460043560243560443561144e565b60405191825260208201526040908101905180910390f35b341561062757600080fd5b6102b2600160a060020a03600435166024351515604435606435611493565b341561065157600080fd5b6102b260043560243561159c565b341561066a57600080fd5b610604600435602435604435611625565b341561068657600080fd5b6102b2600435611670565b341561069c57600080fd5b61029d600160a060020a03600435166116b1565b34156106bb57600080fd5b6102b260043560243560443560643560843560a435611781565b34156106e057600080fd5b6102b2611826565b34156106f357600080fd5b6102b260043560243560443561182c565b341561070f57600080fd5b6102b260043560243515156118df565b341561072a57600080fd5b61034161193e565b341561073d57600080fd5b6102b260043561194d565b341561075357600080fd5b61029d600160a060020a036004351661197d565b341561077257600080fd5b6102b2600435602435604435611ae9565b341561078e57600080fd5b61029d611bc0565b34156107a157600080fd5b6102b2600160a060020a03600435166024356044351515606435611c1c565b34156107cb57600080fd5b61029d600160a060020a0360043516602435604435606435611c80565b34156107f357600080fd5b61029d600435600160a060020a0360243516611cf0565b341561081557600080fd5b6102b2600435611d83565b341561082b57600080fd5b6102b2611dae565b341561083e57600080fd5b6102b2611db4565b341561085157600080fd5b6102b2611dba565b341561086457600080fd5b6102b2611dc0565b341561087757600080fd5b610341611dc6565b341561088a57600080fd5b6102b2611dd5565b341561089d57600080fd5b610341611ddb565b6000805433600160a060020a039081169116146108c157600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156108e857600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b600554811015610a115781600160a060020a031660058281548110151561092d57fe5b600091825260209091200154600160a060020a03161415610a095760058054600019810190811061095a57fe5b60009182526020909120015460058054600160a060020a03909216918390811061098057fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560058054906109bc906000198301611ea4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a1610a11565b60010161090a565b5050565b60145481565b60005433600160a060020a03908116911614610a3657600080fd5b60088054600160a060020a031916600160a060020a0383161790557fbd2ca09dd2b354751631db75d1a63231ec123c0d68c81928ea03d0be326c7f8881604051600160a060020a03909116815260200160405180910390a150565b600080821215610aa657506000198102610aa9565b50805b919050565b60006b204fce5e3e25026110000000821115610ac957600080fd5b600a54670de0b6b3a76400009083025b0492915050565b600080610af284870284850285611ae9565b9050610afe8186610fa4565b15610b0857600080fd5b82818602811515610b1557fe5b049695505050505050565b600154600160a060020a031681565b6000690177c17eb2ae5edd211c69021e19e0c9bab240000082610b5387878761182c565b9050610b5f8382610fa4565b15610b6957600080fd5b81818402811515610b7657fe5b04979650505050505050565b600e5481565b610b90611ecd565b6004805480602002602001604051908101604052809291908181526020018280548015610be657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610bc8575b505050505090505b90565b60c860020a81565b60005433600160a060020a03908116911614610c1457600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610c7157600080fd5b6102c65a03f11515610c8257600080fd5b505050604051805190501515610c9757600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60115481565b60005433600160a060020a03908116911614610d1157600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610d3757600080fd5b60055460329010610d4757600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610dc68382611ea4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600b5481565b600d5481565b600a5481565b60005433600160a060020a03908116911614610e1f57600080fd5b6101008610610e2d57600080fd5b600a546b204fce5e3e25026110000000901115610e4957600080fd5b6127108310610e5757600080fd5b818110610e6357600080fd5b600b889055600c879055600286900a600a55610e8a6b204fce5e3e25026110000000610aae565b600f556009869055610e9b85610aae565b600d55610ea784610aae565b600e556010839055806ec097ce7bc90715b34b9f1000000000811515610ec957fe5b04601255816ec097ce7bc90715b34b9f1000000000811515610ee757fe5b04601381905560148390556015829055600b54600c54600954600d54600e54601054600a54600f546012547f52db0a06d138736a4425764a1f7e1b432b5ce79099d523c0c4cd01e7320aba0e998c8c6040519b8c5260208c019a909a526040808c019990995260608b019790975260808a019590955260a089019390935260c088019190915260e0870152610100860152610120850152610140840152610160830191909152610180909101905180910390a15050505050505050565b6000811515610fb557506000610fc9565b8282838502811515610fc357fe5b04141590505b92915050565b600080610fe5600b54600c548686600a54611306565b600f54909150811115610ff757600080fd5b61100081611060565b905082670de0b6b3a7640000820281151561101757fe5b04949350505050565b600080600a54670de0b6b3a7640000611041600b54600c5487600a54610ae0565b0281151561104b57fe5b04905061105781611060565b91505b50919050565b600060c860020a82111561107357600080fd5b6010546127109081038302610ad9565b60095481565b60005433600160a060020a039081169116146110a457600080fd5b600160a060020a03811615156110b957600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461113f57600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146111d957600080fd5b600160a060020a03811615156111ee57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6112a8611ecd565b6005805480602002602001604051908101604052809291908181526020018280548015610be657602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610bc8575050505050905090565b60008060008061131889898988610ae0565b9250828902915061132e868a0286870287611ae9565b90508481101561133d57600080fd5b61134985820386610fa4565b1561135357600080fd5b611361858683030286610fa4565b1561136b57600080fd5b61137b8586878403020286610fa4565b1561138557600080fd5b61138f8282610fa4565b1561139957600080fd5b6113a38984610fa4565b156113ad57600080fd5b8082028586878885030202028115156113c257fe5b049998505050505050505050565b600080600283810a90810281838188108015906113ed5750828811155b15156113f857600080fd5b607d871061140557600080fd5b50855b6000811115611442578388890281151561141e57fe5b04975060028204915082881061143957600288049750938101935b60001901611408565b50929695505050505050565b60008082830284101561146557508390508261148b565b611486838681151561147357fe5b04848681151561147f57fe5b048561144e565b915091505b935093915050565b6000808080806b204fce5e3e250261100000008711156114b257600080fd5b600f548611156114c157600080fd5b600754600160a060020a038a81169116146114df5760009450611590565b871561152c576114ee87610aae565b9350600d548411156115035760009450611590565b83151561151a5761151386611d83565b9050611527565b6115248685610fcf565b90505b611580565b61153587611670565b925061154083611060565b915081151561155d5761155286611020565b90506000935061156d565b611568868484611625565b945090505b600e548411156115805760009450611590565b61158a81896118df565b90508094505b50505050949350505050565b60007f800000000000000000000000000000000000000000000000000000000000000060ff5b600081126116175783828386028115156115d857fe5b04146115e95760028204915061160e565b6000828502868115156115f857fe5b0411156116075780925061161d565b6002820491505b600019016115c2565b60001992505b505092915050565b60008061163e600b54600c548786600a54600954611781565b600f5490915081111561165057600080fd5b83670de0b6b3a7640000820281151561166557fe5b049150935093915050565b60006b204fce5e3e2502611000000082111561168b57600080fd5b6007546116a090600160a060020a0316611dea565b600a0a600a548302811515610ad957fe5b60005433600160a060020a039081169116146116cc57600080fd5b600160a060020a03811660009081526002602052604090205460ff16156116f257600080fd5b6004546032901061170257600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610dc68382611ea4565b6000806000806117938a8a8a89610ae0565b9250828a0291506117b8868884028115156117aa57fe5b048788020187880287610b2f565b90506117c48a84610fa4565b156117ce57600080fd5b6117d88687610fa4565b156117e257600080fd5b6117ec8288610fa4565b156117f657600080fd5b6118008187610fa4565b1561180a57600080fd5b8986820281151561181757fe5b049a9950505050505050505050565b60105481565b600080600283900a81808688111561184b57611848888861159c565b93505b6118558884610fa4565b1561185f57600080fd5b6118698484610fa4565b1561187357600080fd5b611881600285900a88610fa4565b1561188b57600080fd5b600284900a870288840281151561189e57fe5b0491506118ab82876113d0565b905060c860020a84840211156118c057600080fd5b60c860020a8111156118d157600080fd5b919092020195945050505050565b600080600083156118f7575050601354601254611900565b50506015546014545b8085118061190d57508185105b1561191b576000925061161d565b69d3c21bcecceda1000000851115611936576000925061161d565b84925061161d565b600854600160a060020a031681565b60006b204fce5e3e2502611000000082111561196857600080fd5b601054612710036010548302811515610ad957fe5b6000805433600160a060020a0390811691161461199957600080fd5b600160a060020a03821660009081526002602052604090205460ff1615156119c057600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b600454811015610a115781600160a060020a0316600482815481101515611a0557fe5b600091825260209091200154600160a060020a03161415611ae157600480546000198101908110611a3257fe5b60009182526020909120015460048054600160a060020a039092169183908110611a5857fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600480546000190190611a949082611ea4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a1610a11565b6001016119e2565b6000806001808083805b611afd8489610fa4565b15611b0a57819650611bb3565b611b148386610fa4565b15611b2157819650611bb3565b848302888502811515611b3057fe5b048201915080821415611b4557819650611bb3565b5060019094019380611b57848b610fa4565b15611b6457819650611bb3565b611b6e838a610fa4565b15611b7b57819650611bb3565b611b858587610fa4565b15611b9257819650611bb3565b938502939289029291880291611ba984848a61144e565b9094509250611af3565b5050505050509392505050565b6000805433600160a060020a03908116911614611bdc57600080fd5b506011805460009091557fdeb4766cf1de6f18e3b195f199d403a02a3e09fbee1192b37d797fb300f052618160405190815260200160405180910390a150565b600080806b204fce5e3e25026110000000841115611c3957600080fd5b600854611c4f90600160a060020a031631610aae565b9150611c5d87868685611493565b905069d3c21bcecceda1000000811115611c7657600080fd5b9695505050505050565b60085433600160a060020a03908116911614611c9b57600080fd5b6000831315611cc357611cb5611cb084610a91565b61194d565b601180549091019055611cea565b612710601054611cd285610a91565b02811515611cdc57fe5b601180549290910490910190555b50505050565b60005433600160a060020a03908116911614611d0b57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515611d3c57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600080611d98600b54600c5485600a54610ae0565b670de0b6b3a7640000600a540281151561104b57fe5b60125481565b60155481565b600c5481565b600f5481565b600054600160a060020a031681565b60135481565b600754600160a060020a031681565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611e1b576012915061105a565b50600160a060020a038216600090815260066020526040902054801515610fc95782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e8257600080fd5b6102c65a03f11515611e9357600080fd5b50505060405180519050915061105a565b815481835581811511611ec857600083815260209020611ec8918101908301611edf565b505050565b60206040519081016040526000815290565b610bee91905b80821115611ef95760008155600101611ee5565b5090565b600160a060020a03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611f4357600160a060020a038116600090815260066020526040902060129055611fbd565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611f8957600080fd5b6102c65a03f11515611f9a57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b505600a165627a7a723058209636cabc4449ec62d936e4966d4fa26799ad0832ce885b881fd7a07012aae9d60029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000086b47c43d5046d059d234f863d9ae6821c945e6000000000000000000000000408e41876cccdc0f92210600ef50372656052a38
-----Decoded View---------------
Arg [0] : _admin (address): 0x086B47c43d5046D059D234f863D9ae6821C945E6
Arg [1] : _token (address): 0x408e41876cCCDC0F92210600ef50372656052a38
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000086b47c43d5046d059d234f863d9ae6821c945e6
Arg [1] : 000000000000000000000000408e41876cccdc0f92210600ef50372656052a38
Swarm Source
bzzr://9636cabc4449ec62d936e4966d4fa26799ad0832ce885b881fd7a07012aae9d6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.