ETH Price: $3,361.67 (-0.17%)

Contract

0x82e56445F3F2fAB317098f242C8bf4c56785Eb02
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer204373102024-08-02 0:34:47149 days ago1722558887IN
0x82e56445...56785Eb02
0 ETH0.000243193.79752164
Approve204372982024-08-02 0:32:23149 days ago1722558743IN
0x82e56445...56785Eb02
0 ETH0.000184263.97844741
Approve186862922023-11-30 18:45:47394 days ago1701369947IN
0x82e56445...56785Eb02
0 ETH0.0017857473.42694649
Approve184414162023-10-27 12:02:23429 days ago1698408143IN
0x82e56445...56785Eb02
0 ETH0.0003861715.87900156
Transfer176043862023-07-02 5:56:11546 days ago1688277371IN
0x82e56445...56785Eb02
0 ETH0.0008697213.58322416
Approve172015022023-05-06 12:18:47603 days ago1683375527IN
0x82e56445...56785Eb02
0 ETH0.00514621110.42435924
Approve163361502023-01-04 21:35:35724 days ago1672868135IN
0x82e56445...56785Eb02
0 ETH0.0005210221.4236708
Transfer161129102022-12-04 17:23:47755 days ago1670174627IN
0x82e56445...56785Eb02
0 ETH0.00081112.66619406
Transfer156594092022-10-02 8:57:11819 days ago1664701031IN
0x82e56445...56785Eb02
0 ETH0.000368534.61159162
Transfer153810492022-08-21 1:21:21861 days ago1661044881IN
0x82e56445...56785Eb02
0 ETH0.000353884.36269213
Approve153651432022-08-18 12:59:36864 days ago1660827576IN
0x82e56445...56785Eb02
0 ETH0.000348127.46976902
Approve152067662022-07-24 17:57:11888 days ago1658685431IN
0x82e56445...56785Eb02
0 ETH0.0002665310.95937624
Claim151971142022-07-23 5:42:58890 days ago1658554978IN
0x82e56445...56785Eb02
0 ETH0.000616425
Transfer148542392022-05-27 12:47:18947 days ago1653655638IN
0x82e56445...56785Eb02
0 ETH0.0022746928.46362294
Approve148317962022-05-23 21:03:34950 days ago1653339814IN
0x82e56445...56785Eb02
0 ETH0.0008910136.63732369
Claim147584542022-05-12 2:09:37962 days ago1652321377IN
0x82e56445...56785Eb02
0 ETH0.0022530797.95966464
Approve147126502022-05-04 18:57:04969 days ago1651690624IN
0x82e56445...56785Eb02
0 ETH0.00209786.22537342
Claim146645812022-04-27 5:15:01977 days ago1651036501IN
0x82e56445...56785Eb02
0 ETH0.0009470436.92468716
Approve146271012022-04-21 7:58:19983 days ago1650527899IN
0x82e56445...56785Eb02
0 ETH0.00110745.51829669
Approve145976452022-04-16 17:13:15987 days ago1650129195IN
0x82e56445...56785Eb02
0 ETH0.0008713135.82710879
Transfer145572472022-04-10 9:50:33994 days ago1649584233IN
0x82e56445...56785Eb02
0 ETH0.002390229.90892862
Approve145255512022-04-05 11:12:14999 days ago1649157134IN
0x82e56445...56785Eb02
0 ETH0.0012180250.08336083
Approve144717512022-03-28 1:31:021007 days ago1648431062IN
0x82e56445...56785Eb02
0 ETH0.0006076524.98580818
Transfer144613992022-03-26 10:49:111009 days ago1648291751IN
0x82e56445...56785Eb02
0 ETH0.0017068221.35455599
Approve144455872022-03-23 23:41:571011 days ago1648078917IN
0x82e56445...56785Eb02
0 ETH0.0013686856.27825849
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
143930912022-03-15 19:40:021019 days ago1647373202
0x82e56445...56785Eb02
0.02682209 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
$SOCIAL

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-15
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

abstract contract EIP712 {
    /* solhint-disable var-name-mixedcase */
    bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;
    uint256 private immutable _CACHED_CHAIN_ID;
    address private immutable _CACHED_THIS;

    bytes32 private immutable _HASHED_NAME;
    bytes32 private immutable _HASHED_VERSION;
    bytes32 private immutable _TYPE_HASH;

    /* solhint-enable var-name-mixedcase */
    constructor(string memory name, string memory version) {
        bytes32 hashedName = keccak256(bytes(name));
        bytes32 hashedVersion = keccak256(bytes(version));
        bytes32 typeHash = keccak256(
            "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
        );
        _HASHED_NAME = hashedName;
        _HASHED_VERSION = hashedVersion;
        _CACHED_CHAIN_ID = block.chainid;
        _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);
        _CACHED_THIS = address(this);
        _TYPE_HASH = typeHash;
    }

    /**
     * @dev Returns the domain separator for the current chain.
     */
    function _domainSeparatorV4() internal view returns (bytes32) {
        if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) {
            return _CACHED_DOMAIN_SEPARATOR;
        } else {
            return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);
        }
    }

    function _buildDomainSeparator(
        bytes32 typeHash,
        bytes32 nameHash,
        bytes32 versionHash
    ) private view returns (bytes32) {
        return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));
    }

    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", _domainSeparatorV4(), structHash));
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function decimals() external view returns (uint8);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth is Context {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    /**
     * Function modifier to require caller to be owner
     */
    modifier onlyOwner() {
        require(_msgSender() == owner, "!OWNER"); _;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Transfer ownership to new address. Caller must be owner.
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

contract $SOCIAL is Context, IERC20, Auth, EIP712 {
    string private constant NAME = "SocialDAO";
    string private constant SYMBOL = "$SOCIAL";
    uint8 private constant DECIMALS = 9;
    mapping(address => uint256) private _rOwned;
    
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant MAX_SUPPLY = 1e12 * 1e9; // 1T Supply
    uint256 private constant R_MAX = (MAX - (MAX % MAX_SUPPLY));
    
    // for DAO
    uint256 public constant AMOUNT_DAO_PERC = 20;
    // for staking
    uint256 public constant AMOUNT_STAKING_PERC = 10;
    // for liquidity providers
    uint256 public constant AMOUNT_LP_PERC = 20;

    uint256 private _tTotal = (MAX_SUPPLY/100) * (AMOUNT_DAO_PERC + AMOUNT_STAKING_PERC + AMOUNT_LP_PERC);
    uint256 private _rTotal = (R_MAX/100) * (AMOUNT_DAO_PERC + AMOUNT_STAKING_PERC + AMOUNT_LP_PERC);

    bool private inSwap = false;
    bool private _startTxn;
    uint32 private _initialBlocks;
    uint104 private swapLimit = uint104(MAX_SUPPLY / 1000);
    uint104 private _tOwnedBurnAddress;

    uint256 private constant STAKING_BLOCKS_COUNT = 6450 * 5; //5 days

    struct Airdrop {
        uint128 blockNo;
        uint128 amount;
    }

    mapping(address => Airdrop) private _airdrop;

    mapping(bytes32 => bool) private _claimedHash;

    struct FeeBreakdown {
        uint256 tTransferAmount;
        uint256 tMaintenance;
        uint256 tReflection;
    }
    
    struct Fee {
        uint64 buyMaintenanceFee;
        uint64 buyReflectionFee;
        
        uint64 sellMaintenanceFee;
        uint64 sellReflectionFee;
    }

    Fee private _buySellFee = Fee(8,2,8,2);
    
    address payable private _maintenanceAddress;
    address private _csigner;

    address payable constant private BURN_ADDRESS = payable(0x000000000000000000000000000000000000dEaD);
    
    IUniswapV2Router02 private immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    address private immutable WETH;

    bytes32 private constant AIRDROP_CALL_HASH_TYPE = keccak256("airdrop(address receiver,uint256 amount)");
    
    constructor(address addrDAO, address addrStaking, address addrLP, address maintainer, address signer) Auth(_msgSender()) EIP712(SYMBOL, "1") {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), MAX_SUPPLY);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), MAX);

        _maintenanceAddress = payable(maintainer);
        
        //Initial distribution
        _rOwned[addrDAO] = (R_MAX/100) * AMOUNT_DAO_PERC;
        _rOwned[addrStaking] = (R_MAX/100) * AMOUNT_STAKING_PERC;
        _rOwned[addrLP] = (R_MAX/100) * AMOUNT_LP_PERC;

        _isExcludedFromFee[addrDAO] = true;
        _isExcludedFromFee[addrStaking] = true;
        _isExcludedFromFee[addrLP] = true;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[maintainer] = true;

        _csigner = signer;
        emit Transfer(address(0), addrDAO, MAX_SUPPLY * AMOUNT_DAO_PERC / 100);
        emit Transfer(address(0), addrStaking, MAX_SUPPLY * AMOUNT_STAKING_PERC / 100);
        emit Transfer(address(0), addrLP, MAX_SUPPLY * AMOUNT_LP_PERC / 100);
    }

    function name() override external pure returns (string memory) {return NAME;}
    function symbol() override external pure returns (string memory) {return SYMBOL;}
    function decimals() override external pure returns (uint8) {return DECIMALS;}
    function totalSupply() external view override returns (uint256) {return _tTotal;}
    function balanceOf(address account) external view override returns (uint256) {return tokenFromReflection(_rOwned[account]);}
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) external view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }

    function tokenFromReflection(uint256 rAmount) private view returns (uint256) {
        require(rAmount <= _rTotal,"Amount must be less than total reflections");
        uint256 currentRate = _getRate();
        return rAmount/currentRate;
    }
    
    function getFee(bool initialBlocks) internal view returns (Fee memory) {
        return initialBlocks ? Fee(99,0,99,0) : _buySellFee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0) && to != address(0), "ERC20: transfer involving the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_startTxn || _isExcludedFromFee[to] || _isExcludedFromFee[from], "Transfers not allowed");

        Fee memory currentFee;
            
        if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
            currentFee = getFee(block.number <= _initialBlocks);
        } else if (!inSwap && from != uniswapV2Pair && !_isExcludedFromFee[from]) { //sells, transfers (except for buys)
            currentFee = getFee(block.number <= _initialBlocks);

            if (swapLimit > 0 && tokenFromReflection(_rOwned[address(this)]) > swapLimit) {
                _convertTokensForFee(swapLimit);
            }
            
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) _distributeFee(contractETHBalance);
        }

        _tokenTransfer(from, to, amount, currentFee);
    }

    function _convertTokensForFee(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, _maintenanceAddress, block.timestamp);
    }

    function _distributeFee(uint256 amount) private {
        _maintenanceAddress.transfer(amount);
    }

    function startTxn(uint32 initialBlocks) external onlyOwner {
        require(!_startTxn && initialBlocks < 100, "Already started or block count too long");
        _startTxn = true;
        _initialBlocks = uint32(block.number) + initialBlocks;
    }

    function triggerSwap(uint256 perc) external onlyOwner {
        _convertTokensForFee(tokenFromReflection(_rOwned[address(this)]) * perc / 100);
    }
    
    function collectFee() external onlyOwner {
        _distributeFee(address(this).balance);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, Fee memory currentFee) private {
        if (sender == uniswapV2Pair){
            _transferStandardBuy(sender, recipient, amount, currentFee);
        }
        else {
            _transferStandardSell(sender, recipient, amount, currentFee);
        }
    }

    function _transferStandardBuy(address sender, address recipient, uint256 tAmount, Fee memory currentFee) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 tTransferAmount, uint256 rMaintenance) = _getValuesBuy(tAmount, currentFee);
        
        _rOwned[sender] -= rAmount;
        _rOwned[recipient] += rTransferAmount;
        _rOwned[address(this)] += rMaintenance;
        _rTotal -= rReflection;

        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferStandardSell(address sender, address recipient, uint256 tAmount, Fee memory currentFee) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 tTransferAmount, uint256 rMaintenance) = _getValuesSell(tAmount, currentFee);

        Airdrop memory airdrop = _airdrop[sender];
        uint256 rOwnedSender = _rOwned[sender];

        if (airdrop.blockNo > block.number) {
            require(rAmount <= 
                rOwnedSender - airdrop.amount * ((airdrop.blockNo - block.number) * (rAmount / tAmount) / STAKING_BLOCKS_COUNT), "Tokens locked for staking");
        }

        _rOwned[sender] = rOwnedSender - rAmount;
        _rOwned[recipient] += rTransferAmount;
        _rOwned[address(this)] += rMaintenance;

        if (recipient == BURN_ADDRESS) {
            _tOwnedBurnAddress += uint104(tTransferAmount);
        }

        _rTotal -= rReflection;

        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _getValuesBuy(uint256 tAmount, Fee memory currentFee) private view returns (uint256, uint256, uint256, uint256, uint256) {
        FeeBreakdown memory buyFees;
        (buyFees.tTransferAmount, buyFees.tMaintenance, buyFees.tReflection) = _getTValues(tAmount, currentFee.buyMaintenanceFee, currentFee.buyReflectionFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 rMaintenance) = _getRValues(tAmount, buyFees.tMaintenance, buyFees.tReflection, currentRate);
        return (rAmount, rTransferAmount, rReflection, buyFees.tTransferAmount, rMaintenance);
    }

    function _getValuesSell(uint256 tAmount, Fee memory currentFee) private view returns (uint256, uint256, uint256, uint256, uint256) {
        FeeBreakdown memory sellFees;
        (sellFees.tTransferAmount, sellFees.tMaintenance, sellFees.tReflection) = _getTValues(tAmount, currentFee.sellMaintenanceFee, currentFee.sellReflectionFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 rMaintenance) = _getRValues(tAmount, sellFees.tMaintenance, sellFees.tReflection, currentRate);
        return (rAmount, rTransferAmount, rReflection, sellFees.tTransferAmount, rMaintenance);
    }

    function _getTValues(uint256 tAmount, uint256 maintenanceFee, uint256 reflectionFee) private pure returns (uint256, uint256, uint256) {
        uint256 tMaintenance = tAmount * maintenanceFee / 100;
        uint256 tReflection = tAmount * reflectionFee / 100;
        uint256 tTransferAmount = tAmount - tMaintenance - tReflection;
        return (tTransferAmount, tMaintenance, tReflection);
    }

    function _getRValues(uint256 tAmount, uint256 tMaintenance, uint256 tReflection, uint256 currentRate) private pure returns (uint256, uint256, uint256, uint256) {
        uint256 rAmount = tAmount * currentRate;
        uint256 rMaintenance = tMaintenance * currentRate;
        uint256 rReflection = tReflection * currentRate;
        uint256 rTransferAmount = rAmount - rMaintenance - rReflection;
        return (rAmount, rTransferAmount, rReflection, rMaintenance);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;

        uint256 rOwnedBurnAddress = _rOwned[BURN_ADDRESS];
        uint256 tOwnedBurnAddress = _tOwnedBurnAddress;

        if (rOwnedBurnAddress > rSupply || 
            tOwnedBurnAddress > tSupply || 
            (rSupply / tSupply) > (rSupply - rOwnedBurnAddress) 
        ) return (rSupply, tSupply);

        return (rSupply - rOwnedBurnAddress, tSupply - tOwnedBurnAddress);
    }

    function setIsExcludedFromFee(address account, bool toggle) external onlyOwner {
        _isExcludedFromFee[account] = toggle;
    }
        
    function updateSwapLimit(uint104 amount) external onlyOwner {
        swapLimit = amount;
    }
    
    function updateFeeReceiver(address payable maintenanceAddress) external onlyOwner {
        _maintenanceAddress = maintenanceAddress;
        _isExcludedFromFee[maintenanceAddress] = true;
    }

    function updateSigner(address signer) external onlyOwner {
        _csigner = signer;
    }

    receive() external payable {}

    function updateTaxes(Fee memory fees) external onlyOwner {
        require((fees.buyMaintenanceFee + fees.buyReflectionFee < 20) && 
            (fees.sellMaintenanceFee + fees.sellReflectionFee < 20), "Fees must be less than 20%");
        _buySellFee = fees;
    }
    
    function recoverStuckTokens(address addr, uint256 amount) external onlyOwner {
        IERC20(addr).transfer(_msgSender(), amount);
    }

    function airdropCollectedByAddress(address account) public view returns (Airdrop memory) {
        return _airdrop[account];
    }

    function airdropCollectedByHash(bytes32 hash) public view returns (bool) {
        return _claimedHash[hash];
    }

    function claim(bytes32 hash, uint256 amount, uint8 v, bytes32 r, bytes32 s) external {
        require(!_claimedHash[hash] && _airdrop[_msgSender()].blockNo == 0, "$SOCIAL: Claimed");
        uint256 claimAmount = amount * (10 ** DECIMALS);
        require(_tTotal + claimAmount <= MAX_SUPPLY, "$SOCIAL: Exceed max supply");
 
        bytes32 digest = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", 
            _hashTypedDataV4(keccak256(abi.encode(AIRDROP_CALL_HASH_TYPE, hash, _msgSender(), amount)))
        ));
        require(ecrecover(digest, v, r, s) == _csigner, "$SOCIAL: Invalid signer");
        
        _airdropTokens(hash, _msgSender(), uint128(claimAmount));
    }

    function _airdropTokens(bytes32 hash, address account, uint128 amount) internal virtual {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 tTransferAmount, uint256 rMaintenance) = _getValuesBuy(amount, _buySellFee);

        _airdrop[account].blockNo = uint128(block.number + STAKING_BLOCKS_COUNT);
        _airdrop[account].amount = uint128(tTransferAmount);
        _claimedHash[hash] = true;

        _tTotal += amount;
        _rOwned[address(this)] += rMaintenance;
        _rTotal = _rTotal + rAmount - rReflection;
        _rOwned[account] += rTransferAmount;
        
        emit Transfer(address(0), account, tTransferAmount);
    }

    function vestedTokens(address account) public view returns (uint256 tokenBalance, uint256 tTokenVested, uint256 vestingBlocks) {
        Airdrop memory airdrop = _airdrop[account];
        tokenBalance = tokenFromReflection(_rOwned[account]);
        tTokenVested = tokenBalance;
        vestingBlocks = 0;

        if (airdrop.blockNo > block.number) {
            uint256 rTokenVested = _rOwned[account] - airdrop.amount * (((airdrop.blockNo - block.number) * _getRate()) / STAKING_BLOCKS_COUNT);
            tTokenVested = tokenFromReflection(rTokenVested);
            vestingBlocks = airdrop.blockNo - block.number;
        }

        return (tokenBalance, tTokenVested, vestingBlocks);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"addrDAO","type":"address"},{"internalType":"address","name":"addrStaking","type":"address"},{"internalType":"address","name":"addrLP","type":"address"},{"internalType":"address","name":"maintainer","type":"address"},{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AMOUNT_DAO_PERC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_LP_PERC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_STAKING_PERC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"airdropCollectedByAddress","outputs":[{"components":[{"internalType":"uint128","name":"blockNo","type":"uint128"},{"internalType":"uint128","name":"amount","type":"uint128"}],"internalType":"struct $SOCIAL.Airdrop","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"airdropCollectedByHash","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"initialBlocks","type":"uint32"}],"name":"startTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"perc","type":"uint256"}],"name":"triggerSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"maintenanceAddress","type":"address"}],"name":"updateFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"updateSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint104","name":"amount","type":"uint104"}],"name":"updateSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"buyMaintenanceFee","type":"uint64"},{"internalType":"uint64","name":"buyReflectionFee","type":"uint64"},{"internalType":"uint64","name":"sellMaintenanceFee","type":"uint64"},{"internalType":"uint64","name":"sellReflectionFee","type":"uint64"}],"internalType":"struct $SOCIAL.Fee","name":"fees","type":"tuple"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"vestedTokens","outputs":[{"internalType":"uint256","name":"tokenBalance","type":"uint256"},{"internalType":"uint256","name":"tTokenVested","type":"uint256"},{"internalType":"uint256","name":"vestingBlocks","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101a0604052601462000014600a8262000834565b62000020919062000834565b620000366064683635c9adc5dea0000062000865565b6200004291906200087c565b600455601462000054600a8262000834565b62000060919062000834565b606462000079683635c9adc5dea000006000196200089e565b6200008790600019620008b5565b62000093919062000865565b6200009f91906200087c565b6005556006805460ff19169055620000c36103e8683635c9adc5dea0000062000865565b600680546001600160681b0392909216660100000000000002600160301b600160981b0319909216919091179055604080516080810182526008808252600260208301819052928201526060015278020000000000000008000000000000000200000000000000086009553480156200013b57600080fd5b506040516200337f3803806200337f8339810160408190526200015e91620008ec565b604051806040016040528060078152602001660914d3d0d2505360ca1b815250604051806040016040528060018152602001603160f81b815250620001a8620006ee60201b60201c565b600080546001600160a01b0319166001600160a01b0392909216919091179055815160209283012081519183019190912060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818801819052818301969096526060810194909452608080850193909352308483018190528151808603909301835260c080860180845284519489019490942090945290925261012093909352737a250d5630b4cf539739df2c5dacb4c659f2488d6101408190526315ab88c960e31b90935251919263ad5c46489260c4808401938290030181865afa158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d191906200095c565b6001600160a01b03166101805261014051620002f9903090683635c9adc5dea00000620006f2565b610140516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036191906200095c565b610180516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015620003b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003da91906200095c565b6001600160a01b039081166101608190526101405160405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b919062000981565b50600a80546001600160a01b0319166001600160a01b0384161790556014606462000492683635c9adc5dea000006000196200089e565b620004a090600019620008b5565b620004ac919062000865565b620004b891906200087c565b6001600160a01b038616600090815260016020526040902055600a6064620004ec683635c9adc5dea000006000196200089e565b620004fa90600019620008b5565b62000506919062000865565b6200051291906200087c565b6001600160a01b0385166000908152600160205260409020556014606462000546683635c9adc5dea000006000196200089e565b6200055490600019620008b5565b62000560919062000865565b6200056c91906200087c565b6001600160a01b038481166000818152600160208181526040808420969096558a85168084526003909152858320805460ff1990811684179091558a861684528684208054821684179055938352858320805485168317905530835285832080548516831790558785168352948220805490931617909155600b80546001600160a01b031916928516929092179091556000805160206200335f8339815191526064620006246014683635c9adc5dea000006200087c565b62000630919062000865565b60405190815260200160405180910390a36001600160a01b03841660006000805160206200335f833981519152606462000675600a683635c9adc5dea000006200087c565b62000681919062000865565b60405190815260200160405180910390a36001600160a01b03831660006000805160206200335f8339815191526064620006c66014683635c9adc5dea000006200087c565b620006d2919062000865565b60405190815260200160405180910390a35050505050620009a5565b3390565b6001600160a01b0383166200075a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620007bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000751565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156200084a576200084a6200081e565b500190565b634e487b7160e01b600052601260045260246000fd5b6000826200087757620008776200084f565b500490565b60008160001904831182151516156200089957620008996200081e565b500290565b600082620008b057620008b06200084f565b500690565b600082821015620008ca57620008ca6200081e565b500390565b80516001600160a01b0381168114620008e757600080fd5b919050565b600080600080600060a086880312156200090557600080fd5b6200091086620008cf565b94506200092060208701620008cf565b93506200093060408701620008cf565b92506200094060608701620008cf565b91506200095060808701620008cf565b90509295509295909350565b6000602082840312156200096f57600080fd5b6200097a82620008cf565b9392505050565b6000602082840312156200099457600080fd5b815180151581146200097a57600080fd5b60805160a05160c05160e051610100516101205161014051610160516101805161293462000a2b6000396000611aa30152600081816103480152818161178f0152818161181e0152611e0601526000611b1601526000611c2001526000611c6f01526000611c4a01526000611ba301526000611bcd01526000611bf701526129346000f3fe6080604052600436106101bb5760003560e01c8063c596f3fe116100ec578063ef422a181161008a578063f2fde38b11610064578063f2fde38b14610620578063f4c53cdb14610640578063f5d4528314610523578063f8e5884b1461065557600080fd5b8063ef422a1814610538578063efabd85814610558578063f2a4e37d1461058857600080fd5b8063d4d5d32a116100c6578063d4d5d32a146104a8578063dd62ed3e146104bd578063e406393a14610503578063ee21422d1461052357600080fd5b8063c596f3fe14610448578063c69bebe414610468578063cba5c9181461048857600080fd5b80633dee03971161015957806395d89b411161013357806395d89b41146103a2578063a7ecd37e146103e8578063a9059cbb14610408578063c4bd2b051461042857600080fd5b80633dee0397146102fb57806349bd5a5e1461033657806370a082311461038257600080fd5b806318160ddd1161019557806318160ddd1461027157806323b872dd146102905780632f54bf6e146102b0578063313ce567146102df57600080fd5b806306fdde03146101c7578063095ea7b31461021f578063129217581461024f57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b5060408051808201909152600981527f536f6369616c44414f000000000000000000000000000000000000000000000060208201525b60405161021691906123a0565b60405180910390f35b34801561022b57600080fd5b5061023f61023a36600461240a565b610675565b6040519015158152602001610216565b34801561025b57600080fd5b5061026f61026a366004612436565b61068c565b005b34801561027d57600080fd5b506004545b604051908152602001610216565b34801561029c57600080fd5b5061023f6102ab366004612485565b61091d565b3480156102bc57600080fd5b5061023f6102cb3660046124c6565b6000546001600160a01b0391821691161490565b3480156102eb57600080fd5b5060405160098152602001610216565b34801561030757600080fd5b5061031b6103163660046124c6565b6109dc565b60408051938452602084019290925290820152606001610216565b34801561034257600080fd5b5061036a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610216565b34801561038e57600080fd5b5061028261039d3660046124c6565b610af5565b3480156103ae57600080fd5b5060408051808201909152600781527f24534f4349414c000000000000000000000000000000000000000000000000006020820152610209565b3480156103f457600080fd5b5061026f6104033660046124c6565b610b17565b34801561041457600080fd5b5061023f61042336600461240a565b610b92565b34801561043457600080fd5b5061026f6104433660046124e3565b610b9f565b34801561045457600080fd5b5061026f61046336600461240a565b610cd4565b34801561047457600080fd5b5061026f6104833660046124c6565b610dbe565b34801561049457600080fd5b5061026f6104a3366004612526565b610e51565b3480156104b457600080fd5b5061026f610fce565b3480156104c957600080fd5b506102826104d83660046125b1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561050f57600080fd5b5061026f61051e3660046125ea565b611025565b34801561052f57600080fd5b50610282601481565b34801561054457600080fd5b5061026f610553366004612627565b6110bb565b34801561056457600080fd5b5061023f610573366004612655565b60009081526008602052604090205460ff1690565b34801561059457600080fd5b506105f96105a33660046124c6565b6040805180820190915260008082526020820152506001600160a01b03166000908152600760209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082015290565b6040805182516001600160801b039081168252602093840151169281019290925201610216565b34801561062c57600080fd5b5061026f61063b3660046124c6565b611132565b34801561064c57600080fd5b50610282600a81565b34801561066157600080fd5b5061026f610670366004612655565b6111df565b6000610682338484611269565b5060015b92915050565b60008581526008602052604090205460ff161580156106c15750336000908152600760205260409020546001600160801b0316155b6107125760405162461bcd60e51b815260206004820152601060248201527f24534f4349414c3a20436c61696d65640000000000000000000000000000000060448201526064015b60405180910390fd5b60006107206009600a612768565b61072a9086612777565b9050683635c9adc5dea00000816004546107449190612796565b11156107925760405162461bcd60e51b815260206004820152601a60248201527f24534f4349414c3a20457863656564206d617820737570706c790000000000006044820152606401610709565b60006107ff7fb01451209fc457109231228824fc8bf1c5bd43328de897164a4c809a6085770688336040805160208101949094528301919091526001600160a01b031660608201526080810188905260a001604051602081830303815290604052805190602001206113c1565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c810191909152605c0160408051808303601f190181528282528051602091820120600b546000855291840180845281905260ff89169284019290925260608301879052608083018690529092506001600160a01b03169060019060a0016020604051602081039080840390855afa1580156108a9573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146109095760405162461bcd60e51b815260206004820152601760248201527f24534f4349414c3a20496e76616c6964207369676e65720000000000000000006044820152606401610709565b610914873384611423565b50505050505050565b600061092a8484846115c4565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156109c45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610709565b6109d18533858403611269565b506001949350505050565b6001600160a01b03811660008181526007602090815260408083208151808301835290546001600160801b038082168352600160801b9091041681840152938352600190915281205490918291829190610a3590611947565b9350839250600091504381600001516001600160801b03161115610aed576000617dfa610a606119de565b8351610a769043906001600160801b03166127ae565b610a809190612777565b610a8a91906127c5565b82602001516001600160801b0316610aa29190612777565b6001600160a01b038716600090815260016020526040902054610ac591906127ae565b9050610ad081611947565b8251909450610ae99043906001600160801b03166127ae565b9250505b509193909250565b6001600160a01b03811660009081526001602052604081205461068690611947565b6000546001600160a01b0316336001600160a01b031614610b635760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006106823384846115c4565b6000546001600160a01b0316336001600160a01b031614610beb5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b600654610100900460ff16158015610c09575060648163ffffffff16105b610c7b5760405162461bcd60e51b815260206004820152602760248201527f416c72656164792073746172746564206f7220626c6f636b20636f756e74207460448201527f6f6f206c6f6e67000000000000000000000000000000000000000000000000006064820152608401610709565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610cb181436127e7565b600660026101000a81548163ffffffff021916908363ffffffff16021790555050565b6000546001600160a01b0316336001600160a01b031614610d205760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b6001600160a01b03821663a9059cbb336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db9919061280f565b505050565b6000546001600160a01b0316336001600160a01b031614610e0a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b600a80546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff19909216821790556000908152600360205260409020805460ff19166001179055565b6000546001600160a01b0316336001600160a01b031614610e9d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b60208101518151601491610eb09161282c565b67ffffffffffffffff16108015610ee45750601481606001518260400151610ed8919061282c565b67ffffffffffffffff16105b610f305760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e203230250000000000006044820152606401610709565b8051600980546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166001600160801b0392821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b6000546001600160a01b0316336001600160a01b03161461101a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b61102347611a01565b565b6000546001600160a01b0316336001600160a01b0316146110715760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b600680546cffffffffffffffffffffffffff9092166601000000000000027fffffffffffffffffffffffffff00000000000000000000000000ffffffffffff909216919091179055565b6000546001600160a01b0316336001600160a01b0316146111075760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316336001600160a01b03161461117e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b0316336001600160a01b03161461122b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b3060009081526001602052604090205461126690606490839061124d90611947565b6112579190612777565b61126191906127c5565b611a3f565b50565b6001600160a01b0383166112e45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610709565b6001600160a01b0382166113605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610709565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006113cb611b96565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b6040805160808101825260095467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204811693830193909352600160c01b90049091166060820152600090819081908190819061148f906001600160801b03881690611cbd565b94509450945094509450617dfa436114a79190612796565b6001600160a01b03881660009081526007602090815260408083206001600160801b03948516600160801b888716021790558b8352600890915281208054600160ff199091161790556004805492891692909190611506908490612796565b9091555050306000908152600160205260408120805483929061152a908490612796565b9091555050600554839061153f908790612796565b61154991906127ae565b6005556001600160a01b03871660009081526001602052604081208054869290611574908490612796565b90915550506040518281526001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050505050565b6001600160a01b038316158015906115e457506001600160a01b03821615155b6116565760405162461bcd60e51b815260206004820152602a60248201527f45524332303a207472616e7366657220696e766f6c76696e6720746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610709565b600081116116cc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610709565b600654610100900460ff16806116fa57506001600160a01b03821660009081526003602052604090205460ff165b8061171d57506001600160a01b03831660009081526003602052604090205460ff165b6117695760405162461bcd60e51b815260206004820152601560248201527f5472616e7366657273206e6f7420616c6c6f77656400000000000000000000006044820152606401610709565b6040805160808101825260008082526020820181905291810182905260608101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156117e757506001600160a01b03831660009081526003602052604090205460ff16155b1561180e576006546118079062010000900463ffffffff16431115611d60565b9050611935565b60065460ff1615801561185357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b801561187857506001600160a01b03841660009081526003602052604090205460ff16155b15611935576006546118989062010000900463ffffffff16431115611d60565b600654909150660100000000000090046cffffffffffffffffffffffffff16158015906118f957506006543060009081526001602052604090205466010000000000009091046cffffffffffffffffffffffffff16906118f790611947565b115b156119235760065461192390660100000000000090046cffffffffffffffffffffffffff16611a3f565b4780156119335761193381611a01565b505b61194184848484611e04565b50505050565b60006005548211156119c15760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610709565b60006119cb6119de565b90506119d781846127c5565b9392505050565b60008060006119eb611e5b565b90925090506119fa81836127c5565b9250505090565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611a3b573d6000803e3d6000fd5b5050565b6006805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611a8157611a8161284f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611ad557611ad561284f565b6001600160a01b039283166020918202929092010152600a546040517f791ac9470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000083169263791ac94792611b5692879260009288929116904290600401612865565b600060405180830381600087803b158015611b7057600080fd5b505af1158015611b84573d6000803e3d6000fd5b50506006805460ff1916905550505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611bef57507f000000000000000000000000000000000000000000000000000000000000000046145b15611c1957507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000806000806000611ce960405180606001604052806000815260200160008152602001600081525090565b611d1088886000015167ffffffffffffffff16896020015167ffffffffffffffff16611f1b565b6040840152602083015281526000611d266119de565b9050600080600080611d428d8760200151886040015188611f79565b9851929d50909b509950975094955050505050509295509295909350565b60408051608081018252600080825260208201819052918101829052606081019190915281611ddb576040805160808101825260095467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204811693830193909352600160c01b90049091166060820152610686565b505060408051608081018252606380825260006020830181905292820152606081019190915290565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161415611e4f57611e4a84848484611fd3565b611941565b611941848484846120e3565b60055460045461dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460065491938493909290919073010000000000000000000000000000000000000090046cffffffffffffffffffffffffff1683821180611ecf57508281115b80611eeb5750611edf82856127ae565b611ee984866127c5565b115b15611efb57509194909350915050565b611f0582856127ae565b611f0f82856127ae565b95509550505050509091565b60008080806064611f2c8789612777565b611f3691906127c5565b905060006064611f46878a612777565b611f5091906127c5565b9050600081611f5f848b6127ae565b611f6991906127ae565b9992985090965090945050505050565b600080808080611f89868a612777565b90506000611f97878a612777565b90506000611fa5888a612777565b9050600081611fb484866127ae565b611fbe91906127ae565b939c939b509099509097509095505050505050565b6000806000806000611fe58787611cbd565b6001600160a01b038e1660009081526001602052604081208054969b509499509297509095509350879261201a9084906127ae565b90915550506001600160a01b03881660009081526001602052604081208054869290612047908490612796565b9091555050306000908152600160205260408120805483929061206b908490612796565b92505081905550826005600082825461208491906127ae565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120d091815260200190565b60405180910390a3505050505050505050565b60008060008060006120f5878761234d565b6001600160a01b038e1660008181526007602090815260408083208151808301835290546001600160801b038082168352600160801b9091048116828501529484526001909252909120548151979c50959a5093985091965094509092439116111561220357617dfa6121688a896127c5565b835161217e9043906001600160801b03166127ae565b6121889190612777565b61219291906127c5565b82602001516001600160801b03166121aa9190612777565b6121b490826127ae565b8711156122035760405162461bcd60e51b815260206004820152601960248201527f546f6b656e73206c6f636b656420666f72207374616b696e67000000000000006044820152606401610709565b61220d87826127ae565b6001600160a01b03808d1660009081526001602052604080822093909355908c1681529081208054889290612243908490612796565b90915550503060009081526001602052604081208054859290612267908490612796565b90915550506001600160a01b038a1661dead14156122da5783600660138282829054906101000a90046cffffffffffffffffffffffffff166122a991906128d6565b92506101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff1602179055505b84600560008282546122ec91906127ae565b92505081905550896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161233891815260200190565b60405180910390a35050505050505050505050565b600080600080600061237960405180606001604052806000815260200160008152602001600081525090565b611d1088886040015167ffffffffffffffff16896060015167ffffffffffffffff16611f1b565b600060208083528351808285015260005b818110156123cd578581018301518582016040015282016123b1565b818111156123df576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461126657600080fd5b6000806040838503121561241d57600080fd5b8235612428816123f5565b946020939093013593505050565b600080600080600060a0868803121561244e57600080fd5b8535945060208601359350604086013560ff8116811461246d57600080fd5b94979396509394606081013594506080013592915050565b60008060006060848603121561249a57600080fd5b83356124a5816123f5565b925060208401356124b5816123f5565b929592945050506040919091013590565b6000602082840312156124d857600080fd5b81356119d7816123f5565b6000602082840312156124f557600080fd5b813563ffffffff811681146119d757600080fd5b803567ffffffffffffffff8116811461252157600080fd5b919050565b60006080828403121561253857600080fd5b6040516080810181811067ffffffffffffffff8211171561256957634e487b7160e01b600052604160045260246000fd5b60405261257583612509565b815261258360208401612509565b602082015261259460408401612509565b60408201526125a560608401612509565b60608201529392505050565b600080604083850312156125c457600080fd5b82356125cf816123f5565b915060208301356125df816123f5565b809150509250929050565b6000602082840312156125fc57600080fd5b81356cffffffffffffffffffffffffff811681146119d757600080fd5b801515811461126657600080fd5b6000806040838503121561263a57600080fd5b8235612645816123f5565b915060208301356125df81612619565b60006020828403121561266757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156126bf5781600019048211156126a5576126a561266e565b808516156126b257918102915b93841c9390800290612689565b509250929050565b6000826126d657506001610686565b816126e357506000610686565b81600181146126f957600281146127035761271f565b6001915050610686565b60ff8411156127145761271461266e565b50506001821b610686565b5060208310610133831016604e8410600b8410161715612742575081810a610686565b61274c8383612684565b80600019048211156127605761276061266e565b029392505050565b60006119d760ff8416836126c7565b60008160001904831182151516156127915761279161266e565b500290565b600082198211156127a9576127a961266e565b500190565b6000828210156127c0576127c061266e565b500390565b6000826127e257634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff8083168185168083038211156128065761280661266e565b01949350505050565b60006020828403121561282157600080fd5b81516119d781612619565b600067ffffffffffffffff8083168185168083038211156128065761280661266e565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128b55784516001600160a01b031683529383019391830191600101612890565b50506001600160a01b03969096166060850152505050608001529392505050565b60006cffffffffffffffffffffffffff8083168185168083038211156128065761280661266e56fea2646970667358221220f8076a16343f7f27a983b33449f5a22698d71e99a571f1ef2d6b8dc745823b3764736f6c634300080c0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000e49e777e77ecc77706312765b8e1816ad83d5f7a00000000000000000000000065a64a9866429c1b7d8160bf917a8891abce43e4000000000000000000000000de2f74f11534f1e6d33b6a2acedcce7e8f78a034000000000000000000000000d72defc70b9308184cfd9c0ff85a7ad91ec1c1d200000000000000000000000037ff351b21fdc73df394642bfe7da501a4cd5fc9

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063c596f3fe116100ec578063ef422a181161008a578063f2fde38b11610064578063f2fde38b14610620578063f4c53cdb14610640578063f5d4528314610523578063f8e5884b1461065557600080fd5b8063ef422a1814610538578063efabd85814610558578063f2a4e37d1461058857600080fd5b8063d4d5d32a116100c6578063d4d5d32a146104a8578063dd62ed3e146104bd578063e406393a14610503578063ee21422d1461052357600080fd5b8063c596f3fe14610448578063c69bebe414610468578063cba5c9181461048857600080fd5b80633dee03971161015957806395d89b411161013357806395d89b41146103a2578063a7ecd37e146103e8578063a9059cbb14610408578063c4bd2b051461042857600080fd5b80633dee0397146102fb57806349bd5a5e1461033657806370a082311461038257600080fd5b806318160ddd1161019557806318160ddd1461027157806323b872dd146102905780632f54bf6e146102b0578063313ce567146102df57600080fd5b806306fdde03146101c7578063095ea7b31461021f578063129217581461024f57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b5060408051808201909152600981527f536f6369616c44414f000000000000000000000000000000000000000000000060208201525b60405161021691906123a0565b60405180910390f35b34801561022b57600080fd5b5061023f61023a36600461240a565b610675565b6040519015158152602001610216565b34801561025b57600080fd5b5061026f61026a366004612436565b61068c565b005b34801561027d57600080fd5b506004545b604051908152602001610216565b34801561029c57600080fd5b5061023f6102ab366004612485565b61091d565b3480156102bc57600080fd5b5061023f6102cb3660046124c6565b6000546001600160a01b0391821691161490565b3480156102eb57600080fd5b5060405160098152602001610216565b34801561030757600080fd5b5061031b6103163660046124c6565b6109dc565b60408051938452602084019290925290820152606001610216565b34801561034257600080fd5b5061036a7f000000000000000000000000341a36f607cfec6dad3a634d8137a6f775b11beb81565b6040516001600160a01b039091168152602001610216565b34801561038e57600080fd5b5061028261039d3660046124c6565b610af5565b3480156103ae57600080fd5b5060408051808201909152600781527f24534f4349414c000000000000000000000000000000000000000000000000006020820152610209565b3480156103f457600080fd5b5061026f6104033660046124c6565b610b17565b34801561041457600080fd5b5061023f61042336600461240a565b610b92565b34801561043457600080fd5b5061026f6104433660046124e3565b610b9f565b34801561045457600080fd5b5061026f61046336600461240a565b610cd4565b34801561047457600080fd5b5061026f6104833660046124c6565b610dbe565b34801561049457600080fd5b5061026f6104a3366004612526565b610e51565b3480156104b457600080fd5b5061026f610fce565b3480156104c957600080fd5b506102826104d83660046125b1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561050f57600080fd5b5061026f61051e3660046125ea565b611025565b34801561052f57600080fd5b50610282601481565b34801561054457600080fd5b5061026f610553366004612627565b6110bb565b34801561056457600080fd5b5061023f610573366004612655565b60009081526008602052604090205460ff1690565b34801561059457600080fd5b506105f96105a33660046124c6565b6040805180820190915260008082526020820152506001600160a01b03166000908152600760209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082015290565b6040805182516001600160801b039081168252602093840151169281019290925201610216565b34801561062c57600080fd5b5061026f61063b3660046124c6565b611132565b34801561064c57600080fd5b50610282600a81565b34801561066157600080fd5b5061026f610670366004612655565b6111df565b6000610682338484611269565b5060015b92915050565b60008581526008602052604090205460ff161580156106c15750336000908152600760205260409020546001600160801b0316155b6107125760405162461bcd60e51b815260206004820152601060248201527f24534f4349414c3a20436c61696d65640000000000000000000000000000000060448201526064015b60405180910390fd5b60006107206009600a612768565b61072a9086612777565b9050683635c9adc5dea00000816004546107449190612796565b11156107925760405162461bcd60e51b815260206004820152601a60248201527f24534f4349414c3a20457863656564206d617820737570706c790000000000006044820152606401610709565b60006107ff7fb01451209fc457109231228824fc8bf1c5bd43328de897164a4c809a6085770688336040805160208101949094528301919091526001600160a01b031660608201526080810188905260a001604051602081830303815290604052805190602001206113c1565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c810191909152605c0160408051808303601f190181528282528051602091820120600b546000855291840180845281905260ff89169284019290925260608301879052608083018690529092506001600160a01b03169060019060a0016020604051602081039080840390855afa1580156108a9573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146109095760405162461bcd60e51b815260206004820152601760248201527f24534f4349414c3a20496e76616c6964207369676e65720000000000000000006044820152606401610709565b610914873384611423565b50505050505050565b600061092a8484846115c4565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156109c45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610709565b6109d18533858403611269565b506001949350505050565b6001600160a01b03811660008181526007602090815260408083208151808301835290546001600160801b038082168352600160801b9091041681840152938352600190915281205490918291829190610a3590611947565b9350839250600091504381600001516001600160801b03161115610aed576000617dfa610a606119de565b8351610a769043906001600160801b03166127ae565b610a809190612777565b610a8a91906127c5565b82602001516001600160801b0316610aa29190612777565b6001600160a01b038716600090815260016020526040902054610ac591906127ae565b9050610ad081611947565b8251909450610ae99043906001600160801b03166127ae565b9250505b509193909250565b6001600160a01b03811660009081526001602052604081205461068690611947565b6000546001600160a01b0316336001600160a01b031614610b635760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006106823384846115c4565b6000546001600160a01b0316336001600160a01b031614610beb5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b600654610100900460ff16158015610c09575060648163ffffffff16105b610c7b5760405162461bcd60e51b815260206004820152602760248201527f416c72656164792073746172746564206f7220626c6f636b20636f756e74207460448201527f6f6f206c6f6e67000000000000000000000000000000000000000000000000006064820152608401610709565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610cb181436127e7565b600660026101000a81548163ffffffff021916908363ffffffff16021790555050565b6000546001600160a01b0316336001600160a01b031614610d205760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b6001600160a01b03821663a9059cbb336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db9919061280f565b505050565b6000546001600160a01b0316336001600160a01b031614610e0a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b600a80546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff19909216821790556000908152600360205260409020805460ff19166001179055565b6000546001600160a01b0316336001600160a01b031614610e9d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b60208101518151601491610eb09161282c565b67ffffffffffffffff16108015610ee45750601481606001518260400151610ed8919061282c565b67ffffffffffffffff16105b610f305760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e203230250000000000006044820152606401610709565b8051600980546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166001600160801b0392821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b6000546001600160a01b0316336001600160a01b03161461101a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b61102347611a01565b565b6000546001600160a01b0316336001600160a01b0316146110715760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b600680546cffffffffffffffffffffffffff9092166601000000000000027fffffffffffffffffffffffffff00000000000000000000000000ffffffffffff909216919091179055565b6000546001600160a01b0316336001600160a01b0316146111075760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316336001600160a01b03161461117e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b0316336001600160a01b03161461122b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610709565b3060009081526001602052604090205461126690606490839061124d90611947565b6112579190612777565b61126191906127c5565b611a3f565b50565b6001600160a01b0383166112e45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610709565b6001600160a01b0382166113605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610709565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006113cb611b96565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b6040805160808101825260095467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204811693830193909352600160c01b90049091166060820152600090819081908190819061148f906001600160801b03881690611cbd565b94509450945094509450617dfa436114a79190612796565b6001600160a01b03881660009081526007602090815260408083206001600160801b03948516600160801b888716021790558b8352600890915281208054600160ff199091161790556004805492891692909190611506908490612796565b9091555050306000908152600160205260408120805483929061152a908490612796565b9091555050600554839061153f908790612796565b61154991906127ae565b6005556001600160a01b03871660009081526001602052604081208054869290611574908490612796565b90915550506040518281526001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050505050565b6001600160a01b038316158015906115e457506001600160a01b03821615155b6116565760405162461bcd60e51b815260206004820152602a60248201527f45524332303a207472616e7366657220696e766f6c76696e6720746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610709565b600081116116cc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610709565b600654610100900460ff16806116fa57506001600160a01b03821660009081526003602052604090205460ff165b8061171d57506001600160a01b03831660009081526003602052604090205460ff165b6117695760405162461bcd60e51b815260206004820152601560248201527f5472616e7366657273206e6f7420616c6c6f77656400000000000000000000006044820152606401610709565b6040805160808101825260008082526020820181905291810182905260608101919091527f000000000000000000000000341a36f607cfec6dad3a634d8137a6f775b11beb6001600160a01b0316846001600160a01b03161480156117e757506001600160a01b03831660009081526003602052604090205460ff16155b1561180e576006546118079062010000900463ffffffff16431115611d60565b9050611935565b60065460ff1615801561185357507f000000000000000000000000341a36f607cfec6dad3a634d8137a6f775b11beb6001600160a01b0316846001600160a01b031614155b801561187857506001600160a01b03841660009081526003602052604090205460ff16155b15611935576006546118989062010000900463ffffffff16431115611d60565b600654909150660100000000000090046cffffffffffffffffffffffffff16158015906118f957506006543060009081526001602052604090205466010000000000009091046cffffffffffffffffffffffffff16906118f790611947565b115b156119235760065461192390660100000000000090046cffffffffffffffffffffffffff16611a3f565b4780156119335761193381611a01565b505b61194184848484611e04565b50505050565b60006005548211156119c15760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610709565b60006119cb6119de565b90506119d781846127c5565b9392505050565b60008060006119eb611e5b565b90925090506119fa81836127c5565b9250505090565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611a3b573d6000803e3d6000fd5b5050565b6006805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611a8157611a8161284f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611ad557611ad561284f565b6001600160a01b039283166020918202929092010152600a546040517f791ac9470000000000000000000000000000000000000000000000000000000081527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83169263791ac94792611b5692879260009288929116904290600401612865565b600060405180830381600087803b158015611b7057600080fd5b505af1158015611b84573d6000803e3d6000fd5b50506006805460ff1916905550505050565b6000306001600160a01b037f00000000000000000000000082e56445f3f2fab317098f242c8bf4c56785eb0216148015611bef57507f000000000000000000000000000000000000000000000000000000000000000146145b15611c1957507f877e5f8278345bb9705e2bb877d81084db6a0d8866a90988f5f277d7294212ab90565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527fbd9242123b3b00b0ec17071e561bc40012c98e230f0b76722721928d8b69e8aa828401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000806000806000611ce960405180606001604052806000815260200160008152602001600081525090565b611d1088886000015167ffffffffffffffff16896020015167ffffffffffffffff16611f1b565b6040840152602083015281526000611d266119de565b9050600080600080611d428d8760200151886040015188611f79565b9851929d50909b509950975094955050505050509295509295909350565b60408051608081018252600080825260208201819052918101829052606081019190915281611ddb576040805160808101825260095467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204811693830193909352600160c01b90049091166060820152610686565b505060408051608081018252606380825260006020830181905292820152606081019190915290565b7f000000000000000000000000341a36f607cfec6dad3a634d8137a6f775b11beb6001600160a01b0316846001600160a01b03161415611e4f57611e4a84848484611fd3565b611941565b611941848484846120e3565b60055460045461dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460065491938493909290919073010000000000000000000000000000000000000090046cffffffffffffffffffffffffff1683821180611ecf57508281115b80611eeb5750611edf82856127ae565b611ee984866127c5565b115b15611efb57509194909350915050565b611f0582856127ae565b611f0f82856127ae565b95509550505050509091565b60008080806064611f2c8789612777565b611f3691906127c5565b905060006064611f46878a612777565b611f5091906127c5565b9050600081611f5f848b6127ae565b611f6991906127ae565b9992985090965090945050505050565b600080808080611f89868a612777565b90506000611f97878a612777565b90506000611fa5888a612777565b9050600081611fb484866127ae565b611fbe91906127ae565b939c939b509099509097509095505050505050565b6000806000806000611fe58787611cbd565b6001600160a01b038e1660009081526001602052604081208054969b509499509297509095509350879261201a9084906127ae565b90915550506001600160a01b03881660009081526001602052604081208054869290612047908490612796565b9091555050306000908152600160205260408120805483929061206b908490612796565b92505081905550826005600082825461208491906127ae565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120d091815260200190565b60405180910390a3505050505050505050565b60008060008060006120f5878761234d565b6001600160a01b038e1660008181526007602090815260408083208151808301835290546001600160801b038082168352600160801b9091048116828501529484526001909252909120548151979c50959a5093985091965094509092439116111561220357617dfa6121688a896127c5565b835161217e9043906001600160801b03166127ae565b6121889190612777565b61219291906127c5565b82602001516001600160801b03166121aa9190612777565b6121b490826127ae565b8711156122035760405162461bcd60e51b815260206004820152601960248201527f546f6b656e73206c6f636b656420666f72207374616b696e67000000000000006044820152606401610709565b61220d87826127ae565b6001600160a01b03808d1660009081526001602052604080822093909355908c1681529081208054889290612243908490612796565b90915550503060009081526001602052604081208054859290612267908490612796565b90915550506001600160a01b038a1661dead14156122da5783600660138282829054906101000a90046cffffffffffffffffffffffffff166122a991906128d6565b92506101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff1602179055505b84600560008282546122ec91906127ae565b92505081905550896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161233891815260200190565b60405180910390a35050505050505050505050565b600080600080600061237960405180606001604052806000815260200160008152602001600081525090565b611d1088886040015167ffffffffffffffff16896060015167ffffffffffffffff16611f1b565b600060208083528351808285015260005b818110156123cd578581018301518582016040015282016123b1565b818111156123df576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461126657600080fd5b6000806040838503121561241d57600080fd5b8235612428816123f5565b946020939093013593505050565b600080600080600060a0868803121561244e57600080fd5b8535945060208601359350604086013560ff8116811461246d57600080fd5b94979396509394606081013594506080013592915050565b60008060006060848603121561249a57600080fd5b83356124a5816123f5565b925060208401356124b5816123f5565b929592945050506040919091013590565b6000602082840312156124d857600080fd5b81356119d7816123f5565b6000602082840312156124f557600080fd5b813563ffffffff811681146119d757600080fd5b803567ffffffffffffffff8116811461252157600080fd5b919050565b60006080828403121561253857600080fd5b6040516080810181811067ffffffffffffffff8211171561256957634e487b7160e01b600052604160045260246000fd5b60405261257583612509565b815261258360208401612509565b602082015261259460408401612509565b60408201526125a560608401612509565b60608201529392505050565b600080604083850312156125c457600080fd5b82356125cf816123f5565b915060208301356125df816123f5565b809150509250929050565b6000602082840312156125fc57600080fd5b81356cffffffffffffffffffffffffff811681146119d757600080fd5b801515811461126657600080fd5b6000806040838503121561263a57600080fd5b8235612645816123f5565b915060208301356125df81612619565b60006020828403121561266757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156126bf5781600019048211156126a5576126a561266e565b808516156126b257918102915b93841c9390800290612689565b509250929050565b6000826126d657506001610686565b816126e357506000610686565b81600181146126f957600281146127035761271f565b6001915050610686565b60ff8411156127145761271461266e565b50506001821b610686565b5060208310610133831016604e8410600b8410161715612742575081810a610686565b61274c8383612684565b80600019048211156127605761276061266e565b029392505050565b60006119d760ff8416836126c7565b60008160001904831182151516156127915761279161266e565b500290565b600082198211156127a9576127a961266e565b500190565b6000828210156127c0576127c061266e565b500390565b6000826127e257634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff8083168185168083038211156128065761280661266e565b01949350505050565b60006020828403121561282157600080fd5b81516119d781612619565b600067ffffffffffffffff8083168185168083038211156128065761280661266e565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128b55784516001600160a01b031683529383019391830191600101612890565b50506001600160a01b03969096166060850152505050608001529392505050565b60006cffffffffffffffffffffffffff8083168185168083038211156128065761280661266e56fea2646970667358221220f8076a16343f7f27a983b33449f5a22698d71e99a571f1ef2d6b8dc745823b3764736f6c634300080c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000e49e777e77ecc77706312765b8e1816ad83d5f7a00000000000000000000000065a64a9866429c1b7d8160bf917a8891abce43e4000000000000000000000000de2f74f11534f1e6d33b6a2acedcce7e8f78a034000000000000000000000000d72defc70b9308184cfd9c0ff85a7ad91ec1c1d200000000000000000000000037ff351b21fdc73df394642bfe7da501a4cd5fc9

-----Decoded View---------------
Arg [0] : addrDAO (address): 0xE49E777e77ECc77706312765b8E1816ad83d5f7A
Arg [1] : addrStaking (address): 0x65A64a9866429c1b7d8160Bf917A8891aBCe43E4
Arg [2] : addrLP (address): 0xDE2F74F11534f1E6d33B6a2aCEDcce7e8F78A034
Arg [3] : maintainer (address): 0xD72DEFC70B9308184cFd9c0ff85A7Ad91EC1c1d2
Arg [4] : signer (address): 0x37Ff351B21fdc73DF394642Bfe7dA501a4cd5fc9

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000e49e777e77ecc77706312765b8e1816ad83d5f7a
Arg [1] : 00000000000000000000000065a64a9866429c1b7d8160bf917a8891abce43e4
Arg [2] : 000000000000000000000000de2f74f11534f1e6d33b6a2acedcce7e8f78a034
Arg [3] : 000000000000000000000000d72defc70b9308184cfd9c0ff85a7ad91ec1c1d2
Arg [4] : 00000000000000000000000037ff351b21fdc73df394642bfe7da501a4cd5fc9


Deployed Bytecode Sourcemap

4199:16244:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7938:77;;;;;;;;;;-1:-1:-1;8009:4:0;;;;;;;;;;;;;;;;;7938:77;;;;;;;:::i;:::-;;;;;;;;8718:163;;;;;;;;;;-1:-1:-1;8718:163:0;;;;;:::i;:::-;;:::i;:::-;;;1319:14:1;;1312:22;1294:41;;1282:2;1267:18;8718:163:0;1154:187:1;18321:707:0;;;;;;;;;;-1:-1:-1;18321:707:0;;;;;:::i;:::-;;:::i;:::-;;8191:81;;;;;;;;;;-1:-1:-1;8263:7:0;;8191:81;;;2040:25:1;;;2028:2;2013:18;8191:81:0;1894:177:1;8887:448:0;;;;;;;;;;-1:-1:-1;8887:448:0;;;;;:::i;:::-;;:::i;3316:103::-;;;;;;;;;;-1:-1:-1;3316:103:0;;;;;:::i;:::-;3371:4;3406:5;-1:-1:-1;;;;;3395:16:0;;;3406:5;;3395:16;;3316:103;8108:77;;;;;;;;;;-1:-1:-1;8108:77:0;;4388:1;2931:36:1;;2919:2;2904:18;8108:77:0;2789:184:1;19730:710:0;;;;;;;;;;-1:-1:-1;19730:710:0;;;;;:::i;:::-;;:::i;:::-;;;;3180:25:1;;;3236:2;3221:18;;3214:34;;;;3264:18;;;3257:34;3168:2;3153:18;19730:710:0;2978:319:1;6301:38:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3466:55:1;;;3448:74;;3436:2;3421:18;6301:38:0;3302:226:1;8278:124:0;;;;;;;;;;-1:-1:-1;8278:124:0;;;;;:::i;:::-;;:::i;8021:81::-;;;;;;;;;;-1:-1:-1;8094:6:0;;;;;;;;;;;;;;;;;8021:81;;17489:93;;;;;;;;;;-1:-1:-1;17489:93:0;;;;;:::i;:::-;;:::i;8408:169::-;;;;;;;;;;-1:-1:-1;8408:169:0;;;;;:::i;:::-;;:::i;11663:254::-;;;;;;;;;;-1:-1:-1;11663:254:0;;;;;:::i;:::-;;:::i;17909:139::-;;;;;;;;;;-1:-1:-1;17909:139:0;;;;;:::i;:::-;;:::i;17284:197::-;;;;;;;;;;-1:-1:-1;17284:197:0;;;;;:::i;:::-;;:::i;17627:270::-;;;;;;;;;;-1:-1:-1;17627:270:0;;;;;:::i;:::-;;:::i;12088:97::-;;;;;;;;;;;;;:::i;8583:129::-;;;;;;;;;;-1:-1:-1;8583:129:0;;;;;:::i;:::-;-1:-1:-1;;;;;8683:18:0;;;8666:7;8683:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8583:129;17175:97;;;;;;;;;;-1:-1:-1;17175:97:0;;;;;:::i;:::-;;:::i;4795:44::-;;;;;;;;;;;;4837:2;4795:44;;17025:134;;;;;;;;;;-1:-1:-1;17025:134:0;;;;;:::i;:::-;;:::i;18196:117::-;;;;;;;;;;-1:-1:-1;18196:117:0;;;;;:::i;:::-;18263:4;18287:18;;;:12;:18;;;;;;;;;18196:117;18056:132;;;;;;;;;;-1:-1:-1;18056:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;18163:17:0;;;;;:8;:17;;;;;;;;;18156:24;;;;;;;;;-1:-1:-1;;;;;18156:24:0;;;;;-1:-1:-1;;;18156:24:0;;;;;;;;;18056:132;;;;;6908:13:1;;-1:-1:-1;;;;;6904:22:1;;;6886:41;;6987:4;6975:17;;;6969:24;6965:33;6943:20;;;6936:63;;;;6806:18;18056:132:0;6639:366:1;3510:136:0;;;;;;;;;;-1:-1:-1;3510:136:0;;;;;:::i;:::-;;:::i;4866:48::-;;;;;;;;;;;;4912:2;4866:48;;11925:151;;;;;;;;;;-1:-1:-1;11925:151:0;;;;;:::i;:::-;;:::i;8718:163::-;8795:4;8812:39;2078:10;8835:7;8844:6;8812:8;:39::i;:::-;-1:-1:-1;8869:4:0;8718:163;;;;;:::o;18321:707::-;18426:18;;;;:12;:18;;;;;;;;18425:19;:58;;;;-1:-1:-1;2078:10:0;18448:22;;;;:8;:22;;;;;:30;-1:-1:-1;;;;;18448:30:0;:35;18425:58;18417:87;;;;-1:-1:-1;;;18417:87:0;;7397:2:1;18417:87:0;;;7379:21:1;7436:2;7416:18;;;7409:30;7475:18;7455;;;7448:46;7511:18;;18417:87:0;;;;;;;;;18515:19;18547:14;4388:1;18547:2;:14;:::i;:::-;18537:25;;:6;:25;:::i;:::-;18515:47;;4677:10;18591:11;18581:7;;:21;;;;:::i;:::-;:35;;18573:74;;;;-1:-1:-1;;;18573:74:0;;9800:2:1;18573:74:0;;;9782:21:1;9839:2;9819:18;;;9812:30;9878:28;9858:18;;;9851:56;9924:18;;18573:74:0;9598:350:1;18573:74:0;18661:14;18755:91;6539:53;18817:4;2078:10;18782:62;;;;;;10184:25:1;;;;10225:18;;10218:34;;;;-1:-1:-1;;;;;10288:55:1;10268:18;;;10261:83;10360:18;;;10353:34;;;10156:19;;18782:62:0;;;;;;;;;;;;18772:73;;;;;;18755:16;:91::i;:::-;18688:169;;10640:66:1;18688:169:0;;;10628:79:1;10723:12;;;10716:28;;;;10760:12;;18688:169:0;;;;;;-1:-1:-1;;18688:169:0;;;;;;18678:180;;18688:169;18678:180;;;;18907:8;;;18877:26;;;;;;;;11010:25:1;;;11083:4;11071:17;;11051:18;;;11044:45;;;;11105:18;;;11098:34;;;11148:18;;;11141:34;;;18678:180:0;;-1:-1:-1;;;;;;18907:8:0;;;;10982:19:1;;18877:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18877:38:0;;18869:74;;;;-1:-1:-1;;;18869:74:0;;11388:2:1;18869:74:0;;;11370:21:1;11427:2;11407:18;;;11400:30;11466:25;11446:18;;;11439:53;11509:18;;18869:74:0;11186:347:1;18869:74:0;18964:56;18979:4;2078:10;19007:11;18964:14;:56::i;:::-;18406:622;;18321:707;;;;;:::o;8887:448::-;8987:4;9004:36;9014:6;9022:9;9033:6;9004:9;:36::i;:::-;-1:-1:-1;;;;;9078:19:0;;9051:24;9078:19;;;:11;:19;;;;;;;;2078:10;9078:33;;;;;;;;9130:26;;;;9122:79;;;;-1:-1:-1;;;9122:79:0;;11740:2:1;9122:79:0;;;11722:21:1;11779:2;11759:18;;;11752:30;11818:34;11798:18;;;11791:62;11889:10;11869:18;;;11862:38;11917:19;;9122:79:0;11538:404:1;9122:79:0;9237:57;9246:6;2078:10;9287:6;9268:16;:25;9237:8;:57::i;:::-;-1:-1:-1;9323:4:0;;8887:448;-1:-1:-1;;;;8887:448:0:o;19730:710::-;-1:-1:-1;;;;;19893:17:0;;19790:20;19893:17;;;:8;:17;;;;;;;;19868:42;;;;;;;;;-1:-1:-1;;;;;19868:42:0;;;;;-1:-1:-1;;;19868:42:0;;;;;;;;19956:16;;;19868:42;19956:16;;;;;;19790:20;;;;;;19868:42;19936:37;;:19;:37::i;:::-;19921:52;;19999:12;19984:27;;20038:1;20022:17;;20074:12;20056:7;:15;;;-1:-1:-1;;;;;20056:30:0;;20052:318;;;20103:20;5469:8;20199:10;:8;:10::i;:::-;20165:15;;:30;;20183:12;;-1:-1:-1;;;;;20165:30:0;;:::i;:::-;20164:45;;;;:::i;:::-;20163:70;;;;:::i;:::-;20145:7;:14;;;-1:-1:-1;;;;;20145:89:0;;;;;:::i;:::-;-1:-1:-1;;;;;20126:16:0;;;;;;:7;:16;;;;;;:108;;;;:::i;:::-;20103:131;;20264:33;20284:12;20264:19;:33::i;:::-;20328:15;;20249:48;;-1:-1:-1;20328:30:0;;20346:12;;-1:-1:-1;;;;;20328:30:0;;:::i;:::-;20312:46;;20088:282;20052:318;20382:50;19730:710;;;;;:::o;8278:124::-;-1:-1:-1;;;;;8383:16:0;;8346:7;8383:16;;;:7;:16;;;;;;8363:37;;:19;:37::i;17489:93::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;17557:8:::1;:17:::0;;-1:-1:-1;;17557:17:0::1;-1:-1:-1::0;;;;;17557:17:0;;;::::1;::::0;;;::::1;::::0;;17489:93::o;8408:169::-;8488:4;8505:42;2078:10;8529:9;8540:6;8505:9;:42::i;11663:254::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;11742:9:::1;::::0;::::1;::::0;::::1;;;11741:10;:33:::0;::::1;;;;11771:3;11755:13;:19;;;11741:33;11733:85;;;::::0;-1:-1:-1;;;11733:85:0;;12892:2:1;11733:85:0::1;::::0;::::1;12874:21:1::0;12931:2;12911:18;;;12904:30;12970:34;12950:18;;;12943:62;13041:9;13021:18;;;13014:37;13068:19;;11733:85:0::1;12690:403:1::0;11733:85:0::1;11829:9;:16:::0;;;::::1;;;::::0;;11873:36:::1;11896:13:::0;11880:12:::1;11873:36;:::i;:::-;11856:14;;:53;;;;;;;;;;;;;;;;;;11663:254:::0;:::o;17909:139::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;-1:-1:-1;;;;;17997:21:0;::::1;;2078:10:::0;17997:43:::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;13523:55:1;;;17997:43:0::1;::::0;::::1;13505:74:1::0;13595:18;;;13588:34;;;13478:18;;17997:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17909:139:::0;;:::o;17284:197::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;17377:19:::1;:40:::0;;-1:-1:-1;;;;;17377:40:0;;::::1;-1:-1:-1::0;;17377:40:0;;::::1;::::0;::::1;::::0;;:19:::1;17428:38:::0;;;:18:::1;:38;::::0;;;;:45;;-1:-1:-1;;17428:45:0::1;17377:40:::0;17428:45:::1;::::0;;17284:197::o;17627:270::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;17729:21:::1;::::0;::::1;::::0;17704:22;;17753:2:::1;::::0;17704:46:::1;::::0;::::1;:::i;:::-;:51;;;17703:126;;;;;17826:2;17801:4;:22;;;17775:4;:23;;;:48;;;;:::i;:::-;:53;;;17703:126;17695:165;;;::::0;-1:-1:-1;;;17695:165:0;;14326:2:1;17695:165:0::1;::::0;::::1;14308:21:1::0;14365:2;14345:18;;;14338:30;14404:28;14384:18;;;14377:56;14450:18;;17695:165:0::1;14124:350:1::0;17695:165:0::1;17871:18:::0;;:11:::1;:18:::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;;17871:18:0::1;::::0;;;::::1;-1:-1:-1::0;;;17871:18:0::1;::::0;;;;-1:-1:-1;;;;;17871:18:0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;17627:270::o;12088:97::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;12140:37:::1;12155:21;12140:14;:37::i;:::-;12088:97::o:0;17175:::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;17246:9:::1;:18:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;17175:97::o;17025:134::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;-1:-1:-1;;;;;17115:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:36;;-1:-1:-1;;17115:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17025:134::o;3510:136::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;3586:5:::1;:11:::0;;-1:-1:-1;;3586:11:0::1;-1:-1:-1::0;;;;;3586:11:0;::::1;::::0;;::::1;::::0;;;3613:25:::1;::::0;3448:74:1;;;3613:25:0::1;::::0;3436:2:1;3421:18;3613:25:0::1;;;;;;;3510:136:::0;:::o;11925:151::-;3229:5;;-1:-1:-1;;;;;3229:5:0;2078:10;-1:-1:-1;;;;;3213:21:0;;3205:40;;;;-1:-1:-1;;;3205:40:0;;12558:2:1;3205:40:0;;;12540:21:1;12597:1;12577:18;;;12570:29;-1:-1:-1;;;12615:18:1;;;12608:36;12661:18;;3205:40:0;12356:329:1;3205:40:0;12047:4:::1;12031:22;::::0;;;:7:::1;:22;::::0;;;;;11990:78:::1;::::0;12064:3:::1;::::0;12057:4;;12011:43:::1;::::0;:19:::1;:43::i;:::-;:50;;;;:::i;:::-;:56;;;;:::i;:::-;11990:20;:78::i;:::-;11925:151:::0;:::o;9752:335::-;-1:-1:-1;;;;;9845:19:0;;9837:68;;;;-1:-1:-1;;;9837:68:0;;14920:2:1;9837:68:0;;;14902:21:1;14959:2;14939:18;;;14932:30;14998:34;14978:18;;;14971:62;15069:6;15049:18;;;15042:34;15093:19;;9837:68:0;14718:400:1;9837:68:0;-1:-1:-1;;;;;9924:21:0;;9916:68;;;;-1:-1:-1;;;9916:68:0;;15325:2:1;9916:68:0;;;15307:21:1;15364:2;15344:18;;;15337:30;15403:34;15383:18;;;15376:62;15474:4;15454:18;;;15447:32;15496:19;;9916:68:0;15123:398:1;9916:68:0;-1:-1:-1;;;;;9995:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10047:32;;2040:25:1;;;10047:32:0;;2013:18:1;10047:32:0;;;;;;;9752:335;;;:::o;1773:185::-;1850:7;1916:20;:18;:20::i;:::-;1887:62;;15796:66:1;1887:62:0;;;15784:79:1;15879:11;;;15872:27;;;;15915:12;;;15908:28;;;15952:12;;1887:62:0;;;;;;;;;;;;1877:73;;;;;;1870:80;;1773:185;;;:::o;19036:686::-;19248:34;;;;;;;;19270:11;19248:34;;;;;;;;;;;;;;;;-1:-1:-1;;;19248:34:0;;;;;;;;;;;-1:-1:-1;;;19248:34:0;;;;;;;;;19136:15;;;;;;;;;;19248:34;;-1:-1:-1;;;;;19248:34:0;;;:13;:34::i;:::-;19135:147;;;;;;;;;;5469:8;19331:12;:35;;;;:::i;:::-;-1:-1:-1;;;;;19295:17:0;;;;;;:8;:17;;;;;;;;-1:-1:-1;;;;;19295:72:0;;;-1:-1:-1;;;19378:51:0;;;;;;;19440:18;;;:12;:18;;;;;:25;;19295:72;-1:-1:-1;;19440:25:0;;;;;;19478:7;:17;;;;;;:7;;19295:17;19478;;;;;:::i;:::-;;;;-1:-1:-1;;19522:4:0;19506:22;;;;:7;:22;;;;;:38;;19532:12;;19506:22;:38;;19532:12;;19506:38;:::i;:::-;;;;-1:-1:-1;;19565:7:0;;19585:11;;19565:17;;19575:7;;19565:17;:::i;:::-;:31;;;;:::i;:::-;19555:7;:41;-1:-1:-1;;;;;19607:16:0;;;;;;:7;:16;;;;;:35;;19627:15;;19607:16;:35;;19627:15;;19607:35;:::i;:::-;;;;-1:-1:-1;;19668:46:0;;2040:25:1;;;-1:-1:-1;;;;;19668:46:0;;;19685:1;;19668:46;;2028:2:1;2013:18;19668:46:0;;;;;;;19124:598;;;;;19036:686;;;:::o;10095:1115::-;-1:-1:-1;;;;;10183:18:0;;;;;;:38;;-1:-1:-1;;;;;;10205:16:0;;;;10183:38;10175:93;;;;-1:-1:-1;;;10175:93:0;;16177:2:1;10175:93:0;;;16159:21:1;16216:2;16196:18;;;16189:30;16255:34;16235:18;;;16228:62;16326:12;16306:18;;;16299:40;16356:19;;10175:93:0;15975:406:1;10175:93:0;10296:1;10287:6;:10;10279:64;;;;-1:-1:-1;;;10279:64:0;;16588:2:1;10279:64:0;;;16570:21:1;16627:2;16607:18;;;16600:30;16666:34;16646:18;;;16639:62;16737:11;16717:18;;;16710:39;16766:19;;10279:64:0;16386:405:1;10279:64:0;10362:9;;;;;;;;:35;;-1:-1:-1;;;;;;10375:22:0;;;;;;:18;:22;;;;;;;;10362:35;:63;;;-1:-1:-1;;;;;;10401:24:0;;;;;;:18;:24;;;;;;;;10362:63;10354:97;;;;-1:-1:-1;;;10354:97:0;;16998:2:1;10354:97:0;;;16980:21:1;17037:2;17017:18;;;17010:30;17076:23;17056:18;;;17049:51;17117:18;;10354:97:0;16796:345:1;10354:97:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10522:13:0;-1:-1:-1;;;;;10514:21:0;:4;-1:-1:-1;;;;;10514:21:0;;:48;;;;-1:-1:-1;;;;;;10540:22:0;;;;;;:18;:22;;;;;;;;10539:23;10514:48;10510:636;;;10615:14;;10592:38;;10615:14;;;;;10599:12;:30;;10592:6;:38::i;:::-;10579:51;;10510:636;;;10653:6;;;;10652:7;:32;;;;;10671:13;-1:-1:-1;;;;;10663:21:0;:4;-1:-1:-1;;;;;10663:21:0;;;10652:32;:61;;;;-1:-1:-1;;;;;;10689:24:0;;;;;;:18;:24;;;;;;;;10688:25;10652:61;10648:498;;;10803:14;;10780:38;;10803:14;;;;;10787:12;:30;;10780:6;:38::i;:::-;10839:9;;10767:51;;-1:-1:-1;10839:9:0;;;;;:13;;;;:72;;-1:-1:-1;10902:9:0;;10892:4;10876:22;;;;:7;:22;;;;;;10902:9;;;;;;;10856:43;;:19;:43::i;:::-;:55;10839:72;10835:144;;;10953:9;;10932:31;;10953:9;;;;;10932:20;:31::i;:::-;11036:21;11076:22;;11072:62;;11100:34;11115:18;11100:14;:34::i;:::-;10715:431;10648:498;11158:44;11173:4;11179:2;11183:6;11191:10;11158:14;:44::i;:::-;10164:1046;10095:1115;;;:::o;9343:248::-;9411:7;9450;;9439;:18;;9431:72;;;;-1:-1:-1;;;9431:72:0;;17348:2:1;9431:72:0;;;17330:21:1;17387:2;17367:18;;;17360:30;17426:34;17406:18;;;17399:62;17497:12;17477:18;;;17470:40;17527:19;;9431:72:0;17146:406:1;9431:72:0;9514:19;9536:10;:8;:10::i;:::-;9514:32;-1:-1:-1;9564:19:0;9514:32;9564:7;:19;:::i;:::-;9557:26;9343:248;-1:-1:-1;;;9343:248:0:o;16306:161::-;16348:7;16369:15;16386;16405:19;:17;:19::i;:::-;16368:56;;-1:-1:-1;16368:56:0;-1:-1:-1;16442:17:0;16368:56;;16442:17;:::i;:::-;16435:24;;;;16306:161;:::o;11552:103::-;11611:19;;:36;;-1:-1:-1;;;;;11611:19:0;;;;:36;;;;;11640:6;;11611:19;:36;:19;:36;11640:6;11611:19;:36;;;;;;;;;;;;;;;;;;;;;11552:103;:::o;11218:326::-;6384:6;:13;;-1:-1:-1;;6384:13:0;6393:4;6384:13;;;11324:16:::1;::::0;;11338:1:::1;11324:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11324:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11324:16:0::1;11300:40;;11369:4;11351;11356:1;11351:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;11351:23:0::1;;;-1:-1:-1::0;;;;;11351:23:0::1;;;::::0;::::1;11395:4;11385;11390:1;11385:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11385:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;11499:19:::1;::::0;11410:126:::1;::::0;;;;:15:::1;:66:::0;::::1;::::0;::::1;::::0;:126:::1;::::0;11477:11;;11490:1:::1;::::0;11493:4;;11499:19;::::1;::::0;11520:15:::1;::::0;11410:126:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6420:6:0;:14;;-1:-1:-1;;6420:14:0;;;-1:-1:-1;;;;11218:326:0:o;1180:314::-;1233:7;1265:4;-1:-1:-1;;;;;1274:12:0;1257:29;;:66;;;;;1307:16;1290:13;:33;1257:66;1253:234;;;-1:-1:-1;1347:24:0;;1180:314::o;1253:234::-;-1:-1:-1;1683:73:0;;;1433:10;1683:73;;;;19044:25:1;;;;1445:12:0;19085:18:1;;;19078:34;1459:15:0;19128:18:1;;;19121:34;1727:13:0;19171:18:1;;;19164:34;1750:4:0;19214:19:1;;;;19207:84;;;;1683:73:0;;;;;;;;;;19016:19:1;;;;1683:73:0;;;1673:84;;;;;;1180:314::o;14079:651::-;14164:7;14173;14182;14191;14200;14220:27;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;14220:27:0;14329:79;14341:7;14350:10;:28;;;14329:79;;14380:10;:27;;;14329:79;;:11;:79::i;:::-;14306:19;;;14258:150;14284:20;;;14258:150;;;14259:23;14441:10;:8;:10::i;:::-;14419:32;;14463:15;14480:23;14505:19;14526:20;14550:76;14562:7;14571;:20;;;14593:7;:19;;;14614:11;14550;:76::i;:::-;14684:23;;14462:164;;-1:-1:-1;14462:164:0;;-1:-1:-1;14462:164:0;-1:-1:-1;14684:23:0;-1:-1:-1;14462:164:0;;-1:-1:-1;;;;;;14079:651:0;;;;;;;;:::o;9603:141::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9692:13:0;:44;;;;;;;;;;9725:11;9692:44;;;;;;;;;;;;;;;;-1:-1:-1;;;9692:44:0;;;;;;;;;;;-1:-1:-1;;;9692:44:0;;;;;;;;;;;;-1:-1:-1;;9708:14:0;;;;;;;;9712:2;9708:14;;;-1:-1:-1;9708:14:0;;;;;;;;;;;;;;;;;;9603:141::o;12193:340::-;12324:13;-1:-1:-1;;;;;12314:23:0;:6;-1:-1:-1;;;;;12314:23:0;;12310:216;;;12353:59;12374:6;12382:9;12393:6;12401:10;12353:20;:59::i;:::-;12310:216;;;12454:60;12476:6;12484:9;12495:6;12503:10;12454:21;:60::i;16475:542::-;16573:7;;16609;;6186:42;16526:7;16657:21;;;:7;:21;;;;16717:18;;16526:7;;;;16573;;16609;;16657:21;16717:18;;;;;16752:27;;;;:72;;;16817:7;16797:17;:27;16752:72;:141;;;-1:-1:-1;16865:27:0;16875:17;16865:7;:27;:::i;:::-;16843:17;16853:7;16843;:17;:::i;:::-;16842:51;16752:141;16748:183;;;-1:-1:-1;16914:7:0;;16923;;-1:-1:-1;16475:542:0;-1:-1:-1;;16475:542:0:o;16748:183::-;16952:27;16962:17;16952:7;:27;:::i;:::-;16981;16991:17;16981:7;:27;:::i;:::-;16944:65;;;;;;;;16475:542;;:::o;15407:403::-;15514:7;;;;15602:3;15575:24;15585:14;15575:7;:24;:::i;:::-;:30;;;;:::i;:::-;15552:53;-1:-1:-1;15616:19:0;15664:3;15638:23;15648:13;15638:7;:23;:::i;:::-;:29;;;;:::i;:::-;15616:51;-1:-1:-1;15678:23:0;15616:51;15704:22;15714:12;15704:7;:22;:::i;:::-;:36;;;;:::i;:::-;15678:62;15776:12;;-1:-1:-1;15790:11:0;;-1:-1:-1;15407:403:0;;-1:-1:-1;;;;;15407:403:0:o;15818:480::-;15942:7;;;;;16007:21;16017:11;16007:7;:21;:::i;:::-;15989:39;-1:-1:-1;16039:20:0;16062:26;16077:11;16062:12;:26;:::i;:::-;16039:49;-1:-1:-1;16099:19:0;16121:25;16135:11;16121;:25;:::i;:::-;16099:47;-1:-1:-1;16157:23:0;16099:47;16183:22;16193:12;16183:7;:22;:::i;:::-;:36;;;;:::i;:::-;16238:7;;;;-1:-1:-1;16264:11:0;;-1:-1:-1;16277:12:0;;-1:-1:-1;15818:480:0;;-1:-1:-1;;;;;;15818:480:0:o;12541:518::-;12666:15;12683:23;12708:19;12729:23;12754:20;12778:34;12792:7;12801:10;12778:13;:34::i;:::-;-1:-1:-1;;;;;12833:15:0;;;;;;:7;:15;;;;;:26;;12665:147;;-1:-1:-1;12665:147:0;;-1:-1:-1;12665:147:0;;-1:-1:-1;12665:147:0;;-1:-1:-1;12665:147:0;-1:-1:-1;12665:147:0;;12833:26;;12665:147;;12833:26;:::i;:::-;;;;-1:-1:-1;;;;;;;12870:18:0;;;;;;:7;:18;;;;;:37;;12892:15;;12870:18;:37;;12892:15;;12870:37;:::i;:::-;;;;-1:-1:-1;;12934:4:0;12918:22;;;;:7;:22;;;;;:38;;12944:12;;12918:22;:38;;12944:12;;12918:38;:::i;:::-;;;;;;;;12978:11;12967:7;;:22;;;;;;;:::i;:::-;;;;;;;;13024:9;-1:-1:-1;;;;;13007:44:0;13016:6;-1:-1:-1;;;;;13007:44:0;;13035:15;13007:44;;;;2040:25:1;;2028:2;2013:18;;1894:177;13007:44:0;;;;;;;;12654:405;;;;;12541:518;;;;:::o;13067:1000::-;13193:15;13210:23;13235:19;13256:23;13281:20;13305:35;13320:7;13329:10;13305:14;:35::i;:::-;-1:-1:-1;;;;;13378:16:0;;13353:22;13378:16;;;:8;:16;;;;;;;;13353:41;;;;;;;;;-1:-1:-1;;;;;13353:41:0;;;;;-1:-1:-1;;;13353:41:0;;;;;;;;;13428:15;;;13353:41;13428:15;;;;;;;13460;;13192:148;;-1:-1:-1;13192:148:0;;-1:-1:-1;13192:148:0;;-1:-1:-1;13192:148:0;;-1:-1:-1;13192:148:0;-1:-1:-1;13353:41:0;;13478:12;13460:30;;;13456:241;;;5469:8;13613:17;13623:7;13613;:17;:::i;:::-;13578:15;;:30;;13596:12;;-1:-1:-1;;;;;13578:30:0;;:::i;:::-;13577:54;;;;:::i;:::-;:77;;;;:::i;:::-;13559:7;:14;;;-1:-1:-1;;;;;13559:96:0;;;;;:::i;:::-;13544:111;;:12;:111;:::i;:::-;13515:7;:140;;13507:178;;;;-1:-1:-1;;;13507:178:0;;19504:2:1;13507:178:0;;;19486:21:1;19543:2;19523:18;;;19516:30;19582:27;19562:18;;;19555:55;19627:18;;13507:178:0;19302:349:1;13507:178:0;13727:22;13742:7;13727:12;:22;:::i;:::-;-1:-1:-1;;;;;13709:15:0;;;;;;;:7;:15;;;;;;:40;;;;13760:18;;;;;;;;:37;;13782:15;;13709;13760:37;;13782:15;;13760:37;:::i;:::-;;;;-1:-1:-1;;13824:4:0;13808:22;;;;:7;:22;;;;;:38;;13834:12;;13808:22;:38;;13834:12;;13808:38;:::i;:::-;;;;-1:-1:-1;;;;;;;13863:25:0;;6186:42;13863:25;13859:104;;;13935:15;13905:18;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13859:104;13986:11;13975:7;;:22;;;;;;;:::i;:::-;;;;;;;;14032:9;-1:-1:-1;;;;;14015:44:0;14024:6;-1:-1:-1;;;;;14015:44:0;;14043:15;14015:44;;;;2040:25:1;;2028:2;2013:18;;1894:177;14015:44:0;;;;;;;;13181:886;;;;;;;13067:1000;;;;:::o;14738:661::-;14824:7;14833;14842;14851;14860;14880:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;14880:28:0;14993:81;15005:7;15014:10;:29;;;14993:81;;15045:10;:28;;;14993:81;;:11;:81::i;14:656:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:1;574:15;-1:-1:-1;;570:88:1;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:1:o;675:154::-;-1:-1:-1;;;;;754:5:1;750:54;743:5;740:65;730:93;;819:1;816;809:12;834:315;902:6;910;963:2;951:9;942:7;938:23;934:32;931:52;;;979:1;976;969:12;931:52;1018:9;1005:23;1037:31;1062:5;1037:31;:::i;:::-;1087:5;1139:2;1124:18;;;;1111:32;;-1:-1:-1;;;834:315:1:o;1346:543::-;1439:6;1447;1455;1463;1471;1524:3;1512:9;1503:7;1499:23;1495:33;1492:53;;;1541:1;1538;1531:12;1492:53;1577:9;1564:23;1554:33;;1634:2;1623:9;1619:18;1606:32;1596:42;;1688:2;1677:9;1673:18;1660:32;1732:4;1725:5;1721:16;1714:5;1711:27;1701:55;;1752:1;1749;1742:12;1701:55;1346:543;;;;-1:-1:-1;1775:5:1;;1827:2;1812:18;;1799:32;;-1:-1:-1;1878:3:1;1863:19;1850:33;;1346:543;-1:-1:-1;;1346:543:1:o;2076:456::-;2153:6;2161;2169;2222:2;2210:9;2201:7;2197:23;2193:32;2190:52;;;2238:1;2235;2228:12;2190:52;2277:9;2264:23;2296:31;2321:5;2296:31;:::i;:::-;2346:5;-1:-1:-1;2403:2:1;2388:18;;2375:32;2416:33;2375:32;2416:33;:::i;:::-;2076:456;;2468:7;;-1:-1:-1;;;2522:2:1;2507:18;;;;2494:32;;2076:456::o;2537:247::-;2596:6;2649:2;2637:9;2628:7;2624:23;2620:32;2617:52;;;2665:1;2662;2655:12;2617:52;2704:9;2691:23;2723:31;2748:5;2723:31;:::i;3533:276::-;3591:6;3644:2;3632:9;3623:7;3619:23;3615:32;3612:52;;;3660:1;3657;3650:12;3612:52;3699:9;3686:23;3749:10;3742:5;3738:22;3731:5;3728:33;3718:61;;3775:1;3772;3765:12;4263:171;4330:20;;4390:18;4379:30;;4369:41;;4359:69;;4424:1;4421;4414:12;4359:69;4263:171;;;:::o;4439:807::-;4518:6;4571:3;4559:9;4550:7;4546:23;4542:33;4539:53;;;4588:1;4585;4578:12;4539:53;4621:2;4615:9;4663:3;4655:6;4651:16;4733:6;4721:10;4718:22;4697:18;4685:10;4682:34;4679:62;4676:242;;;-1:-1:-1;;;4771:1:1;4764:88;4875:4;4872:1;4865:15;4903:4;4900:1;4893:15;4676:242;4934:2;4927:22;4973:28;4991:9;4973:28;:::i;:::-;4965:6;4958:44;5035:37;5068:2;5057:9;5053:18;5035:37;:::i;:::-;5030:2;5022:6;5018:15;5011:62;5106:37;5139:2;5128:9;5124:18;5106:37;:::i;:::-;5101:2;5093:6;5089:15;5082:62;5177:37;5210:2;5199:9;5195:18;5177:37;:::i;:::-;5172:2;5160:15;;5153:62;5164:6;4439:807;-1:-1:-1;;;4439:807:1:o;5251:388::-;5319:6;5327;5380:2;5368:9;5359:7;5355:23;5351:32;5348:52;;;5396:1;5393;5386:12;5348:52;5435:9;5422:23;5454:31;5479:5;5454:31;:::i;:::-;5504:5;-1:-1:-1;5561:2:1;5546:18;;5533:32;5574:33;5533:32;5574:33;:::i;:::-;5626:7;5616:17;;;5251:388;;;;;:::o;5644:295::-;5703:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:52;;;5772:1;5769;5762:12;5724:52;5811:9;5798:23;5861:28;5854:5;5850:40;5843:5;5840:51;5830:79;;5905:1;5902;5895:12;5944:118;6030:5;6023:13;6016:21;6009:5;6006:32;5996:60;;6052:1;6049;6042:12;6067:382;6132:6;6140;6193:2;6181:9;6172:7;6168:23;6164:32;6161:52;;;6209:1;6206;6199:12;6161:52;6248:9;6235:23;6267:31;6292:5;6267:31;:::i;:::-;6317:5;-1:-1:-1;6374:2:1;6359:18;;6346:32;6387:30;6346:32;6387:30;:::i;6454:180::-;6513:6;6566:2;6554:9;6545:7;6541:23;6537:32;6534:52;;;6582:1;6579;6572:12;6534:52;-1:-1:-1;6605:23:1;;6454:180;-1:-1:-1;6454:180:1:o;7540:184::-;-1:-1:-1;;;7589:1:1;7582:88;7689:4;7686:1;7679:15;7713:4;7710:1;7703:15;7729:482;7818:1;7861:5;7818:1;7875:330;7896:7;7886:8;7883:21;7875:330;;;8015:4;-1:-1:-1;;7943:77:1;7937:4;7934:87;7931:113;;;8024:18;;:::i;:::-;8074:7;8064:8;8060:22;8057:55;;;8094:16;;;;8057:55;8173:22;;;;8133:15;;;;7875:330;;;7879:3;7729:482;;;;;:::o;8216:866::-;8265:5;8295:8;8285:80;;-1:-1:-1;8336:1:1;8350:5;;8285:80;8384:4;8374:76;;-1:-1:-1;8421:1:1;8435:5;;8374:76;8466:4;8484:1;8479:59;;;;8552:1;8547:130;;;;8459:218;;8479:59;8509:1;8500:10;;8523:5;;;8547:130;8584:3;8574:8;8571:17;8568:43;;;8591:18;;:::i;:::-;-1:-1:-1;;8647:1:1;8633:16;;8662:5;;8459:218;;8761:2;8751:8;8748:16;8742:3;8736:4;8733:13;8729:36;8723:2;8713:8;8710:16;8705:2;8699:4;8696:12;8692:35;8689:77;8686:159;;;-1:-1:-1;8798:19:1;;;8830:5;;8686:159;8877:34;8902:8;8896:4;8877:34;:::i;:::-;9007:6;-1:-1:-1;;8935:79:1;8926:7;8923:92;8920:118;;;9018:18;;:::i;:::-;9056:20;;8216:866;-1:-1:-1;;;8216:866:1:o;9087:140::-;9145:5;9174:47;9215:4;9205:8;9201:19;9195:4;9174:47;:::i;9232:228::-;9272:7;9398:1;-1:-1:-1;;9326:74:1;9323:1;9320:81;9315:1;9308:9;9301:17;9297:105;9294:131;;;9405:18;;:::i;:::-;-1:-1:-1;9445:9:1;;9232:228::o;9465:128::-;9505:3;9536:1;9532:6;9529:1;9526:13;9523:39;;;9542:18;;:::i;:::-;-1:-1:-1;9578:9:1;;9465:128::o;11947:125::-;11987:4;12015:1;12012;12009:8;12006:34;;;12020:18;;:::i;:::-;-1:-1:-1;12057:9:1;;11947:125::o;12077:274::-;12117:1;12143;12133:189;;-1:-1:-1;;;12175:1:1;12168:88;12279:4;12276:1;12269:15;12307:4;12304:1;12297:15;12133:189;-1:-1:-1;12336:9:1;;12077:274::o;13098:228::-;13137:3;13165:10;13202:2;13199:1;13195:10;13232:2;13229:1;13225:10;13263:3;13259:2;13255:12;13250:3;13247:21;13244:47;;;13271:18;;:::i;:::-;13307:13;;13098:228;-1:-1:-1;;;;13098:228:1:o;13633:245::-;13700:6;13753:2;13741:9;13732:7;13728:23;13724:32;13721:52;;;13769:1;13766;13759:12;13721:52;13801:9;13795:16;13820:28;13842:5;13820:28;:::i;13883:236::-;13922:3;13950:18;13995:2;13992:1;13988:10;14025:2;14022:1;14018:10;14056:3;14052:2;14048:12;14043:3;14040:21;14037:47;;;14064:18;;:::i;17557:184::-;-1:-1:-1;;;17606:1:1;17599:88;17706:4;17703:1;17696:15;17730:4;17727:1;17720:15;17746:1034;18016:4;18064:3;18053:9;18049:19;18095:6;18084:9;18077:25;18121:2;18159:6;18154:2;18143:9;18139:18;18132:34;18202:3;18197:2;18186:9;18182:18;18175:31;18226:6;18261;18255:13;18292:6;18284;18277:22;18330:3;18319:9;18315:19;18308:26;;18369:2;18361:6;18357:15;18343:29;;18390:1;18400:218;18414:6;18411:1;18408:13;18400:218;;;18479:13;;-1:-1:-1;;;;;18475:62:1;18463:75;;18593:15;;;;18558:12;;;;18436:1;18429:9;18400:218;;;-1:-1:-1;;;;;;;18674:55:1;;;;18669:2;18654:18;;18647:83;-1:-1:-1;;;18761:3:1;18746:19;18739:35;18635:3;17746:1034;-1:-1:-1;;;17746:1034:1:o;19656:247::-;19696:3;19724:28;19779:2;19776:1;19772:10;19809:2;19806:1;19802:10;19840:3;19836:2;19832:12;19827:3;19824:21;19821:47;;;19848:18;;:::i

Swarm Source

ipfs://f8076a16343f7f27a983b33449f5a22698d71e99a571f1ef2d6b8dc745823b37

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.