ETH Price: $3,067.67 (-5.64%)
 

Overview

ETH Balance

92.334686557572209018 ETH

Eth Value

$283,252.75 (@ $3,067.67/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sell Token213371262024-12-05 15:15:2358 days ago1733411723IN
0xC618D56b...1eb40D1cb
0 ETH0.0019823929.49283472
Sell Token208303242024-09-25 21:32:35129 days ago1727299955IN
0xC618D56b...1eb40D1cb
0 ETH0.0012630220.25897478
Transfer207875322024-09-19 22:09:23135 days ago1726783763IN
0xC618D56b...1eb40D1cb
0 ETH0.00049617.08617126
Sell Token189936192024-01-12 21:52:35386 days ago1705096355IN
0xC618D56b...1eb40D1cb
0 ETH0.0019816829.47708824
Sell Token186275962023-11-22 13:32:59437 days ago1700659979IN
0xC618D56b...1eb40D1cb
0 ETH0.0029656344.11315421
Transfer183840062023-10-19 11:13:47472 days ago1697714027IN
0xC618D56b...1eb40D1cb
0 ETH0.0014746521.05956902
Sell Token182443212023-09-29 22:22:47491 days ago1696026167IN
0xC618D56b...1eb40D1cb
0 ETH0.000493897.34912961
Sell Token181832092023-09-21 8:57:47500 days ago1695286667IN
0xC618D56b...1eb40D1cb
0 ETH0.0006728310.01002864
Sell Token180773022023-09-06 12:07:47514 days ago1694002067IN
0xC618D56b...1eb40D1cb
0 ETH0.0013652720.31540784
Sell Token179063022023-08-13 13:41:47538 days ago1691934107IN
0xC618D56b...1eb40D1cb
0 ETH0.0008698912.94184768
Transfer179062812023-08-13 13:37:35538 days ago1691933855IN
0xC618D56b...1eb40D1cb
0 ETH0.0009837114.0459885
Sell Token177367142023-07-20 20:18:47562 days ago1689884327IN
0xC618D56b...1eb40D1cb
0 ETH0.0019100428.4164805
Sell Token177313722023-07-20 2:22:47563 days ago1689819767IN
0xC618D56b...1eb40D1cb
0 ETH0.0010128515.06864193
Sell Token175424382023-06-23 13:02:59589 days ago1687525379IN
0xC618D56b...1eb40D1cb
0 ETH0.0011346316.8803802
Transfer175424362023-06-23 13:02:35589 days ago1687525355IN
0xC618D56b...1eb40D1cb
0 ETH0.0012151617.35078283
Sell Token173112102023-05-22 0:13:23622 days ago1684714403IN
0xC618D56b...1eb40D1cb
0 ETH0.0017047925.36745746
Approve173111752023-05-22 0:06:23622 days ago1684713983IN
0xC618D56b...1eb40D1cb
0 ETH0.0013454428.90189368
Buy Token173111332023-05-21 23:57:35622 days ago1684713455IN
0xC618D56b...1eb40D1cb
0.021 ETH0.0018536327.41415234
Buy Token170321002023-04-12 13:03:47661 days ago1681304627IN
0xC618D56b...1eb40D1cb
0.0001 ETH0.0016883424.97840139
Sell Token165903612023-02-09 9:39:35724 days ago1675935575IN
0xC618D56b...1eb40D1cb
0 ETH0.0015303922.76829585
Sell Token165098902023-01-29 3:47:35735 days ago1674964055IN
0xC618D56b...1eb40D1cb
0 ETH0.001184117.61958057
Sell Token162066652022-12-17 19:59:47777 days ago1671307187IN
0xC618D56b...1eb40D1cb
0 ETH0.0010730715.96741367
Sell Token158986572022-11-04 19:11:11820 days ago1667589071IN
0xC618D56b...1eb40D1cb
0 ETH0.0013259819.7272653
Sell Token158887972022-11-03 10:06:59822 days ago1667470019IN
0xC618D56b...1eb40D1cb
0 ETH0.0014992822.30543712
Transfer158641132022-10-30 23:18:59825 days ago1667171939IN
0xC618D56b...1eb40D1cb
0 ETH0.000517887.39596003
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
213371262024-12-05 15:15:2358 days ago1733411723
0xC618D56b...1eb40D1cb
0.45619086 ETH
208303242024-09-25 21:32:35129 days ago1727299955
0xC618D56b...1eb40D1cb
0.04111229 ETH
189936192024-01-12 21:52:35386 days ago1705096355
0xC618D56b...1eb40D1cb
2.74091756 ETH
186275962023-11-22 13:32:59437 days ago1700659979
0xC618D56b...1eb40D1cb
4.21188359 ETH
182443212023-09-29 22:22:47491 days ago1696026167
0xC618D56b...1eb40D1cb
0.34433405 ETH
181832092023-09-21 8:57:47500 days ago1695286667
0xC618D56b...1eb40D1cb
1.14030353 ETH
180773022023-09-06 12:07:47514 days ago1694002067
0xC618D56b...1eb40D1cb
1.1462521 ETH
179063022023-08-13 13:41:47538 days ago1691934107
0xC618D56b...1eb40D1cb
0.09177174 ETH
178607202023-08-07 4:37:23545 days ago1691383043
0xC618D56b...1eb40D1cb
0.01341832 ETH
177367142023-07-20 20:18:47562 days ago1689884327
0xC618D56b...1eb40D1cb
0.22088674 ETH
177313722023-07-20 2:22:47563 days ago1689819767
0xC618D56b...1eb40D1cb
0.38124323 ETH
175424382023-06-23 13:02:59589 days ago1687525379
0xC618D56b...1eb40D1cb
0.08757444 ETH
173112102023-05-22 0:13:23622 days ago1684714403
0xC618D56b...1eb40D1cb
0.02087395 ETH
165903612023-02-09 9:39:35724 days ago1675935575
0xC618D56b...1eb40D1cb
0.67047809 ETH
165098902023-01-29 3:47:35735 days ago1674964055
0xC618D56b...1eb40D1cb
0.02453237 ETH
162066652022-12-17 19:59:47777 days ago1671307187
0xC618D56b...1eb40D1cb
0.22966768 ETH
158986572022-11-04 19:11:11820 days ago1667589071
0xC618D56b...1eb40D1cb
0.21893736 ETH
158887972022-11-03 10:06:59822 days ago1667470019
0xC618D56b...1eb40D1cb
0.11630073 ETH
158618162022-10-30 15:36:47825 days ago1667144207
0xC618D56b...1eb40D1cb
0.24215705 ETH
158615902022-10-30 14:51:11825 days ago1667141471
0xC618D56b...1eb40D1cb
0.0055664 ETH
158605322022-10-30 11:19:11826 days ago1667128751
0xC618D56b...1eb40D1cb
0.0056 ETH
158133042022-10-23 20:49:35832 days ago1666558175
0xC618D56b...1eb40D1cb
0.1154361 ETH
153832112022-08-21 9:36:09896 days ago1661074569
0xC618D56b...1eb40D1cb
1.40760457 ETH
153204412022-08-11 11:26:52906 days ago1660217212
0xC618D56b...1eb40D1cb
0.23161494 ETH
152362852022-07-29 8:28:03919 days ago1659083283
0xC618D56b...1eb40D1cb
0.08884296 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LIQUID

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-26
*/

//   _    _ _   _                __ _                            
//  | |  (_) | | |              / _(_)                           
//  | | ___| |_| |_ ___ _ __   | |_ _ _ __   __ _ _ __   ___ ___ 
//  | |/ / | __| __/ _ \ '_ \  |  _| | '_ \ / _` | '_ \ / __/ _ \
//  |   <| | |_| ||  __/ | | |_| | | | | | | (_| | | | | (_|  __/
//  |_|\_\_|\__|\__\___|_| |_(_)_| |_|_| |_|\__,_|_| |_|\___\___|
//
//  LIQUID : a token with deep floor liquidity & ever-rising floor price
//
//  https://www.KittenSwap.org
//
//  https://www.Kitten.finance
//
pragma solidity ^0.5.17;

library SafeMath {
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint a, uint b) internal pure returns (uint) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        require(b <= a, errorMessage);
        uint c = a - b;

        return c;
    }
    function mul(uint a, uint b) internal pure returns (uint) {
        if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
}

contract ERC20Detailed {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }
    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

////////////////////////////////////////////////////////////////////////////////

interface IERC20 {
    function balanceOf(address account) external view returns (uint);
}

////////////////////////////////////////////////////////////////////////////////

contract LIQUID is ERC20Detailed 
{
    address public DEPLOYER = 0xD8d71629950cE53d7E9F94619b09058D9D9f5866;
    uint public constant INITIAL_EthReserve = 2100 * (10 ** 18);
    uint public constant INITIAL_TokenReserve = 21000 * (10 ** 18);
    
    ////////////////////////////////////////////////////////////////////////////////
    
    using SafeMath for uint;
    
    uint public MARKET_OPEN_STAGE = 0; // 0: closed; 1: open;
    
    uint public MARKET_BUY_ETH_LIMIT = (10 ** 18) / 1000; // 0: ignore; x: limit purchase amt;
    
    address public MARKET_WHITELIST_TOKEN = address(0);
    uint public MARKET_WHITELIST_TOKEN_BP = 10 * 10000; // 0: ignore; x: require y TOKEN to hold [x * y / 10000] LIQUID
    
    uint public MARKET_WHITELIST_BASE_AMT = 10 * (10 ** 18); // can always own some LIQUID

    ////////////////////////////////////////////////////////////////////////////////
    
    uint public gTransferBurnBP = 60;
    uint public gSellBurnBP = 60;
    uint public gSellTreasuryBP = 0;
    
    // special BurnBP for some addresses
    mapping (address => uint) public gTransferFromBurnBP;
    mapping (address => uint) public gTransferToBurnBP;
    
    ////////////////////////////////////////////////////////////////////////////////
    
    uint public gContractCheckBuyLevel = 3; // 0: no check; 1: methodA; 2: methodB; 3: both;
    uint public gContractCheckSellLevel = 3; // 0: no check; 1: methodA; 2: methodB; 3: both;
    
    mapping (address => uint) public gContractWhitelist; // 0: disableALL; 1: disableBUY; 2: disableSELL; 3: allowALL;
    
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }

    ////////////////////////////////////////////////////////////////////////////////

    address constant tokenFactoryAddr = 0x1111111111111111111111111111111111111111;
    
    address public govAddr;
    
    address public treasuryAddr;
    uint public treasuryAmtTotal = 0;

    constructor () public ERC20Detailed("LIQUID", "LIQUID", 18) {
        if (msg.sender == DEPLOYER) {
            govAddr = msg.sender;
            treasuryAddr = msg.sender;
            _mint(tokenFactoryAddr, INITIAL_TokenReserve);
        }        
    }

    ////////////////////////////////////////////////////////////////////////////////
    
    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
    
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
    
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;

    uint private _totalSupply;
    function totalSupply() public view returns (uint) {
        return _totalSupply;
    }
    function balanceOf(address account) public view returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view returns (uint) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function _transfer(address sender, address recipient, uint amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);

        //------------------------------------------------------------------------------

        // 0         ===> default BurnBP
        // 1 ~ 10000 ===> customized BurnBP
        // >10000    ===> zero BurnBP
        
        uint fromBurnBP = gTransferFromBurnBP[sender];
        if (fromBurnBP == 0)
            fromBurnBP = gTransferBurnBP;
        else if (fromBurnBP > 10000)
            fromBurnBP = 0;

        uint toBurnBP = gTransferToBurnBP[recipient];
        if (toBurnBP == 0)
            toBurnBP = gTransferBurnBP;
        else if (toBurnBP > 10000)
            toBurnBP = 0;

        uint BurnBP = fromBurnBP; // BurnBP = min(fromBurnBP, toBurnBP)
        if (BurnBP > toBurnBP)
            BurnBP = toBurnBP;
        
        if (BurnBP > 0) {
            uint burnAmt = amount.mul(BurnBP).div(10000);
            _burn(recipient, burnAmt);
        }
    }
    function _transferRawNoBurn(address sender, address recipient, uint amount) internal {
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }    
    function _mint(address account, uint amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        
        if (amount == 0) return;
        if (_balances[account] == 0) return;

        if (account != tokenFactoryAddr) {

            _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
            emit Transfer(account, address(0), amount);

            //------------------------------------------------------------------------------
            // AutoBoost : because totalSupply is reduced, we can burn tokenReserve to boost price
            // Check our Medium on https://www.Kitten.finance for details
            //------------------------------------------------------------------------------
            
            uint TokenReserve = _balances[tokenFactoryAddr];
            
            if (_totalSupply > TokenReserve) { // shall always satisfy
                uint extraBurn = TokenReserve.mul(amount).div(_totalSupply.sub(TokenReserve));
                _balances[tokenFactoryAddr] = TokenReserve.sub(extraBurn);
                emit Transfer(tokenFactoryAddr, address(0), extraBurn);
                
                _totalSupply = _totalSupply.sub(amount).sub(extraBurn);
            } else {
                _totalSupply = _totalSupply.sub(amount);
            }
        }
    }
    function _approve(address owner, address spender, uint amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }    
    
    ////////////////////////////////////////////////////////////////////////////////

    function getEthReserve() public view returns (uint) {
        return INITIAL_EthReserve.add(address(this).balance).sub(treasuryAmtTotal);
    }

    function getTokenReserve() public view returns (uint) {
        return _balances[tokenFactoryAddr];
    }
    
    event BuyToken(address indexed user, uint tokenAmt, uint ethAmt);
    event SellToken(address indexed user, uint tokenAmt, uint ethAmt);

    function buyToken(uint minTokenAmt, uint expireTimestamp) external payable 
    {
        address user = msg.sender;

        if (gContractWhitelist[user] < 2) { // 0: disableALL; 1: disableBUY; 2: disableSELL; 3: allowALL;
            if (gContractCheckBuyLevel % 2 == 1) require(!isContract(user), '!human'); // 0: no check; 1: methodA; 2: methodB; 3: both;
            if (gContractCheckBuyLevel >= 2) require(user == tx.origin, '!human');     // 0: no check; 1: methodA; 2: methodB; 3: both;
        }

        require ((MARKET_OPEN_STAGE > 0) || (user == govAddr), '!market'); // govAddr can test contract before market open
        require (msg.value > 0, '!eth');
        require (minTokenAmt > 0, '!minToken');
        require ((expireTimestamp == 0) || (block.timestamp <= expireTimestamp), '!expire');
        require ((MARKET_BUY_ETH_LIMIT == 0) || (msg.value <= MARKET_BUY_ETH_LIMIT), '!ethLimit');
        
        //------------------------------------------------------------------------------
        
        uint newEthReserve = INITIAL_EthReserve.add(address(this).balance).sub(treasuryAmtTotal);
        uint oldEthReserve = newEthReserve.sub(msg.value);

        uint oldTokenReserve = _balances[tokenFactoryAddr];
        uint newTokenReserve = (oldEthReserve.mul(oldTokenReserve).add(newEthReserve / 2)).div(newEthReserve);
        
        uint outTokenAmt = oldTokenReserve.sub(newTokenReserve);
        require (outTokenAmt > 0, '!outToken');
        require (outTokenAmt >= minTokenAmt, "KittenSwap: INSUFFICIENT_OUTPUT_AMOUNT");
        
        if ((MARKET_WHITELIST_TOKEN_BP > 0) && (MARKET_WHITELIST_TOKEN != address(0))) 
        {
            uint amtWhitelistToken = IERC20(MARKET_WHITELIST_TOKEN).balanceOf(user);
            uint amtLimit = amtWhitelistToken.mul(MARKET_WHITELIST_TOKEN_BP).div(10000);
            
            if (amtLimit < MARKET_WHITELIST_BASE_AMT) {
                amtLimit = MARKET_WHITELIST_BASE_AMT;
            }
            
            require (_balances[user].add(outTokenAmt) <= amtLimit, '!need-more-whitelist-token');
        }

        _transferRawNoBurn(tokenFactoryAddr, user, outTokenAmt);

        //------------------------------------------------------------------------------
        
        emit BuyToken(user, outTokenAmt, msg.value);
    }
    
    function sellToken(uint tokenAmt, uint minEthAmt, uint expireTimestamp) external 
    {
        address payable user = msg.sender;

        if (gContractWhitelist[user] % 2 == 0) { // 0: disableALL; 1: disableBUY; 2: disableSELL; 3: allowALL;
            if (gContractCheckSellLevel % 2 == 1) require(!isContract(user), '!human'); // 0: no check; 1: methodA; 2: methodB; 3: both;
            if (gContractCheckSellLevel >= 2) require(user == tx.origin, '!human');     // 0: no check; 1: methodA; 2: methodB; 3: both;
        }

        require (tokenAmt > 0, '!token');
        require (minEthAmt > 0, '!minEth');
        require ((expireTimestamp == 0) || (block.timestamp <= expireTimestamp), '!expire');
        
        uint burnAmt = tokenAmt.mul(gSellBurnBP).div(10000);
        _burn(user, burnAmt);
        uint tokenAmtAfterBurn = tokenAmt.sub(burnAmt);

        //------------------------------------------------------------------------------

        uint oldEthReserve = INITIAL_EthReserve.add(address(this).balance).sub(treasuryAmtTotal);
        uint oldTokenReserve = _balances[tokenFactoryAddr];

        uint newTokenReserve = oldTokenReserve.add(tokenAmtAfterBurn);
        uint newEthReserve = (oldEthReserve.mul(oldTokenReserve).add(newTokenReserve / 2)).div(newTokenReserve);
        
        uint outEthAmt = oldEthReserve.sub(newEthReserve);
        require (outEthAmt > 0, '!outEth');
        require (outEthAmt >= minEthAmt, "KittenSwap: INSUFFICIENT_OUTPUT_AMOUNT");

        _transferRawNoBurn(user, tokenFactoryAddr, tokenAmtAfterBurn);

        //------------------------------------------------------------------------------

        if (gSellTreasuryBP > 0) 
        {
            uint treasuryAmt = outEthAmt.mul(gSellTreasuryBP).div(10000);
            treasuryAmtTotal = treasuryAmtTotal.add(treasuryAmt);
            user.transfer(outEthAmt.sub(treasuryAmt));
        } 
        else
        {
            user.transfer(outEthAmt);
        }
        
        emit SellToken(user, tokenAmt, outEthAmt);
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    
    modifier govOnly() 
    {
    	require(msg.sender == govAddr, "!gov");
    	_;
    }
    
    function govTransferAddr(address newAddr) external govOnly 
    {
    	require(newAddr != address(0), "!addr");
    	govAddr = newAddr;
    }
    
    function govOpenMarket() external govOnly
    {
        MARKET_OPEN_STAGE = 1;
    }

    function govSetTreasury(address newAddr) external govOnly
    {
    	require(newAddr != address(0), "!addr");
    	treasuryAddr = newAddr;
    }    
    
    function govSetBurn(uint transferBurnBP, uint sellBurnBP, uint sellTreasuryBP) external govOnly
    {
        require (transferBurnBP <= 60);
        require (sellBurnBP <= 60);
        require (sellTreasuryBP <= 30);
        require (sellTreasuryBP <= sellBurnBP);
        require (sellBurnBP.add(sellTreasuryBP) <= 60);
        
        gTransferBurnBP = transferBurnBP;
        gSellBurnBP = sellBurnBP;
        gSellTreasuryBP = sellTreasuryBP;
    }
    
    function govSetBurnForAddress(address addr, uint transferFromBurnBP, uint transferToBurnBP) external govOnly
    {
        // 0         ===> default BurnBP
        // 1 ~ 10000 ===> customized BurnBP
        // 10001     ===> zero BurnBP
        require (transferFromBurnBP <= 10001);
        require (transferToBurnBP <= 10001);
        
        gTransferFromBurnBP[addr] = transferFromBurnBP;
        gTransferToBurnBP[addr] = transferToBurnBP;
    }

    function govSetContractCheckLevel(uint buyLevel, uint sellLevel) external govOnly
    {
        gContractCheckBuyLevel = buyLevel;
        gContractCheckSellLevel = sellLevel;
    }
    function govSetContractWhiteList(address addr, uint state) external govOnly
    {
        gContractWhitelist[addr] = state;
    }
    
    function govSetBuyLimit(uint new_MARKET_BUY_ETH_LIMIT) external govOnly 
    {
        MARKET_BUY_ETH_LIMIT = new_MARKET_BUY_ETH_LIMIT;
    }

    function govSetWhitelistToken(address new_MARKET_WHITELIST_TOKEN, uint new_MARKET_WHITELIST_TOKEN_BP) external govOnly 
    {
        MARKET_WHITELIST_TOKEN = new_MARKET_WHITELIST_TOKEN;
        MARKET_WHITELIST_TOKEN_BP = new_MARKET_WHITELIST_TOKEN_BP;
    }
    
    function govSetWhitelistBaseAmt(uint new_MARKET_WHITELIST_BASE_AMT) external govOnly 
    {
        MARKET_WHITELIST_BASE_AMT = new_MARKET_WHITELIST_BASE_AMT;
    }    
    
    ////////////////////////////////////////////////////////////////////////////////

    modifier treasuryOnly() 
    {
    	require(msg.sender == treasuryAddr, "!treasury");
    	_;
    }    
    
    function treasurySend(uint amt) external treasuryOnly
    {
        require(amt <= treasuryAmtTotal);

        treasuryAmtTotal = treasuryAmtTotal.sub(amt);
        
        address payable _treasuryAddr = address(uint160(treasuryAddr));
        _treasuryAddr.transfer(amt);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"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":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmt","type":"uint256"}],"name":"BuyToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmt","type":"uint256"}],"name":"SellToken","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"},{"constant":true,"inputs":[],"name":"DEPLOYER","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_EthReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_TokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MARKET_BUY_ETH_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MARKET_OPEN_STAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MARKET_WHITELIST_BASE_AMT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MARKET_WHITELIST_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MARKET_WHITELIST_TOKEN_BP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"minTokenAmt","type":"uint256"},{"internalType":"uint256","name":"expireTimestamp","type":"uint256"}],"name":"buyToken","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gContractCheckBuyLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gContractCheckSellLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"gContractWhitelist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gSellBurnBP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gSellTreasuryBP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gTransferBurnBP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"gTransferFromBurnBP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"gTransferToBurnBP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEthReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"govAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"govOpenMarket","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"transferBurnBP","type":"uint256"},{"internalType":"uint256","name":"sellBurnBP","type":"uint256"},{"internalType":"uint256","name":"sellTreasuryBP","type":"uint256"}],"name":"govSetBurn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"transferFromBurnBP","type":"uint256"},{"internalType":"uint256","name":"transferToBurnBP","type":"uint256"}],"name":"govSetBurnForAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"new_MARKET_BUY_ETH_LIMIT","type":"uint256"}],"name":"govSetBuyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"buyLevel","type":"uint256"},{"internalType":"uint256","name":"sellLevel","type":"uint256"}],"name":"govSetContractCheckLevel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"state","type":"uint256"}],"name":"govSetContractWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"govSetTreasury","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"new_MARKET_WHITELIST_BASE_AMT","type":"uint256"}],"name":"govSetWhitelistBaseAmt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"new_MARKET_WHITELIST_TOKEN","type":"address"},{"internalType":"uint256","name":"new_MARKET_WHITELIST_TOKEN_BP","type":"uint256"}],"name":"govSetWhitelistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"govTransferAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"internalType":"uint256","name":"minEthAmt","type":"uint256"},{"internalType":"uint256","name":"expireTimestamp","type":"uint256"}],"name":"sellToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"treasuryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"treasuryAmtTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"treasurySend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405260028054610100600160a81b03191674d8d71629950ce53d7e9f94619b09058d9d9f5866001790556000600381815566038d7ea4c68000600455600580546001600160a01b0319169055620186a0600655678ac7230489e80000600755603c6008819055600955600a829055600d819055600e556012553480156200008857600080fd5b5060408051808201825260068082526513125455525160d21b602080840182815285518087019096529285528401528151919291601291620000ce9160009190620002ce565b508151620000e4906001906020850190620002ce565b506002805460ff191660ff92909216919091179081905561010090046001600160a01b031633141591506200016190505760108054336001600160a01b0319918216811790925560118054909116909117905562000161731111111111111111111111111111111111111111690472698b413b4320000062000167565b62000373565b6001600160a01b038216620001c3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620001df816015546200026c60201b62001c601790919060201c565b6015556001600160a01b0382166000908152601360209081526040909120546200021491839062001c606200026c821b17901c565b6001600160a01b03831660008181526013602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082820183811015620002c7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031157805160ff191683800117855562000341565b8280016001018555821562000341579182015b828111156200034157825182559160200191906001019062000324565b506200034f92915062000353565b5090565b6200037091905b808211156200034f57600081556001016200035a565b90565b61265d80620003836000396000f3fe6080604052600436106102725760003560e01c8063683f92871161014f578063c21d74fe116100c1578063d9b697741161007a578063d9b6977414610907578063dd62ed3e1461091c578063eb0ee93414610957578063f1d9f88b1461096c578063fa59e6d414610981578063ff71b4e51461099657610272565b8063c21d74fe14610814578063c83ce00a14610847578063ca392e0e14610871578063cac65b1d146108aa578063cb85ce67146108dd578063d222f1bc146108f257610272565b80638a9118c0116101135780638a9118c01461074e57806395d89b4114610763578063a457c2d714610778578063a9059cbb146107b1578063bf47f715146107ea578063c1b8411a146107ff57610272565b8063683f92871461064357806370a082311461067357806372223c6c146106a65780637cfd312d146106e557806380abb0551461071857610272565b806330d9a62a116101e85780633ad6bd34116101ac5780633ad6bd34146105745780633dae21aa1461058957806342edd8e01461059e5780634a427c0c146105d157806352c0686514610604578063580c85441461062e57610272565b806330d9a62a146104b5578063313ce567146104e6578063327ba06c1461051157806337e2cde914610526578063395093511461053b57610272565b806318160ddd1161023a57806318160ddd146103d65780631efbe895146103fd5780631f181d571461041257806323b872dd1461044857806324c0fb001461048b57806325653eca146104a057610272565b8063057466ea1461027757806306fdde031461029c578063095ea7b3146103265780630c278a8d146103735780631073b3751461039d575b600080fd5b61029a6004803603604081101561028d57600080fd5b50803590602001356109ab565b005b3480156102a857600080fd5b506102b1610ed5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102eb5781810151838201526020016102d3565b50505050905090810190601f1680156103185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033257600080fd5b5061035f6004803603604081101561034957600080fd5b506001600160a01b038135169060200135610f6b565b604080519115158252519081900360200190f35b34801561037f57600080fd5b5061029a6004803603602081101561039657600080fd5b5035610f89565b3480156103a957600080fd5b5061029a600480360360408110156103c057600080fd5b506001600160a01b038135169060200135610fd6565b3480156103e257600080fd5b506103eb611044565b60408051918252519081900360200190f35b34801561040957600080fd5b506103eb61104a565b34801561041e57600080fd5b5061029a6004803603606081101561043557600080fd5b5080359060208101359060400135611050565b34801561045457600080fd5b5061035f6004803603606081101561046b57600080fd5b506001600160a01b0381358116916020810135909116906040013561145c565b34801561049757600080fd5b506103eb6114e9565b3480156104ac57600080fd5b506103eb6114f7565b3480156104c157600080fd5b506104ca6114fd565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b506104fb61150c565b6040805160ff9092168252519081900360200190f35b34801561051d57600080fd5b506103eb611515565b34801561053257600080fd5b506103eb61151b565b34801561054757600080fd5b5061035f6004803603604081101561055e57600080fd5b506001600160a01b038135169060200135611521565b34801561058057600080fd5b5061029a611575565b34801561059557600080fd5b506103eb6115c4565b3480156105aa57600080fd5b5061029a600480360360208110156105c157600080fd5b50356001600160a01b03166115ca565b3480156105dd57600080fd5b506103eb600480360360208110156105f457600080fd5b50356001600160a01b0316611677565b34801561061057600080fd5b5061029a6004803603602081101561062757600080fd5b5035611689565b34801561063a57600080fd5b506103eb6116d6565b34801561064f57600080fd5b5061029a6004803603604081101561066657600080fd5b50803590602001356116dc565b34801561067f57600080fd5b506103eb6004803603602081101561069657600080fd5b50356001600160a01b031661172f565b3480156106b257600080fd5b5061029a600480360360608110156106c957600080fd5b506001600160a01b03813516906020810135906040013561174a565b3480156106f157600080fd5b5061029a6004803603602081101561070857600080fd5b50356001600160a01b03166117d8565b34801561072457600080fd5b5061029a6004803603606081101561073b57600080fd5b5080359060208101359060400135611885565b34801561075a57600080fd5b506103eb61192f565b34801561076f57600080fd5b506102b1611957565b34801561078457600080fd5b5061035f6004803603604081101561079b57600080fd5b506001600160a01b0381351690602001356119b7565b3480156107bd57600080fd5b5061035f600480360360408110156107d457600080fd5b506001600160a01b038135169060200135611a25565b3480156107f657600080fd5b506103eb611a39565b34801561080b57600080fd5b506104ca611a3f565b34801561082057600080fd5b506103eb6004803603602081101561083757600080fd5b50356001600160a01b0316611a53565b34801561085357600080fd5b5061029a6004803603602081101561086a57600080fd5b5035611a65565b34801561087d57600080fd5b5061029a6004803603604081101561089457600080fd5b506001600160a01b038135169060200135611b16565b3480156108b657600080fd5b506103eb600480360360208110156108cd57600080fd5b50356001600160a01b0316611b7a565b3480156108e957600080fd5b506104ca611b8c565b3480156108fe57600080fd5b506103eb611b9b565b34801561091357600080fd5b506103eb611ba1565b34801561092857600080fd5b506103eb6004803603604081101561093f57600080fd5b506001600160a01b0381358116916020013516611ba7565b34801561096357600080fd5b506104ca611bd2565b34801561097857600080fd5b506103eb611be1565b34801561098d57600080fd5b506103eb611c11565b3480156109a257600080fd5b506103eb611c1e565b336000818152600f602052604090205460021115610a6c576002600d54816109cf57fe5b0660011415610a1c576109e181611c24565b15610a1c576040805162461bcd60e51b815260206004820152600660248201526510b43ab6b0b760d11b604482015290519081900360640190fd5b6002600d5410610a6c576001600160a01b0381163214610a6c576040805162461bcd60e51b815260206004820152600660248201526510b43ab6b0b760d11b604482015290519081900360640190fd5b60006003541180610a8a57506010546001600160a01b038281169116145b610ac5576040805162461bcd60e51b8152602060048201526007602482015266085b585c9ad95d60ca1b604482015290519081900360640190fd5b60003411610b03576040805162461bcd60e51b81526020600480830191909152602482015263042cae8d60e31b604482015290519081900360640190fd5b60008311610b44576040805162461bcd60e51b815260206004820152600960248201526810b6b4b72a37b5b2b760b91b604482015290519081900360640190fd5b811580610b515750814211155b610b8c576040805162461bcd60e51b81526020600482015260076024820152662165787069726560c81b604482015290519081900360640190fd5b6004541580610b9d57506004543411155b610bda576040805162461bcd60e51b815260206004820152600960248201526808595d1a131a5b5a5d60ba1b604482015290519081900360640190fd5b601254600090610c0990610bfd6871d75ab9b9205000004763ffffffff611c6016565b9063ffffffff611cc116565b90506000610c1d823463ffffffff611cc116565b731111111111111111111111111111111111111111600090815260136020526000805160206125be83398151915254919250610c8284610c7660028204610c6a878763ffffffff611d0316565b9063ffffffff611c6016565b9063ffffffff611d5c16565b90506000610c96838363ffffffff611cc116565b905060008111610cd9576040805162461bcd60e51b815260206004820152600960248201526810b7baba2a37b5b2b760b91b604482015290519081900360640190fd5b87811015610d185760405162461bcd60e51b81526004018080602001828103825260268152602001806125de6026913960400191505060405180910390fd5b6000600654118015610d3457506005546001600160a01b031615155b15610e6a57600554604080516370a0823160e01b81526001600160a01b038981166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015610d8a57600080fd5b505afa158015610d9e573d6000803e3d6000fd5b505050506040513d6020811015610db457600080fd5b5051600654909150600090610dd89061271090610c7690859063ffffffff611d0316565b9050600754811015610de957506007545b6001600160a01b0388166000908152601360205260409020548190610e14908563ffffffff611c6016565b1115610e67576040805162461bcd60e51b815260206004820152601a60248201527f216e6565642d6d6f72652d77686974656c6973742d746f6b656e000000000000604482015290519081900360640190fd5b50505b610e897311111111111111111111111111111111111111118783611d9e565b6040805182815234602082015281516001600160a01b038916927ff6f342132c7de5e5a1e99c8efae544c94731f3ff093f5c3c97c6973d9415cdfb928290030190a25050505050505050565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f615780601f10610f3657610100808354040283529160200191610f61565b820191906000526020600020905b815481529060010190602001808311610f4457829003601f168201915b5050505050905090565b6000610f7f610f78611e60565b8484611e64565b5060015b92915050565b6010546001600160a01b03163314610fd1576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b600755565b6010546001600160a01b0316331461101e576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b039390931692909217909155600655565b60155490565b60075481565b336000818152600f6020526040902054600116611110576002600e548161107357fe5b06600114156110c05761108581611c24565b156110c0576040805162461bcd60e51b815260206004820152600660248201526510b43ab6b0b760d11b604482015290519081900360640190fd5b6002600e5410611110576001600160a01b0381163214611110576040805162461bcd60e51b815260206004820152600660248201526510b43ab6b0b760d11b604482015290519081900360640190fd5b6000841161114e576040805162461bcd60e51b815260206004820152600660248201526510ba37b5b2b760d11b604482015290519081900360640190fd5b6000831161118d576040805162461bcd60e51b8152602060048201526007602482015266042dad2dc8ae8d60cb1b604482015290519081900360640190fd5b81158061119a5750814211155b6111d5576040805162461bcd60e51b81526020600482015260076024820152662165787069726560c81b604482015290519081900360640190fd5b60006111f2612710610c7660095488611d0390919063ffffffff16565b90506111fe8282611f50565b6000611210868363ffffffff611cc116565b90506000611236601254610bfd476871d75ab9b920500000611c6090919063ffffffff16565b731111111111111111111111111111111111111111600090815260136020526000805160206125be83398151915254919250611278828563ffffffff611c6016565b9050600061129782610c7660028204610c6a888863ffffffff611d0316565b905060006112ab858363ffffffff611cc116565b9050600081116112ec576040805162461bcd60e51b8152602060048201526007602482015266042deeae88ae8d60cb1b604482015290519081900360640190fd5b8981101561132b5760405162461bcd60e51b81526004018080602001828103825260268152602001806125de6026913960400191505060405180910390fd5b61134a8873111111111111111111111111111111111111111188611d9e565b600a54156113d457600061136f612710610c76600a5485611d0390919063ffffffff16565b601254909150611385908263ffffffff611c6016565b6012556001600160a01b0389166108fc6113a5848463ffffffff611cc116565b6040518115909202916000818181858888f193505050501580156113cd573d6000803e3d6000fd5b505061140c565b6040516001600160a01b0389169082156108fc029083906000818181858888f1935050505015801561140a573d6000803e3d6000fd5b505b604080518c81526020810183905281516001600160a01b038b16927fa8ff15eb642b39da3ab82bb74a87b76cc3e1aef2b82b70bc2a35458386db29aa928290030190a25050505050505050505050565b6000611469848484612170565b6114df84611475611e60565b6114da8560405180606001604052806028815260200161250c602891396001600160a01b038a166000908152601460205260408120906114b3611e60565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61236116565b611e64565b5060019392505050565b690472698b413b4320000081565b60065481565b6011546001600160a01b031681565b60025460ff1690565b60045481565b600a5481565b6000610f7f61152e611e60565b846114da856014600061153f611e60565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611c6016565b6010546001600160a01b031633146115bd576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6001600355565b60035481565b6010546001600160a01b03163314611612576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6001600160a01b038116611655576040805162461bcd60e51b815260206004820152600560248201526410b0b2323960d91b604482015290519081900360640190fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600b6020526000908152604090205481565b6010546001600160a01b031633146116d1576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b600455565b600e5481565b6010546001600160a01b03163314611724576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b600d91909155600e55565b6001600160a01b031660009081526013602052604090205490565b6010546001600160a01b03163314611792576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6127118211156117a157600080fd5b6127118111156117b057600080fd5b6001600160a01b039092166000908152600b6020908152604080832093909355600c90522055565b6010546001600160a01b03163314611820576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6001600160a01b038116611863576040805162461bcd60e51b815260206004820152600560248201526410b0b2323960d91b604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b031633146118cd576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b603c8311156118db57600080fd5b603c8211156118e957600080fd5b601e8111156118f757600080fd5b8181111561190457600080fd5b603c611916838363ffffffff611c6016565b111561192157600080fd5b600892909255600955600a55565b60125460009061195290610bfd6871d75ab9b9205000004763ffffffff611c6016565b905090565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f615780601f10610f3657610100808354040283529160200191610f61565b6000610f7f6119c4611e60565b846114da8560405180606001604052806025815260200161260460259139601460006119ee611e60565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61236116565b6000610f7f611a32611e60565b8484612170565b60095481565b60025461010090046001600160a01b031681565b600f6020526000908152604090205481565b6011546001600160a01b03163314611ab0576040805162461bcd60e51b815260206004820152600960248201526821747265617375727960b81b604482015290519081900360640190fd5b601254811115611abf57600080fd5b601254611ad2908263ffffffff611cc116565b6012556011546040516001600160a01b0390911690819083156108fc029084906000818181858888f19350505050158015611b11573d6000803e3d6000fd5b505050565b6010546001600160a01b03163314611b5e576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6001600160a01b039091166000908152600f6020526040902055565b600c6020526000908152604090205481565b6010546001600160a01b031681565b60085481565b600d5481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b6005546001600160a01b031681565b73111111111111111111111111111111111111111160005260136020526000805160206125be8339815191525490565b6871d75ab9b92050000081565b60125481565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590611c585750808214155b949350505050565b600082820183811015611cba576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611cba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612361565b600082611d1257506000610f83565b82820282848281611d1f57fe5b0414611cba5760405162461bcd60e51b81526004018080602001828103825260218152602001806124eb6021913960400191505060405180910390fd5b6000611cba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123f8565b611de1816040518060600160405280602681526020016124c5602691396001600160a01b038616600090815260136020526040902054919063ffffffff61236116565b6001600160a01b038085166000908152601360205260408082209390935590841681522054611e16908263ffffffff611c6016565b6001600160a01b03808416600081815260136020908152604091829020949094558051858152905191939287169260008051602061253483398151915292918290030190a3505050565b3390565b6001600160a01b038316611ea95760405162461bcd60e51b815260040180806020018281038252602481526020018061259a6024913960400191505060405180910390fd5b6001600160a01b038216611eee5760405162461bcd60e51b81526004018080602001828103825260228152602001806124a36022913960400191505060405180910390fd5b6001600160a01b03808416600081815260146020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038216611f955760405162461bcd60e51b81526004018080602001828103825260218152602001806125546021913960400191505060405180910390fd5b80611f9f5761216c565b6001600160a01b038216600090815260136020526040902054611fc15761216c565b6001600160a01b0382167311111111111111111111111111111111111111111461216c5761202881604051806060016040528060228152602001612481602291396001600160a01b038516600090815260136020526040902054919063ffffffff61236116565b6001600160a01b038316600081815260136020908152604080832094909455835185815293519193600080516020612534833981519152929081900390910190a373111111111111111111111111111111111111111160005260136020526000805160206125be833981519152546015548110156121545760006120ca6120ba83601554611cc190919063ffffffff16565b610c76848663ffffffff611d0316565b90506120dc828263ffffffff611cc116565b7311111111111111111111111111111111111111116000818152601360209081526000805160206125be83398151915293909355604080518581529051919360008051602061253483398151915292918290030190a361214b81610bfd85601554611cc190919063ffffffff16565b60155550611b11565b601554612167908363ffffffff611cc116565b601555505b5050565b6001600160a01b0383166121b55760405162461bcd60e51b81526004018080602001828103825260258152602001806125756025913960400191505060405180910390fd5b6001600160a01b0382166121fa5760405162461bcd60e51b815260040180806020018281038252602381526020018061245e6023913960400191505060405180910390fd5b61223d816040518060600160405280602681526020016124c5602691396001600160a01b038616600090815260136020526040902054919063ffffffff61236116565b6001600160a01b038085166000908152601360205260408082209390935590841681522054612272908263ffffffff611c6016565b6001600160a01b03808416600081815260136020908152604091829020949094558051858152905191939287169260008051602061253483398151915292918290030190a36001600160a01b0383166000908152600b6020526040902054806122de57506008546122ec565b6127108111156122ec575060005b6001600160a01b0383166000908152600c6020526040902054806123135750600854612321565b612710811115612321575060005b818181111561232d5750805b801561235957600061234b612710610c76878563ffffffff611d0316565b90506123578682611f50565b505b505050505050565b600081848411156123f05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123b557818101518382015260200161239d565b50505050905090810190601f1680156123e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836124475760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123b557818101518382015260200161239d565b50600083858161245357fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373b80c4db41d74a7d9fa7e40985cc7e838aad3e70f26bd87a5ba27862c558955624b697474656e537761703a20494e53554646494349454e545f4f55545055545f414d4f554e5445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158209f02fe762af55ad2d1716063cbaffebb244b86d4b2b16cc1ecde087e6f3492a464736f6c63430005110032

Deployed Bytecode

0x6080604052600436106102725760003560e01c8063683f92871161014f578063c21d74fe116100c1578063d9b697741161007a578063d9b6977414610907578063dd62ed3e1461091c578063eb0ee93414610957578063f1d9f88b1461096c578063fa59e6d414610981578063ff71b4e51461099657610272565b8063c21d74fe14610814578063c83ce00a14610847578063ca392e0e14610871578063cac65b1d146108aa578063cb85ce67146108dd578063d222f1bc146108f257610272565b80638a9118c0116101135780638a9118c01461074e57806395d89b4114610763578063a457c2d714610778578063a9059cbb146107b1578063bf47f715146107ea578063c1b8411a146107ff57610272565b8063683f92871461064357806370a082311461067357806372223c6c146106a65780637cfd312d146106e557806380abb0551461071857610272565b806330d9a62a116101e85780633ad6bd34116101ac5780633ad6bd34146105745780633dae21aa1461058957806342edd8e01461059e5780634a427c0c146105d157806352c0686514610604578063580c85441461062e57610272565b806330d9a62a146104b5578063313ce567146104e6578063327ba06c1461051157806337e2cde914610526578063395093511461053b57610272565b806318160ddd1161023a57806318160ddd146103d65780631efbe895146103fd5780631f181d571461041257806323b872dd1461044857806324c0fb001461048b57806325653eca146104a057610272565b8063057466ea1461027757806306fdde031461029c578063095ea7b3146103265780630c278a8d146103735780631073b3751461039d575b600080fd5b61029a6004803603604081101561028d57600080fd5b50803590602001356109ab565b005b3480156102a857600080fd5b506102b1610ed5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102eb5781810151838201526020016102d3565b50505050905090810190601f1680156103185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033257600080fd5b5061035f6004803603604081101561034957600080fd5b506001600160a01b038135169060200135610f6b565b604080519115158252519081900360200190f35b34801561037f57600080fd5b5061029a6004803603602081101561039657600080fd5b5035610f89565b3480156103a957600080fd5b5061029a600480360360408110156103c057600080fd5b506001600160a01b038135169060200135610fd6565b3480156103e257600080fd5b506103eb611044565b60408051918252519081900360200190f35b34801561040957600080fd5b506103eb61104a565b34801561041e57600080fd5b5061029a6004803603606081101561043557600080fd5b5080359060208101359060400135611050565b34801561045457600080fd5b5061035f6004803603606081101561046b57600080fd5b506001600160a01b0381358116916020810135909116906040013561145c565b34801561049757600080fd5b506103eb6114e9565b3480156104ac57600080fd5b506103eb6114f7565b3480156104c157600080fd5b506104ca6114fd565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b506104fb61150c565b6040805160ff9092168252519081900360200190f35b34801561051d57600080fd5b506103eb611515565b34801561053257600080fd5b506103eb61151b565b34801561054757600080fd5b5061035f6004803603604081101561055e57600080fd5b506001600160a01b038135169060200135611521565b34801561058057600080fd5b5061029a611575565b34801561059557600080fd5b506103eb6115c4565b3480156105aa57600080fd5b5061029a600480360360208110156105c157600080fd5b50356001600160a01b03166115ca565b3480156105dd57600080fd5b506103eb600480360360208110156105f457600080fd5b50356001600160a01b0316611677565b34801561061057600080fd5b5061029a6004803603602081101561062757600080fd5b5035611689565b34801561063a57600080fd5b506103eb6116d6565b34801561064f57600080fd5b5061029a6004803603604081101561066657600080fd5b50803590602001356116dc565b34801561067f57600080fd5b506103eb6004803603602081101561069657600080fd5b50356001600160a01b031661172f565b3480156106b257600080fd5b5061029a600480360360608110156106c957600080fd5b506001600160a01b03813516906020810135906040013561174a565b3480156106f157600080fd5b5061029a6004803603602081101561070857600080fd5b50356001600160a01b03166117d8565b34801561072457600080fd5b5061029a6004803603606081101561073b57600080fd5b5080359060208101359060400135611885565b34801561075a57600080fd5b506103eb61192f565b34801561076f57600080fd5b506102b1611957565b34801561078457600080fd5b5061035f6004803603604081101561079b57600080fd5b506001600160a01b0381351690602001356119b7565b3480156107bd57600080fd5b5061035f600480360360408110156107d457600080fd5b506001600160a01b038135169060200135611a25565b3480156107f657600080fd5b506103eb611a39565b34801561080b57600080fd5b506104ca611a3f565b34801561082057600080fd5b506103eb6004803603602081101561083757600080fd5b50356001600160a01b0316611a53565b34801561085357600080fd5b5061029a6004803603602081101561086a57600080fd5b5035611a65565b34801561087d57600080fd5b5061029a6004803603604081101561089457600080fd5b506001600160a01b038135169060200135611b16565b3480156108b657600080fd5b506103eb600480360360208110156108cd57600080fd5b50356001600160a01b0316611b7a565b3480156108e957600080fd5b506104ca611b8c565b3480156108fe57600080fd5b506103eb611b9b565b34801561091357600080fd5b506103eb611ba1565b34801561092857600080fd5b506103eb6004803603604081101561093f57600080fd5b506001600160a01b0381358116916020013516611ba7565b34801561096357600080fd5b506104ca611bd2565b34801561097857600080fd5b506103eb611be1565b34801561098d57600080fd5b506103eb611c11565b3480156109a257600080fd5b506103eb611c1e565b336000818152600f602052604090205460021115610a6c576002600d54816109cf57fe5b0660011415610a1c576109e181611c24565b15610a1c576040805162461bcd60e51b815260206004820152600660248201526510b43ab6b0b760d11b604482015290519081900360640190fd5b6002600d5410610a6c576001600160a01b0381163214610a6c576040805162461bcd60e51b815260206004820152600660248201526510b43ab6b0b760d11b604482015290519081900360640190fd5b60006003541180610a8a57506010546001600160a01b038281169116145b610ac5576040805162461bcd60e51b8152602060048201526007602482015266085b585c9ad95d60ca1b604482015290519081900360640190fd5b60003411610b03576040805162461bcd60e51b81526020600480830191909152602482015263042cae8d60e31b604482015290519081900360640190fd5b60008311610b44576040805162461bcd60e51b815260206004820152600960248201526810b6b4b72a37b5b2b760b91b604482015290519081900360640190fd5b811580610b515750814211155b610b8c576040805162461bcd60e51b81526020600482015260076024820152662165787069726560c81b604482015290519081900360640190fd5b6004541580610b9d57506004543411155b610bda576040805162461bcd60e51b815260206004820152600960248201526808595d1a131a5b5a5d60ba1b604482015290519081900360640190fd5b601254600090610c0990610bfd6871d75ab9b9205000004763ffffffff611c6016565b9063ffffffff611cc116565b90506000610c1d823463ffffffff611cc116565b731111111111111111111111111111111111111111600090815260136020526000805160206125be83398151915254919250610c8284610c7660028204610c6a878763ffffffff611d0316565b9063ffffffff611c6016565b9063ffffffff611d5c16565b90506000610c96838363ffffffff611cc116565b905060008111610cd9576040805162461bcd60e51b815260206004820152600960248201526810b7baba2a37b5b2b760b91b604482015290519081900360640190fd5b87811015610d185760405162461bcd60e51b81526004018080602001828103825260268152602001806125de6026913960400191505060405180910390fd5b6000600654118015610d3457506005546001600160a01b031615155b15610e6a57600554604080516370a0823160e01b81526001600160a01b038981166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015610d8a57600080fd5b505afa158015610d9e573d6000803e3d6000fd5b505050506040513d6020811015610db457600080fd5b5051600654909150600090610dd89061271090610c7690859063ffffffff611d0316565b9050600754811015610de957506007545b6001600160a01b0388166000908152601360205260409020548190610e14908563ffffffff611c6016565b1115610e67576040805162461bcd60e51b815260206004820152601a60248201527f216e6565642d6d6f72652d77686974656c6973742d746f6b656e000000000000604482015290519081900360640190fd5b50505b610e897311111111111111111111111111111111111111118783611d9e565b6040805182815234602082015281516001600160a01b038916927ff6f342132c7de5e5a1e99c8efae544c94731f3ff093f5c3c97c6973d9415cdfb928290030190a25050505050505050565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f615780601f10610f3657610100808354040283529160200191610f61565b820191906000526020600020905b815481529060010190602001808311610f4457829003601f168201915b5050505050905090565b6000610f7f610f78611e60565b8484611e64565b5060015b92915050565b6010546001600160a01b03163314610fd1576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b600755565b6010546001600160a01b0316331461101e576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b039390931692909217909155600655565b60155490565b60075481565b336000818152600f6020526040902054600116611110576002600e548161107357fe5b06600114156110c05761108581611c24565b156110c0576040805162461bcd60e51b815260206004820152600660248201526510b43ab6b0b760d11b604482015290519081900360640190fd5b6002600e5410611110576001600160a01b0381163214611110576040805162461bcd60e51b815260206004820152600660248201526510b43ab6b0b760d11b604482015290519081900360640190fd5b6000841161114e576040805162461bcd60e51b815260206004820152600660248201526510ba37b5b2b760d11b604482015290519081900360640190fd5b6000831161118d576040805162461bcd60e51b8152602060048201526007602482015266042dad2dc8ae8d60cb1b604482015290519081900360640190fd5b81158061119a5750814211155b6111d5576040805162461bcd60e51b81526020600482015260076024820152662165787069726560c81b604482015290519081900360640190fd5b60006111f2612710610c7660095488611d0390919063ffffffff16565b90506111fe8282611f50565b6000611210868363ffffffff611cc116565b90506000611236601254610bfd476871d75ab9b920500000611c6090919063ffffffff16565b731111111111111111111111111111111111111111600090815260136020526000805160206125be83398151915254919250611278828563ffffffff611c6016565b9050600061129782610c7660028204610c6a888863ffffffff611d0316565b905060006112ab858363ffffffff611cc116565b9050600081116112ec576040805162461bcd60e51b8152602060048201526007602482015266042deeae88ae8d60cb1b604482015290519081900360640190fd5b8981101561132b5760405162461bcd60e51b81526004018080602001828103825260268152602001806125de6026913960400191505060405180910390fd5b61134a8873111111111111111111111111111111111111111188611d9e565b600a54156113d457600061136f612710610c76600a5485611d0390919063ffffffff16565b601254909150611385908263ffffffff611c6016565b6012556001600160a01b0389166108fc6113a5848463ffffffff611cc116565b6040518115909202916000818181858888f193505050501580156113cd573d6000803e3d6000fd5b505061140c565b6040516001600160a01b0389169082156108fc029083906000818181858888f1935050505015801561140a573d6000803e3d6000fd5b505b604080518c81526020810183905281516001600160a01b038b16927fa8ff15eb642b39da3ab82bb74a87b76cc3e1aef2b82b70bc2a35458386db29aa928290030190a25050505050505050505050565b6000611469848484612170565b6114df84611475611e60565b6114da8560405180606001604052806028815260200161250c602891396001600160a01b038a166000908152601460205260408120906114b3611e60565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61236116565b611e64565b5060019392505050565b690472698b413b4320000081565b60065481565b6011546001600160a01b031681565b60025460ff1690565b60045481565b600a5481565b6000610f7f61152e611e60565b846114da856014600061153f611e60565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611c6016565b6010546001600160a01b031633146115bd576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6001600355565b60035481565b6010546001600160a01b03163314611612576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6001600160a01b038116611655576040805162461bcd60e51b815260206004820152600560248201526410b0b2323960d91b604482015290519081900360640190fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600b6020526000908152604090205481565b6010546001600160a01b031633146116d1576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b600455565b600e5481565b6010546001600160a01b03163314611724576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b600d91909155600e55565b6001600160a01b031660009081526013602052604090205490565b6010546001600160a01b03163314611792576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6127118211156117a157600080fd5b6127118111156117b057600080fd5b6001600160a01b039092166000908152600b6020908152604080832093909355600c90522055565b6010546001600160a01b03163314611820576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6001600160a01b038116611863576040805162461bcd60e51b815260206004820152600560248201526410b0b2323960d91b604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b031633146118cd576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b603c8311156118db57600080fd5b603c8211156118e957600080fd5b601e8111156118f757600080fd5b8181111561190457600080fd5b603c611916838363ffffffff611c6016565b111561192157600080fd5b600892909255600955600a55565b60125460009061195290610bfd6871d75ab9b9205000004763ffffffff611c6016565b905090565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f615780601f10610f3657610100808354040283529160200191610f61565b6000610f7f6119c4611e60565b846114da8560405180606001604052806025815260200161260460259139601460006119ee611e60565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61236116565b6000610f7f611a32611e60565b8484612170565b60095481565b60025461010090046001600160a01b031681565b600f6020526000908152604090205481565b6011546001600160a01b03163314611ab0576040805162461bcd60e51b815260206004820152600960248201526821747265617375727960b81b604482015290519081900360640190fd5b601254811115611abf57600080fd5b601254611ad2908263ffffffff611cc116565b6012556011546040516001600160a01b0390911690819083156108fc029084906000818181858888f19350505050158015611b11573d6000803e3d6000fd5b505050565b6010546001600160a01b03163314611b5e576040805162461bcd60e51b8152602060048083019190915260248201526310b3b7bb60e11b604482015290519081900360640190fd5b6001600160a01b039091166000908152600f6020526040902055565b600c6020526000908152604090205481565b6010546001600160a01b031681565b60085481565b600d5481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b6005546001600160a01b031681565b73111111111111111111111111111111111111111160005260136020526000805160206125be8339815191525490565b6871d75ab9b92050000081565b60125481565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590611c585750808214155b949350505050565b600082820183811015611cba576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611cba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612361565b600082611d1257506000610f83565b82820282848281611d1f57fe5b0414611cba5760405162461bcd60e51b81526004018080602001828103825260218152602001806124eb6021913960400191505060405180910390fd5b6000611cba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123f8565b611de1816040518060600160405280602681526020016124c5602691396001600160a01b038616600090815260136020526040902054919063ffffffff61236116565b6001600160a01b038085166000908152601360205260408082209390935590841681522054611e16908263ffffffff611c6016565b6001600160a01b03808416600081815260136020908152604091829020949094558051858152905191939287169260008051602061253483398151915292918290030190a3505050565b3390565b6001600160a01b038316611ea95760405162461bcd60e51b815260040180806020018281038252602481526020018061259a6024913960400191505060405180910390fd5b6001600160a01b038216611eee5760405162461bcd60e51b81526004018080602001828103825260228152602001806124a36022913960400191505060405180910390fd5b6001600160a01b03808416600081815260146020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038216611f955760405162461bcd60e51b81526004018080602001828103825260218152602001806125546021913960400191505060405180910390fd5b80611f9f5761216c565b6001600160a01b038216600090815260136020526040902054611fc15761216c565b6001600160a01b0382167311111111111111111111111111111111111111111461216c5761202881604051806060016040528060228152602001612481602291396001600160a01b038516600090815260136020526040902054919063ffffffff61236116565b6001600160a01b038316600081815260136020908152604080832094909455835185815293519193600080516020612534833981519152929081900390910190a373111111111111111111111111111111111111111160005260136020526000805160206125be833981519152546015548110156121545760006120ca6120ba83601554611cc190919063ffffffff16565b610c76848663ffffffff611d0316565b90506120dc828263ffffffff611cc116565b7311111111111111111111111111111111111111116000818152601360209081526000805160206125be83398151915293909355604080518581529051919360008051602061253483398151915292918290030190a361214b81610bfd85601554611cc190919063ffffffff16565b60155550611b11565b601554612167908363ffffffff611cc116565b601555505b5050565b6001600160a01b0383166121b55760405162461bcd60e51b81526004018080602001828103825260258152602001806125756025913960400191505060405180910390fd5b6001600160a01b0382166121fa5760405162461bcd60e51b815260040180806020018281038252602381526020018061245e6023913960400191505060405180910390fd5b61223d816040518060600160405280602681526020016124c5602691396001600160a01b038616600090815260136020526040902054919063ffffffff61236116565b6001600160a01b038085166000908152601360205260408082209390935590841681522054612272908263ffffffff611c6016565b6001600160a01b03808416600081815260136020908152604091829020949094558051858152905191939287169260008051602061253483398151915292918290030190a36001600160a01b0383166000908152600b6020526040902054806122de57506008546122ec565b6127108111156122ec575060005b6001600160a01b0383166000908152600c6020526040902054806123135750600854612321565b612710811115612321575060005b818181111561232d5750805b801561235957600061234b612710610c76878563ffffffff611d0316565b90506123578682611f50565b505b505050505050565b600081848411156123f05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123b557818101518382015260200161239d565b50505050905090810190601f1680156123e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836124475760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123b557818101518382015260200161239d565b50600083858161245357fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373b80c4db41d74a7d9fa7e40985cc7e838aad3e70f26bd87a5ba27862c558955624b697474656e537761703a20494e53554646494349454e545f4f55545055545f414d4f554e5445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158209f02fe762af55ad2d1716063cbaffebb244b86d4b2b16cc1ecde087e6f3492a464736f6c63430005110032

Deployed Bytecode Sourcemap

2555:16733:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11816:2363;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11816:2363:0;;;;;;;:::i;:::-;;2019:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2019:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2019:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6579:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6579:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6579:149:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18607:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18607:167:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18607:167:0;;:::i;18332:263::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18332:263:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18332:263:0;;;;;;;;:::i;6074:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6074:88:0;;;:::i;:::-;;;;;;;;;;;;;;;;3296:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3296:55:0;;;:::i;14191:2087::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14191:2087:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14191:2087:0;;;;;;;;;;;;:::i;6734:301::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6734:301:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6734:301:0;;;;;;;;;;;;;;;;;:::i;2738:62::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2738:62:0;;;:::i;3169:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:50:0;;;:::i;5209:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5209:27:0;;;:::i;:::-;;;;-1:-1:-1;;;;;5209:27:0;;;;;;;;;;;;;;2201:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2201:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3010:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3010:52:0;;;:::i;3556:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3556:31:0;;;:::i;7041:207::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7041:207:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7041:207:0;;;;;;;;:::i;16639:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16639:87:0;;;:::i;2941:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2941:33:0;;;:::i;16482:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16482:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16482:145:0;-1:-1:-1;;;;;16482:145:0;;:::i;3642:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3642:52:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3642:52:0;-1:-1:-1;;;;;3642:52:0;;:::i;18180:144::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18180:144:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18180:144:0;;:::i;3950:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3950:39:0;;;:::i;17845:185::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17845:185:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17845:185:0;;;;;;;:::i;6168:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6168:107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:107:0;-1:-1:-1;;;;;6168:107:0;;:::i;17375:462::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17375:462:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17375:462:0;;;;;;;;;;;;;:::i;16734:148::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16734:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16734:148:0;-1:-1:-1;;;;;16734:148:0;;:::i;16898:465::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16898:465:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16898:465:0;;;;;;;;;;;;:::i;11399:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11399:145:0;;;:::i;2108:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2108:87:0;;;:::i;7254:258::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7254:258:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7254:258:0;;;;;;;;:::i;6281:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6281:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6281:155:0;;;;;;;;:::i;3521:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3521:28:0;;;:::i;2597:68::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2597:68:0;;;:::i;4051:51::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4051:51:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4051:51:0;-1:-1:-1;;;;;4051:51:0;;:::i;18997:288::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18997:288:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18997:288:0;;:::i;18036:132::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18036:132:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18036:132:0;;;;;;;;:::i;3701:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3701:50:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3701:50:0;-1:-1:-1;;;;;3701:50:0;;:::i;5174:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5174:22:0;;;:::i;3482:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3482:32:0;;;:::i;3856:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3856:38:0;;;:::i;6442:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6442:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6442:131:0;;;;;;;;;;:::i;3112:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3112:50:0;;;:::i;11552:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11552:107:0;;;:::i;2672:59::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2672:59:0;;;:::i;5243:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5243:32:0;;;:::i;11816:2363::-;11923:10;11908:12;11950:24;;;:18;:24;;;;;;11977:1;-1:-1:-1;11946:382:0;;;12086:1;12061:22;;:26;;;;;;12091:1;12061:31;12057:73;;;12103:16;12114:4;12103:10;:16::i;:::-;12102:17;12094:36;;;;;-1:-1:-1;;;12094:36:0;;;;;;;;;;;;-1:-1:-1;;;12094:36:0;;;;;;;;;;;;;;;12224:1;12198:22;;:27;12194:69;;-1:-1:-1;;;;;12235:17:0;;12243:9;12235:17;12227:36;;;;;-1:-1:-1;;;12227:36:0;;;;;;;;;;;;-1:-1:-1;;;12227:36:0;;;;;;;;;;;;;;;12370:1;12350:17;;:21;12349:44;;;-1:-1:-1;12385:7:0;;-1:-1:-1;;;;;12377:15:0;;;12385:7;;12377:15;12349:44;12340:65;;;;;-1:-1:-1;;;12340:65:0;;;;;;;;;;;;-1:-1:-1;;;12340:65:0;;;;;;;;;;;;;;;12485:1;12473:9;:13;12464:31;;;;;-1:-1:-1;;;12464:31:0;;;;;;;;;;;;;;;-1:-1:-1;;;12464:31:0;;;;;;;;;;;;;;;12529:1;12515:11;:15;12506:38;;;;;-1:-1:-1;;;12506:38:0;;;;;;;;;;;;-1:-1:-1;;;12506:38:0;;;;;;;;;;;;;;;12565:20;;;12564:62;;;12610:15;12591;:34;;12564:62;12555:83;;;;;-1:-1:-1;;;12555:83:0;;;;;;;;;;;;-1:-1:-1;;;12555:83:0;;;;;;;;;;;;;;;12659:20;;:25;;12658:66;;;12703:20;;12690:9;:33;;12658:66;12649:89;;;;;-1:-1:-1;;;12649:89:0;;;;;;;;;;;;-1:-1:-1;;;12649:89:0;;;;;;;;;;;;;;;12930:16;;12859:18;;12880:67;;:45;2714:17;12903:21;12880:45;:22;:45;:::i;:::-;:49;:67;:49;:67;:::i;:::-;12859:88;-1:-1:-1;12958:18:0;12979:28;12859:88;12997:9;12979:28;:17;:28;:::i;:::-;5119:42;13020:20;13043:27;;;:9;:27;;-1:-1:-1;;;;;;;;;;;13043:27:0;12958:49;;-1:-1:-1;13104:78:0;13168:13;13105:57;13160:1;13168:13;13144:17;13105:34;:13;13123:15;13105:34;:17;:34;:::i;:::-;:38;:57;:38;:57;:::i;:::-;13104:63;:78;:63;:78;:::i;:::-;13081:101;-1:-1:-1;13203:16:0;13222:36;:15;13081:101;13222:36;:19;:36;:::i;:::-;13203:55;;13292:1;13278:11;:15;13269:38;;;;;-1:-1:-1;;;13269:38:0;;;;;;;;;;;;-1:-1:-1;;;13269:38:0;;;;;;;;;;;;;;;13342:11;13327;:26;;13318:78;;;;-1:-1:-1;;;13318:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13450:1;13422:25;;:29;13421:73;;;;-1:-1:-1;13457:22:0;;-1:-1:-1;;;;;13457:22:0;:36;;13421:73;13417:531;;;13553:22;;13546:46;;;-1:-1:-1;;;13546:46:0;;-1:-1:-1;;;;;13546:46:0;;;;;;;;;13521:22;;13553;;;;;13546:40;;:46;;;;;;;;;;;;;;;13553:22;13546:46;;;5:2:-1;;;;30:1;27;20:12;5:2;13546:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13546:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13546:46:0;13645:25;;13546:46;;-1:-1:-1;13607:13:0;;13623:59;;13676:5;;13623:48;;13546:46;;13623:48;:21;:48;:::i;:59::-;13607:75;;13726:25;;13715:8;:36;13711:113;;;-1:-1:-1;13783:25:0;;13711:113;-1:-1:-1;;;;;13861:15:0;;;;;;:9;:15;;;;;;13897:8;;13861:32;;13881:11;13861:32;:19;:32;:::i;:::-;:44;;13852:84;;;;;-1:-1:-1;;;13852:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13417:531;;;13960:55;5119:42;13997:4;14003:11;13960:18;:55::i;:::-;14133:38;;;;;;14161:9;14133:38;;;;;;-1:-1:-1;;;;;14133:38:0;;;;;;;;;;;11816:2363;;;;;;;;:::o;2019:83::-;2089:5;2082:12;;;;;;;;-1:-1:-1;;2082:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:13;;2082:12;;2089:5;;2082:12;;2089:5;2082:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2019:83;:::o;6579:149::-;6642:4;6659:39;6668:12;:10;:12::i;:::-;6682:7;6691:6;6659:8;:39::i;:::-;-1:-1:-1;6716:4:0;6579:149;;;;;:::o;18607:167::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;18709:25;:57;18607:167::o;18332:263::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;18468:22;:51;;-1:-1:-1;;;;;;18468:51:0;-1:-1:-1;;;;;18468:51:0;;;;;;;;;;;18530:25;:57;18332:263::o;6074:88::-;6142:12;;6074:88;:::o;3296:55::-;;;;:::o;14191:2087::-;14312:10;14289:20;14339:24;;;:18;:24;;;;;;:28;;14335:389;;14481:1;14455:23;;:27;;;;;;14486:1;14455:32;14451:74;;;14498:16;14509:4;14498:10;:16::i;:::-;14497:17;14489:36;;;;;-1:-1:-1;;;14489:36:0;;;;;;;;;;;;-1:-1:-1;;;14489:36:0;;;;;;;;;;;;;;;14620:1;14593:23;;:28;14589:70;;-1:-1:-1;;;;;14631:17:0;;14639:9;14631:17;14623:36;;;;;-1:-1:-1;;;14623:36:0;;;;;;;;;;;;-1:-1:-1;;;14623:36:0;;;;;;;;;;;;;;;14756:1;14745:8;:12;14736:32;;;;;-1:-1:-1;;;14736:32:0;;;;;;;;;;;;-1:-1:-1;;;14736:32:0;;;;;;;;;;;;;;;14800:1;14788:9;:13;14779:34;;;;;-1:-1:-1;;;14779:34:0;;;;;;;;;;;;-1:-1:-1;;;14779:34:0;;;;;;;;;;;;;;;14834:20;;;14833:62;;;14879:15;14860;:34;;14833:62;14824:83;;;;;-1:-1:-1;;;14824:83:0;;;;;;;;;;;;-1:-1:-1;;;14824:83:0;;;;;;;;;;;;;;;14928:12;14943:36;14973:5;14943:25;14956:11;;14943:8;:12;;:25;;;;:::i;:36::-;14928:51;;14990:20;14996:4;15002:7;14990:5;:20::i;:::-;15021:22;15046:21;:8;15059:7;15046:21;:12;:21;:::i;:::-;15021:46;;15172:18;15193:67;15243:16;;15193:45;15216:21;2714:17;15193:22;;:45;;;;:::i;:67::-;5119:42;15271:20;15294:27;;;:9;:27;;-1:-1:-1;;;;;;;;;;;15294:27:0;15172:88;;-1:-1:-1;15357:38:0;15294:27;15377:17;15357:38;:19;:38;:::i;:::-;15334:61;-1:-1:-1;15406:18:0;15427:82;15334:61;15428:59;15485:1;15334:61;15467:19;15428:34;:13;15446:15;15428:34;:17;:34;:::i;15427:82::-;15406:103;-1:-1:-1;15530:14:0;15547:32;:13;15406:103;15547:32;:17;:32;:::i;:::-;15530:49;;15611:1;15599:9;:13;15590:34;;;;;-1:-1:-1;;;15590:34:0;;;;;;;;;;;;-1:-1:-1;;;15590:34:0;;;;;;;;;;;;;;;15657:9;15644;:22;;15635:74;;;;-1:-1:-1;;;15635:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15722:61;15741:4;5119:42;15765:17;15722:18;:61::i;:::-;15892:15;;:19;15888:321;;15938:16;15957:41;15992:5;15957:30;15971:15;;15957:9;:13;;:30;;;;:::i;:41::-;16032:16;;15938:60;;-1:-1:-1;16032:33:0;;15938:60;16032:33;:20;:33;:::i;:::-;16013:16;:52;-1:-1:-1;;;;;16080:13:0;;:41;16094:26;:9;16108:11;16094:26;:13;:26;:::i;:::-;16080:41;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16080:41:0;15888:321;;;;16173:24;;-1:-1:-1;;;;;16173:13:0;;;:24;;;;;16187:9;;16173:24;;;;16187:9;16173:13;:24;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16173:24:0;15888:321;16234:36;;;;;;;;;;;;;;-1:-1:-1;;;;;16234:36:0;;;;;;;;;;;14191:2087;;;;;;;;;;;:::o;6734:301::-;6820:4;6837:36;6847:6;6855:9;6866:6;6837:9;:36::i;:::-;6884:121;6893:6;6901:12;:10;:12::i;:::-;6915:89;6953:6;6915:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6915:19:0;;;;;;:11;:19;;;;;;6935:12;:10;:12::i;:::-;-1:-1:-1;;;;;6915:33:0;;;;;;;;;;;;-1:-1:-1;6915:33:0;;;:89;;:37;:89;:::i;:::-;6884:8;:121::i;:::-;-1:-1:-1;7023:4:0;6734:301;;;;;:::o;2738:62::-;2782:18;2738:62;:::o;3169:50::-;;;;:::o;5209:27::-;;;-1:-1:-1;;;;;5209:27:0;;:::o;2201:83::-;2267:9;;;;2201:83;:::o;3010:52::-;;;;:::o;3556:31::-;;;;:::o;7041:207::-;7118:4;7135:83;7144:12;:10;:12::i;:::-;7158:7;7167:50;7206:10;7167:11;:25;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7167:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;7167:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;16639:87::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;16717:1;16697:17;:21;16639:87::o;2941:33::-;;;;:::o;16482:145::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16563:21:0;;16555:39;;;;;-1:-1:-1;;;16555:39:0;;;;;;;;;;;;-1:-1:-1;;;16555:39:0;;;;;;;;;;;;;;;16602:7;:17;;-1:-1:-1;;;;;;16602:17:0;-1:-1:-1;;;;;16602:17:0;;;;;;;;;;16482:145::o;3642:52::-;;;;;;;;;;;;;:::o;18180:144::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;18269:20;:47;18180:144::o;3950:39::-;;;;:::o;17845:185::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;17943:22;:33;;;;17987:23;:35;17845:185::o;6168:107::-;-1:-1:-1;;;;;6249:18:0;6225:4;6249:18;;;:9;:18;;;;;;;6168:107::o;17375:462::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;17657:5;17635:18;:27;;17626:37;;;;;;17703:5;17683:16;:25;;17674:35;;;;;;-1:-1:-1;;;;;17730:25:0;;;;;;;:19;:25;;;;;;;;:46;;;;17787:17;:23;;;:42;17375:462::o;16734:148::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16813:21:0;;16805:39;;;;;-1:-1:-1;;;16805:39:0;;;;;;;;;;;;-1:-1:-1;;;16805:39:0;;;;;;;;;;;;;;;16852:12;:22;;-1:-1:-1;;;;;;16852:22:0;-1:-1:-1;;;;;16852:22:0;;;;;;;;;;16734:148::o;16898:465::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;17037:2;17019:14;:20;;17010:30;;;;;;17074:2;17060:10;:16;;17051:26;;;;;;17115:2;17097:14;:20;;17088:30;;;;;;17156:10;17138:14;:28;;17129:38;;;;;;17221:2;17187:30;:10;17202:14;17187:30;:14;:30;:::i;:::-;:36;;17178:46;;;;;;17245:15;:32;;;;17288:11;:24;17323:15;:32;16898:465::o;11399:145::-;11519:16;;11445:4;;11469:67;;:45;2714:17;11492:21;11469:45;:22;:45;:::i;:67::-;11462:74;;11399:145;:::o;2108:87::-;2180:7;2173:14;;;;;;;;-1:-1:-1;;2173:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2147:13;;2173:14;;2180:7;;2173:14;;2180:7;2173:14;;;;;;;;;;;;;;;;;;;;;;;;7254:258;7336:4;7353:129;7362:12;:10;:12::i;:::-;7376:7;7385:96;7424:15;7385:96;;;;;;;;;;;;;;;;;:11;:25;7397:12;:10;:12::i;:::-;-1:-1:-1;;;;;7385:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;7385:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;6281:155::-;6347:4;6364:42;6374:12;:10;:12::i;:::-;6388:9;6399:6;6364:9;:42::i;3521:28::-;;;;:::o;2597:68::-;;;;;;-1:-1:-1;;;;;2597:68:0;;:::o;4051:51::-;;;;;;;;;;;;;:::o;18997:288::-;18938:12;;-1:-1:-1;;;;;18938:12:0;18924:10;:26;18916:48;;;;;-1:-1:-1;;;18916:48:0;;;;;;;;;;;;-1:-1:-1;;;18916:48:0;;;;;;;;;;;;;;;19082:16;;19075:3;:23;;19067:32;;;;;;19131:16;;:25;;19152:3;19131:25;:20;:25;:::i;:::-;19112:16;:44;19225:12;;19250:27;;-1:-1:-1;;;;;19225:12:0;;;;;;19250:27;;;;;19273:3;;19177:29;19250:27;19177:29;19250:27;19273:3;19225:12;19250:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19250:27:0;18972:1;18997:288;:::o;18036:132::-;16437:7;;-1:-1:-1;;;;;16437:7:0;16423:10;:21;16415:38;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;16415:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18128:24:0;;;;;;;:18;:24;;;;;:32;18036:132::o;3701:50::-;;;;;;;;;;;;;:::o;5174:22::-;;;-1:-1:-1;;;;;5174:22:0;;:::o;3482:32::-;;;;:::o;3856:38::-;;;;:::o;6442:131::-;-1:-1:-1;;;;;6538:18:0;;;6514:4;6538:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6442:131::o;3112:50::-;;;-1:-1:-1;;;;;3112:50:0;;:::o;11552:107::-;5119:42;11600:4;11624:27;:9;:27;;-1:-1:-1;;;;;;;;;;;11624:27:0;11552:107;:::o;2672:59::-;2714:17;2672:59;:::o;5243:32::-;;;;:::o;4177:810::-;4237:4;4896:20;;4739:66;4936:15;;;;;:42;;;4967:11;4955:8;:23;;4936:42;4928:51;4177:810;-1:-1:-1;;;;4177:810:0:o;608:169::-;660:4;686:5;;;710:6;;;;702:46;;;;;-1:-1:-1;;;702:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:1;608:169;-1:-1:-1;;;608:169:0:o;783:127::-;835:4;859:43;863:1;866;859:43;;;;;;;;;;;;;;;;;:3;:43::i;1102:238::-;1154:4;1175:6;1171:47;;-1:-1:-1;1205:1:0;1198:8;;1171:47;1239:5;;;1243:1;1239;:5;:1;1263:5;;;;;:10;1255:56;;;;-1:-1:-1;;;1255:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1346:123;1398:4;1422:39;1426:1;1429;1422:39;;;;;;;;;;;;;;;;;:3;:39::i;8903:322::-;9019:71;9041:6;9019:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9019:17:0;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;8999:17:0;;;;;;;:9;:17;;;;;;:91;;;;9134:20;;;;;;;:32;;9159:6;9134:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;9111:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;9182:35;;;;;;;9111:20;;9182:35;;;;-1:-1:-1;;;;;;;;;;;9182:35:0;;;;;;;;8903:322;;;:::o;5645:98::-;5725:10;5645:98;:::o;10960:335::-;-1:-1:-1;;;;;11051:19:0;;11043:68;;;;-1:-1:-1;;;11043:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11130:21:0;;11122:68;;;;-1:-1:-1;;;11122:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11203:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11255:32;;;;;;;;;;;;;;;;;10960:335;;;:::o;9546:1408::-;-1:-1:-1;;;;;9619:21:0;;9611:67;;;;-1:-1:-1;;;9611:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9703:11;9699:24;;9716:7;;9699:24;-1:-1:-1;;;;;9737:18:0;;;;;;:9;:18;;;;;;9733:36;;9762:7;;9733:36;-1:-1:-1;;;;;9785:27:0;;5119:42;9785:27;9781:1166;;9852:68;9875:6;9852:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9852:18:0;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;9831:18:0;;;;;;:9;:18;;;;;;;;:89;;;;9940:37;;;;;;;9831:18;;-1:-1:-1;;;;;;;;;;;9940:37:0;;;;;;;;;;5119:42;10371:17;10391:27;:9;:27;;-1:-1:-1;;;;;;;;;;;10391:27:0;10451:12;;:27;-1:-1:-1;10447:489:0;;;10523:14;10540:60;10569:30;10586:12;10569;;:16;;:30;;;;:::i;:::-;10540:24;:12;10557:6;10540:24;:16;:24;:::i;:60::-;10523:77;-1:-1:-1;10649:27:0;:12;10523:77;10649:27;:16;:27;:::i;:::-;5119:42;10619:27;;;;:9;:27;;;;-1:-1:-1;;;;;;;;;;;10619:57:0;;;;:27;10700:49;;;;;;;10619:27;;-1:-1:-1;;;;;;;;;;;10700:49:0;;;;;;;;10801:39;10830:9;10801:24;10818:6;10801:12;;:16;;:24;;;;:::i;:39::-;10786:12;:54;-1:-1:-1;10447:489:0;;;10896:12;;:24;;10913:6;10896:24;:16;:24;:::i;:::-;10881:12;:39;9781:1166;;9546:1408;;:::o;7518:1379::-;-1:-1:-1;;;;;7613:20:0;;7605:70;;;;-1:-1:-1;;;7605:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7694:23:0;;7686:71;;;;-1:-1:-1;;;7686:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7790;7812:6;7790:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7790:17:0;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;7770:17:0;;;;;;;:9;:17;;;;;;:91;;;;7905:20;;;;;;;:32;;7930:6;7905:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;7882:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;7953:35;;;;;;;7882:20;;7953:35;;;;-1:-1:-1;;;;;;;;;;;7953:35:0;;;;;;;;-1:-1:-1;;;;;8247:27:0;;8229:15;8247:27;;;:19;:27;;;;;;8289:15;8285:129;;-1:-1:-1;8332:15:0;;8285:129;;;8380:5;8367:10;:18;8363:51;;;-1:-1:-1;8413:1:0;8363:51;-1:-1:-1;;;;;8443:28:0;;8427:13;8443:28;;;:17;:28;;;;;;8486:13;8482:121;;-1:-1:-1;8525:15:0;;8482:121;;;8571:5;8560:8;:16;8556:47;;;-1:-1:-1;8602:1:0;8556:47;8630:10;8693:17;;;8689:53;;;-1:-1:-1;8734:8:0;8689:53;8767:10;;8763:127;;8794:12;8809:29;8832:5;8809:18;:6;8820;8809:18;:10;:18;:::i;:29::-;8794:44;;8853:25;8859:9;8870:7;8853:5;:25::i;:::-;8763:127;;7518:1379;;;;;;:::o;916:180::-;996:4;1029:12;1021:6;;;;1013:29;;;;-1:-1:-1;;;1013:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1013:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1062:5:0;;;916:180::o;1475:246::-;1555:4;1654:12;1647:5;1639:28;;;;-1:-1:-1;;;1639:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1639:28:0;;1678:6;1691:1;1687;:5;;;;;;;1475:246;-1:-1:-1;;;;;1475:246:0:o

Swarm Source

bzzr://9f02fe762af55ad2d1716063cbaffebb244b86d4b2b16cc1ecde087e6f3492a4

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.