ETH Price: $2,475.04 (+1.03%)

Contract

0x447044C7b8a0aBe7a8937432AbA662ED64f7C40F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer197117472024-04-22 15:10:35173 days ago1713798635IN
0x447044C7...D64f7C40F
0 ETH0.0018895424.10841257
Approve184240122023-10-25 1:32:59353 days ago1698197579IN
0x447044C7...D64f7C40F
0 ETH0.0004730419.41900962
Approve183258852023-10-11 8:03:11367 days ago1697011391IN
0x447044C7...D64f7C40F
0 ETH0.000380548.2133603
Approve182465502023-09-30 5:51:23378 days ago1696053083IN
0x447044C7...D64f7C40F
0 ETH0.000305726.60710519
Approve182329292023-09-28 8:04:59380 days ago1695888299IN
0x447044C7...D64f7C40F
0 ETH0.000372858.04945651
Approve181901222023-09-22 8:13:11386 days ago1695370391IN
0x447044C7...D64f7C40F
0 ETH0.0005669512.15486272
Approve181858072023-09-21 17:42:47387 days ago1695318167IN
0x447044C7...D64f7C40F
0 ETH0.000465510.04968021
Approve181857092023-09-21 17:22:59387 days ago1695316979IN
0x447044C7...D64f7C40F
0 ETH0.0006636314.22768083
Approve181839582023-09-21 11:29:35387 days ago1695295775IN
0x447044C7...D64f7C40F
0 ETH0.0005590112.00019942
Approve181811642023-09-21 2:05:11387 days ago1695261911IN
0x447044C7...D64f7C40F
0 ETH0.000250159.49011807
Approve181810642023-09-21 1:44:47387 days ago1695260687IN
0x447044C7...D64f7C40F
0 ETH0.000418338.98029984
Transfer181810152023-09-21 1:34:59387 days ago1695260099IN
0x447044C7...D64f7C40F
0 ETH0.0006577410.73599589
Approve181802532023-09-20 23:02:23387 days ago1695250943IN
0x447044C7...D64f7C40F
0 ETH0.0005570611.95836122
Approve181802472023-09-20 23:01:11387 days ago1695250871IN
0x447044C7...D64f7C40F
0 ETH0.0005954812.78310824
Approve181802422023-09-20 23:00:11387 days ago1695250811IN
0x447044C7...D64f7C40F
0 ETH0.0005384111.55797472
Approve181802362023-09-20 22:58:59387 days ago1695250739IN
0x447044C7...D64f7C40F
0 ETH0.0005912412.69197797
Approve181802322023-09-20 22:58:11387 days ago1695250691IN
0x447044C7...D64f7C40F
0 ETH0.0006021812.92690678
Approve181802292023-09-20 22:57:35387 days ago1695250655IN
0x447044C7...D64f7C40F
0 ETH0.0006069913.03009163
Transfer181801742023-09-20 22:46:35387 days ago1695249995IN
0x447044C7...D64f7C40F
0 ETH0.0007489812.22526215
Approve181799012023-09-20 21:51:11387 days ago1695246671IN
0x447044C7...D64f7C40F
0 ETH0.0005972212.90681061
Approve181798502023-09-20 21:40:59387 days ago1695246059IN
0x447044C7...D64f7C40F
0 ETH0.0010371222.23490716
Approve181796202023-09-20 20:54:59387 days ago1695243299IN
0x447044C7...D64f7C40F
0 ETH0.0011554124.77086382
Approve181795682023-09-20 20:44:23387 days ago1695242663IN
0x447044C7...D64f7C40F
0 ETH0.0008993619.30624802
Approve181795602023-09-20 20:42:47387 days ago1695242567IN
0x447044C7...D64f7C40F
0 ETH0.0009271720.01149892
Approve181794762023-09-20 20:25:47387 days ago1695241547IN
0x447044C7...D64f7C40F
0 ETH0.0008095117.35508342
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
183044312023-10-08 7:59:35370 days ago1696751975
0x447044C7...D64f7C40F
0.00075384 ETH
183044312023-10-08 7:59:35370 days ago1696751975
0x447044C7...D64f7C40F
0.00149276 ETH
183044312023-10-08 7:59:35370 days ago1696751975
0x447044C7...D64f7C40F
0.00149276 ETH
183044312023-10-08 7:59:35370 days ago1696751975
0x447044C7...D64f7C40F
0.00373936 ETH
182329362023-09-28 8:06:23380 days ago1695888383
0x447044C7...D64f7C40F
0.00079343 ETH
182329362023-09-28 8:06:23380 days ago1695888383
0x447044C7...D64f7C40F
0.00157116 ETH
182329362023-09-28 8:06:23380 days ago1695888383
0x447044C7...D64f7C40F
0.00157116 ETH
182329362023-09-28 8:06:23380 days ago1695888383
0x447044C7...D64f7C40F
0.00393576 ETH
181901232023-09-22 8:13:23386 days ago1695370403
0x447044C7...D64f7C40F
0.00084023 ETH
181901232023-09-22 8:13:23386 days ago1695370403
0x447044C7...D64f7C40F
0.00166383 ETH
181901232023-09-22 8:13:23386 days ago1695370403
0x447044C7...D64f7C40F
0.00166383 ETH
181901232023-09-22 8:13:23386 days ago1695370403
0x447044C7...D64f7C40F
0.00416789 ETH
181839622023-09-21 11:30:23387 days ago1695295823
0x447044C7...D64f7C40F
0.00089638 ETH
181839622023-09-21 11:30:23387 days ago1695295823
0x447044C7...D64f7C40F
0.00177502 ETH
181839622023-09-21 11:30:23387 days ago1695295823
0x447044C7...D64f7C40F
0.00177502 ETH
181839622023-09-21 11:30:23387 days ago1695295823
0x447044C7...D64f7C40F
0.00444643 ETH
181802562023-09-20 23:02:59387 days ago1695250979
0x447044C7...D64f7C40F
0.0009606 ETH
181802562023-09-20 23:02:59387 days ago1695250979
0x447044C7...D64f7C40F
0.00190218 ETH
181802562023-09-20 23:02:59387 days ago1695250979
0x447044C7...D64f7C40F
0.00190218 ETH
181802562023-09-20 23:02:59387 days ago1695250979
0x447044C7...D64f7C40F
0.00476496 ETH
181801822023-09-20 22:48:11387 days ago1695250091
0x447044C7...D64f7C40F
0.00103286 ETH
181801822023-09-20 22:48:11387 days ago1695250091
0x447044C7...D64f7C40F
0.00204527 ETH
181801822023-09-20 22:48:11387 days ago1695250091
0x447044C7...D64f7C40F
0.00204527 ETH
181801822023-09-20 22:48:11387 days ago1695250091
0x447044C7...D64f7C40F
0.00512342 ETH
181796392023-09-20 20:58:47387 days ago1695243527
0x447044C7...D64f7C40F
0.00110699 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KiboInu

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-20
*/

/**
Ethereum's first fully automated GambleFi Lottery Based Token 
built directly into the tokenomics with a winner every 3 hours!  

https://kiboinu.com/
https://t.me/KiboInuLottery
https://twitter.com/KiboInu
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b <= a, errorMessage); return a - b;}}

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a / b;}}

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

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

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface stakeIntegration {
    function stakingWithdraw(address depositor, uint256 _amount) external;
    function stakingDeposit(address depositor, uint256 _amount) external;
    function stakingClaimToCompound(address sender, address recipient) external;
    function internalClaimRewards(address sender) external;
}

interface tokenStaking {
    function deposit(uint256 amount) external;
    function withdraw(uint256 amount) external;
    function compound() external;
}

interface Lottery {
    function lotteryTransaction(address user, uint256 amount) external;
    function viewMinPurchaseAmount() external view returns (uint256);
}

interface IFactory{
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract KiboInu is IERC20, tokenStaking, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Kibo Inu';
    string private constant _symbol = 'KIBO';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    Lottery public lotteryContract;
    bool private tradingAllowed;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 500;
    uint256 private developmentFee = 500;
    uint256 private lotteryFee = 500;
    uint256 private tokenFee = 0;
    uint256 private totalFee = 1500;
    uint256 private sellFee = 3000;
    uint256 private transferFee = 3000;
    uint256 private denominator = 10000;
    bool private swapEnabled;
    uint256 private swapTimes;
    uint256 private swapAmount = 1;
    bool private swapping;
    bool private feeless;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier feelessTransaction {feeless = true; _; feeless = false;}
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    mapping(address => uint256) public amountStaked;
    address internal token_receiver;
    uint256 public totalStaked;
    stakeIntegration internal stakingContract;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x1ca25568956CCD2838FcD543D3eA2E52efad8C50; 
    address internal marketing_receiver = 0x6F44a56a89b1CF62Cac3dd6A9928d0BBAA509467;
    address internal liquidity_receiver = 0x1ca25568956CCD2838FcD543D3eA2E52efad8C50;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        lotteryContract = Lottery(0x34Bd681F2F0267d4dcb346fbD2156e8542392952);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        token_receiver = address(lotteryContract);
        isFeeExempt[address(lotteryContract)] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[token_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[address(DEAD)] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function availableBalance(address wallet) public view returns (uint256) {return _balances[wallet].sub(amountStaked[wallet]);}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        checkTxLimit(sender, recipient, amount);
        swapbackCounters(sender, recipient);
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        checkLottery(sender, recipient, amount);
    }

    function checkLottery(address sender, address recipient, uint256 amount) internal {
        if(sender == pair && !isFeeExempt[recipient] && tradingAllowed && !swapping && !feeless){
            try lotteryContract.lotteryTransaction(recipient, amount) {} catch {}}
    }

    function setLotteryContract(address lotteryCA) external onlyOwner {
        lotteryContract = Lottery(lotteryCA); isFeeExempt[lotteryCA] = true; token_receiver = lotteryCA;
    }

    function internalDeposit(address sender, uint256 amount) internal {
        require(amount <= _balances[sender].sub(amountStaked[sender]), "ERC20: Cannot stake more than available balance");
        stakingContract.stakingDeposit(sender, amount);
        amountStaked[sender] = amountStaked[sender].add(amount);
        totalStaked = totalStaked.add(amount);
    }

    function deposit(uint256 amount) override external {
        internalDeposit(msg.sender, amount);
    }

    function withdraw(uint256 amount) override external {
        require(amount <= amountStaked[msg.sender], "ERC20: Cannot unstake more than amount staked");
        stakingContract.stakingWithdraw(msg.sender, amount);
        amountStaked[msg.sender] = amountStaked[msg.sender].sub(amount);
        totalStaked = totalStaked.sub(amount);
    }

    function compound() override external feelessTransaction {
        uint256 initialToken = balanceOf(msg.sender);
        stakingContract.stakingClaimToCompound(msg.sender, msg.sender);
        uint256 afterToken = balanceOf(msg.sender).sub(initialToken);
        internalDeposit(msg.sender, afterToken);
    }

    function setStakingAddress(address _staking) external onlyOwner {
        stakingContract = stakeIntegration(_staking); isFeeExempt[_staking] = true;
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender] && !swapping){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(amountStaked[sender] > uint256(0)){require((amount.add(amountStaked[sender])) <= _balances[sender], "ERC20: Exceeds maximum allowed not currently staked.");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function startTrading() external onlyOwner {
        tradingAllowed = true; swapEnabled = true;
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _development, uint256 _lottery, uint256 _token, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; developmentFee = _development; lotteryFee = _lottery; totalFee = _total; sellFee = _sell; transferFee = _trans; tokenFee = _token;
        require(totalFee <= denominator && sellFee <= denominator && tokenFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 20%");
    }

    function setParameters(uint256 _buy, uint256 _wallet) external onlyOwner {
        uint256 newTx = totalSupply().mul(_buy).div(uint256(10000));
        uint256 newWallet = totalSupply().mul(_wallet).div(uint256(10000)); uint256 limit = totalSupply().mul(5).div(10000);
        require(newTx >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%");
        _maxTxAmount = newTx; _maxWalletToken = newWallet;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development, address _token) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development; token_receiver = _token;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true; isFeeExempt[_token] = true;
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = totalFee.add(1).mul(2);
        if(totalFee == uint256(0)){_denominator = liquidityFee.add(
            marketingFee).add(lotteryFee).add(developmentFee).add(1).mul(2);}
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith, liquidity_receiver); }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount);}
        uint256 lotteryAmount = unitBalance.mul(2).mul(lotteryFee);
        if(lotteryAmount > 0){payable(address(lotteryContract)).transfer(lotteryAmount);}
        uint256 excessAmount = address(this).balance;
        if(excessAmount > uint256(0)){payable(development_receiver).transfer(excessAmount);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount, address receiver) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(receiver),
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }
    
    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] 
            && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair && sellFee > uint256(0)){return sellFee;}
        if(sender == pair && totalFee > uint256(0)){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0 && !swapping){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(tokenFee <= getTotalFee(sender, recipient) && tokenFee > uint256(0)){
            _transfer(address(this), address(token_receiver), amount.div(denominator).mul(tokenFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    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 rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this));
        uint256 tamount = _amount.mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, tamount);
    }

    function transferBalance(uint256 _amount) external {
        payable(development_receiver).transfer(_amount);
    }

    function setTokenAddress(address _address) external onlyOwner {
        token_receiver = _address;
    }

    function _claimStakingRewards() external {
        stakingContract.internalClaimRewards(msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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":"_claimStakingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"amountStaked","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":"wallet","type":"address"}],"name":"availableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryContract","outputs":[{"internalType":"contract Lottery","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lotteryCA","type":"address"}],"name":"setLotteryContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_lottery","type":"uint256"},{"internalType":"uint256","name":"_token","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"_amount","type":"uint256"}],"name":"transferBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000522565b6200002190620f424062000539565b600155612710600154606462000038919062000539565b62000044919062000553565b60025561271060015460646200005b919062000539565b62000067919062000553565b6003555f600a556101f4600b556101f4600c556101f4600d555f600e556105dc600f55610bb8601055610bb86011556127106012556001601555620186a06001546103e8620000b7919062000539565b620000c3919062000553565b601755620186a0600154600a620000db919062000539565b620000e7919062000553565b601855601d80546001600160a01b0319908116731ca25568956ccd2838fcd543d3ea2e52efad8c50908117909255601e80548216736f44a56a89b1cf62cac3dd6a9928d0bbaa509467179055601f805490911690911790553480156200014b575f80fd5b505f80546001600160a01b031990811633178255600980549091167334bd681f2f0267d4dcb346fbd2156e85423929521790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000573565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000243573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000269919062000573565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002b4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002da919062000573565b600780546001600160a01b038581166001600160a01b03199283161790925560088054848416908316179055600954601a805490921690831690811782555f908152600660209081526040808320805460ff1990811660019081179092553085528285208054821683179055601f54871685528285208054821683179055601e548716855282852080548216831790559454861684528184208054861682179055601d54909516835280832080548516861790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805485168617905533808452818420805490951686179094559354600482528483208190559351938452939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200059b565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200046757815f19048211156200044b576200044b62000413565b808516156200045957918102915b93841c93908002906200042c565b509250929050565b5f826200047f575060016200051c565b816200048d57505f6200051c565b8160018114620004a65760028114620004b157620004d1565b60019150506200051c565b60ff841115620004c557620004c562000413565b50506001821b6200051c565b5060208310610133831016604e8410600b8410161715620004f6575081810a6200051c565b62000502838362000427565b805f190482111562000518576200051862000413565b0290505b92915050565b5f6200053260ff8416836200046f565b9392505050565b80820281158282048414176200051c576200051c62000413565b5f826200056e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000584575f80fd5b81516001600160a01b038116811462000532575f80fd5b61247180620005a95f395ff3fe60806040526004361061020a575f3560e01c8063884870c711610113578063b29c662a1161009d578063e94dd17c1161006d578063e94dd17c14610627578063ef40a67014610646578063f2fde38b14610671578063f4e0d9ac14610690578063f69e2046146106af575f80fd5b8063b29c662a14610586578063b6b55f25146105a5578063dd62ed3e146105c4578063e2d6f94c14610608575f80fd5b80639358928b116100e35780639358928b146104e957806395d89b41146104fd578063a0821be314610529578063a8aa1b3114610548578063a9059cbb14610567575f80fd5b8063884870c71461045c578063893d20e81461047b5780638a60c4c1146104ab5780638cd4426d146104ca575f80fd5b80632e1a7d4d1161019457806348ff2b8b1161016457806348ff2b8b146103df57806370a08231146103fe57806378109e541461041d5780637d1db4a514610432578063817b1cd214610447575f80fd5b80632e1a7d4d1461034a5780632f54bf6e14610369578063313ce567146103965780633f4218e0146103b1575f80fd5b80631590a04f116101da5780631590a04f146102bb57806318160ddd146102da57806323b872dd146102f857806326a4e8d214610317578063293230b814610336575f80fd5b806305356b5c1461021557806305dc05251461022b57806306fdde031461024a578063095ea7b31461028c575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b506102296106c3565b005b348015610236575f80fd5b50610229610245366004612041565b61071d565b348015610255575f80fd5b506040805180820190915260088152674b69626f20496e7560c01b60208201525b604051610283919061209a565b60405180910390f35b348015610297575f80fd5b506102ab6102a63660046120e5565b6107e6565b6040519015158152602001610283565b3480156102c6575f80fd5b506102296102d536600461210f565b6107fc565b3480156102e5575f80fd5b506001545b604051908152602001610283565b348015610303575f80fd5b506102ab61031236600461212a565b610869565b348015610322575f80fd5b5061022961033136600461210f565b6108d1565b348015610341575f80fd5b5061022961091c565b348015610355575f80fd5b50610229610364366004612168565b610967565b348015610374575f80fd5b506102ab61038336600461210f565b5f546001600160a01b0391821691161490565b3480156103a1575f80fd5b5060405160098152602001610283565b3480156103bc575f80fd5b506102ab6103cb36600461210f565b60066020525f908152604090205460ff1681565b3480156103ea575f80fd5b506102296103f936600461218c565b610a76565b348015610409575f80fd5b506102ea61041836600461210f565b610ac9565b348015610428575f80fd5b506102ea60035481565b34801561043d575f80fd5b506102ea60025481565b348015610452575f80fd5b506102ea601b5481565b348015610467575f80fd5b506102296104763660046121c3565b610ae3565b348015610486575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610283565b3480156104b6575f80fd5b506102296104c5366004612168565b610be3565b3480156104d5575f80fd5b506102296104e43660046120e5565b610c1e565b3480156104f4575f80fd5b506102ea610d3e565b348015610508575f80fd5b506040805180820190915260048152634b49424f60e01b6020820152610276565b348015610534575f80fd5b506102ea61054336600461210f565b610d6d565b348015610553575f80fd5b50600854610493906001600160a01b031681565b348015610572575f80fd5b506102ab6105813660046120e5565b610d99565b348015610591575f80fd5b50600954610493906001600160a01b031681565b3480156105b0575f80fd5b506102296105bf366004612168565b610da5565b3480156105cf575f80fd5b506102ea6105de3660046121e3565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610613575f80fd5b5061022961062236600461220f565b610db2565b348015610632575f80fd5b5061022961064136600461225f565b610ea4565b348015610651575f80fd5b506102ea61066036600461210f565b60196020525f908152604090205481565b34801561067c575f80fd5b5061022961068b36600461210f565b610f09565b34801561069b575f80fd5b506102296106aa36600461210f565b610f85565b3480156106ba575f80fd5b50610229610fe7565b601c5460405163735a325560e01b81523360048201526001600160a01b039091169063735a3255906024015f604051808303815f87803b158015610705575f80fd5b505af1158015610717573d5f803e3d5ffd5b50505050565b5f546001600160a01b0316331461074f5760405162461bcd60e51b815260040161074690612288565b60405180910390fd5b601e80546001600160a01b039586166001600160a01b03199182168117909255601f805495871695821686179055601d805494871694821685179055601a805493909616921682179094555f93845260066020526040808520805460ff1990811660019081179092559486528186208054861682179055928552808520805485168417905590845290922080549091169091179055565b5f6107f2338484611089565b5060015b92915050565b5f546001600160a01b031633146108255760405162461bcd60e51b815260040161074690612288565b600980546001600160a01b039092166001600160a01b031992831681179091555f818152600660205260409020805460ff19166001179055601a8054909216179055565b5f6108758484846111ac565b6108c684336108c185604051806060016040528060288152602001612414602891396001600160a01b038a165f90815260056020908152604080832033845290915290205491906112d3565b611089565b5060015b9392505050565b5f546001600160a01b031633146108fa5760405162461bcd60e51b815260040161074690612288565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109455760405162461bcd60e51b815260040161074690612288565b6009805460ff60a01b1916600160a01b1790556013805460ff19166001179055565b335f908152601960205260409020548111156109db5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610746565b601c5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf29906044015f604051808303815f87803b158015610a24575f80fd5b505af1158015610a36573d5f803e3d5ffd5b5050335f90815260196020526040902054610a5492509050826112fe565b335f90815260196020526040902055601b54610a7090826112fe565b601b5550565b5f546001600160a01b03163314610a9f5760405162461bcd60e51b815260040161074690612288565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526004602052604090205490565b5f546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161074690612288565b5f610b2c612710610b2685610b2060015490565b90611309565b90611314565b90505f610b42612710610b2685610b2060015490565b90505f610b59612710610b266005610b2060015490565b9050808310158015610b6b5750808210155b610bd55760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610746565b506002919091556003555050565b601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610c1a573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610c475760405162461bcd60e51b815260040161074690612288565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caf91906122a8565b90505f610cc16064610b268486611309565b601d5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925085169063a9059cbb906044016020604051808303815f875af1158015610d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3791906122bf565b5050505050565b5f610d68610d4b5f610ac9565b610d62610d5961dead610ac9565b600154906112fe565b906112fe565b905090565b6001600160a01b0381165f9081526019602090815260408083205460049092528220546107f6916112fe565b5f6107f23384846111ac565b610daf338261131f565b50565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161074690612288565b600a889055600b879055600c869055600d859055600f83905560108290556011819055600e8490556012548311801590610e19575060125460105411155b8015610e295750601254600e5411155b8015610e39575060125460115411155b610e9a5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610746565b5050505050505050565b5f546001600160a01b03163314610ecd5760405162461bcd60e51b815260040161074690612288565b6015839055600154610ee890620186a090610b269085611309565b601755600154610f0190620186a090610b269084611309565b601855505050565b5f546001600160a01b03163314610f325760405162461bcd60e51b815260040161074690612288565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610fae5760405162461bcd60e51b815260040161074690612288565b601c80546001600160a01b039092166001600160a01b0319909216821790555f908152600660205260409020805460ff19166001179055565b6016805461ff0019166101001790555f61100033610ac9565b601c546040516334c5cbab60e11b8152336004820181905260248201529192506001600160a01b03169063698b9756906044015f604051808303815f87803b15801561104a575f80fd5b505af115801561105c573d5f803e3d5ffd5b505050505f61106e82610d6233610ac9565b905061107a338261131f565b50506016805461ff0019169055565b6001600160a01b0383166110eb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610746565b6001600160a01b03821661114c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610746565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6111b7838383611462565b6111c1838361159f565b6111cc83838361162e565b6111d7838383611717565b6111e18383611858565b6111ec8383836118bc565b6001600160a01b0383165f9081526004602052604090205461120e90826112fe565b6001600160a01b0384165f9081526004602052604081209190915561123384846118e0565b61123d5781611248565b611248848484611924565b6001600160a01b0384165f9081526004602052604090205490915061126d9082611a3f565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112c09085815260200190565b60405180910390a3610717848484611a4a565b5f81848411156112f65760405162461bcd60e51b8152600401610746919061209a565b505050900390565b5f6108ca82846122ee565b5f6108ca8284612301565b5f6108ca8284612318565b6001600160a01b0382165f9081526019602090815260408083205460049092529091205461134c916112fe565b8111156113b35760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610746565b601c5460405163773a0f0960e01b81526001600160a01b038481166004830152602482018490529091169063773a0f09906044015f604051808303815f87803b1580156113fe575f80fd5b505af1158015611410573d5f803e3d5ffd5b5050506001600160a01b0383165f90815260196020526040902054611436915082611a3f565b6001600160a01b0383165f90815260196020526040902055601b5461145b9082611a3f565b601b555050565b6001600160a01b0383166114c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610746565b6001600160a01b0382166115285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610746565b61153183610ac9565b81111561159a5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610746565b505050565b6001600160a01b0382165f9081526006602052604090205460ff161580156115df57506001600160a01b0381165f9081526006602052604090205460ff16155b15610c1a57600954600160a01b900460ff16610c1a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610746565b6001600160a01b0383165f9081526006602052604090205460ff1615801561166e57506001600160a01b0382165f9081526006602052604090205460ff16155b801561168857506008546001600160a01b03838116911614155b801561169f57506001600160a01b03821661dead14155b1561159a576003546001600160a01b0383165f908152600460205260409020546116c99083611a3f565b111561159a5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610746565b6001600160a01b0383165f90815260196020526040902054156117ce576001600160a01b0383165f90815260046020908152604080832054601990925290912054611763908390611a3f565b11156117ce5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2045786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610746565b600254811115806117f657506001600160a01b0383165f9081526006602052604090205460ff165b8061181857506001600160a01b0382165f9081526006602052604090205460ff165b61159a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610746565b6008546001600160a01b03828116911614801561188d57506001600160a01b0382165f9081526006602052604090205460ff16155b801561189c575060165460ff16155b15610c1a57600160145f8282546118b39190612337565b90915550505050565b6118c7838383611b22565b1561159a576118d7601754611bd1565b5f601455505050565b6001600160a01b0382165f9081526006602052604081205460ff161580156108ca5750506001600160a01b03165f9081526006602052604090205460ff1615919050565b5f806119308585611dd1565b118015611940575060165460ff16155b15611a38575f6119616119538686611dd1565b601254610b20908690611314565b305f9081526004602052604090205490915061197d9082611a3f565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119cd9085815260200190565b60405180910390a36119df8585611dd1565b600e54111580156119f157505f600e54115b15611a2657601a54600e54601254611a269230926001600160a01b0390911691611a219190610b20908990611314565b6111ac565b611a3083826112fe565b9150506108ca565b5092915050565b5f6108ca8284612337565b6008546001600160a01b038481169116148015611a7f57506001600160a01b0382165f9081526006602052604090205460ff16155b8015611a945750600954600160a01b900460ff165b8015611aa3575060165460ff16155b8015611ab75750601654610100900460ff16155b1561159a57600954604051637033876d60e11b81526001600160a01b038481166004830152602482018490529091169063e0670eda906044015f604051808303815f87803b158015611b07575f80fd5b505af1925050508015611b18575060015b1561159a57505050565b5f8060185483101590505f601754611b3930610ac9565b601654911115915060ff16158015611b53575060135460ff165b8015611b685750600954600160a01b900460ff165b8015611b715750815b8015611b9557506001600160a01b0386165f9081526006602052604090205460ff16155b8015611bae57506008546001600160a01b038681169116145b8015611bbe575060155460145410155b8015611bc75750805b9695505050505050565b6016805460ff19166001908117909155600f545f91611bf791600291610b209190611a3f565b600f54909150611c3757611c346002610b206001611c2e600c54611c2e600d54611c2e600b54600a54611a3f90919063ffffffff16565b90611a3f565b90505b5f611c5182610b26600a548661130990919063ffffffff16565b90505f611c5e84836112fe565b905047611c6a82611e35565b5f611c7547836112fe565b90505f611c97611c90600a54886112fe90919063ffffffff16565b8390611314565b90505f611caf600a548361130990919063ffffffff16565b90508015611cd057601f54611cd090879083906001600160a01b0316611f85565b600b545f90611ce490610b20856002611309565b90508015611d2557601e546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611d23573d5f803e3d5ffd5b505b600d545f90611d3990610b20866002611309565b90508015611d7a576009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611d78573d5f803e3d5ffd5b505b478015611dba57601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611db8573d5f803e3d5ffd5b505b50506016805460ff19169055505050505050505050565b6008545f906001600160a01b038381169116148015611df157505f601054115b15611dff57506010546107f6565b6008546001600160a01b038481169116148015611e1d57505f600f54115b15611e2b5750600f546107f6565b5060115492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e6857611e6861234a565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ebf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee3919061235e565b81600181518110611ef657611ef661234a565b6001600160a01b039283166020918202929092010152600754611f1c9130911684611089565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f549085905f90869030904290600401612379565b5f604051808303815f87803b158015611f6b575f80fd5b505af1158015611f7d573d5f803e3d5ffd5b505050505050565b600754611f9d9030906001600160a01b031685611089565b60075460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612008573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f7d91906123e8565b6001600160a01b0381168114610daf575f80fd5b5f805f8060808587031215612054575f80fd5b843561205f8161202d565b9350602085013561206f8161202d565b9250604085013561207f8161202d565b9150606085013561208f8161202d565b939692955090935050565b5f6020808352835180828501525f5b818110156120c5578581018301518582016040015282016120a9565b505f604082860101526040601f19601f8301168501019250505092915050565b5f80604083850312156120f6575f80fd5b82356121018161202d565b946020939093013593505050565b5f6020828403121561211f575f80fd5b81356108ca8161202d565b5f805f6060848603121561213c575f80fd5b83356121478161202d565b925060208401356121578161202d565b929592945050506040919091013590565b5f60208284031215612178575f80fd5b5035919050565b8015158114610daf575f80fd5b5f806040838503121561219d575f80fd5b82356121a88161202d565b915060208301356121b88161217f565b809150509250929050565b5f80604083850312156121d4575f80fd5b50508035926020909101359150565b5f80604083850312156121f4575f80fd5b82356121ff8161202d565b915060208301356121b88161202d565b5f805f805f805f80610100898b031215612227575f80fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b5f805f60608486031215612271575f80fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156122b8575f80fd5b5051919050565b5f602082840312156122cf575f80fd5b81516108ca8161217f565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107f6576107f66122da565b80820281158282048414176107f6576107f66122da565b5f8261233257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156107f6576107f66122da565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561236e575f80fd5b81516108ca8161202d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123c75784516001600160a01b0316835293830193918301916001016123a2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156123fa575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b27596e93236fb7ea535a3cccb39854c3581311f0e071bfd70d3a674fee46f9864736f6c63430008150033

Deployed Bytecode

0x60806040526004361061020a575f3560e01c8063884870c711610113578063b29c662a1161009d578063e94dd17c1161006d578063e94dd17c14610627578063ef40a67014610646578063f2fde38b14610671578063f4e0d9ac14610690578063f69e2046146106af575f80fd5b8063b29c662a14610586578063b6b55f25146105a5578063dd62ed3e146105c4578063e2d6f94c14610608575f80fd5b80639358928b116100e35780639358928b146104e957806395d89b41146104fd578063a0821be314610529578063a8aa1b3114610548578063a9059cbb14610567575f80fd5b8063884870c71461045c578063893d20e81461047b5780638a60c4c1146104ab5780638cd4426d146104ca575f80fd5b80632e1a7d4d1161019457806348ff2b8b1161016457806348ff2b8b146103df57806370a08231146103fe57806378109e541461041d5780637d1db4a514610432578063817b1cd214610447575f80fd5b80632e1a7d4d1461034a5780632f54bf6e14610369578063313ce567146103965780633f4218e0146103b1575f80fd5b80631590a04f116101da5780631590a04f146102bb57806318160ddd146102da57806323b872dd146102f857806326a4e8d214610317578063293230b814610336575f80fd5b806305356b5c1461021557806305dc05251461022b57806306fdde031461024a578063095ea7b31461028c575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b506102296106c3565b005b348015610236575f80fd5b50610229610245366004612041565b61071d565b348015610255575f80fd5b506040805180820190915260088152674b69626f20496e7560c01b60208201525b604051610283919061209a565b60405180910390f35b348015610297575f80fd5b506102ab6102a63660046120e5565b6107e6565b6040519015158152602001610283565b3480156102c6575f80fd5b506102296102d536600461210f565b6107fc565b3480156102e5575f80fd5b506001545b604051908152602001610283565b348015610303575f80fd5b506102ab61031236600461212a565b610869565b348015610322575f80fd5b5061022961033136600461210f565b6108d1565b348015610341575f80fd5b5061022961091c565b348015610355575f80fd5b50610229610364366004612168565b610967565b348015610374575f80fd5b506102ab61038336600461210f565b5f546001600160a01b0391821691161490565b3480156103a1575f80fd5b5060405160098152602001610283565b3480156103bc575f80fd5b506102ab6103cb36600461210f565b60066020525f908152604090205460ff1681565b3480156103ea575f80fd5b506102296103f936600461218c565b610a76565b348015610409575f80fd5b506102ea61041836600461210f565b610ac9565b348015610428575f80fd5b506102ea60035481565b34801561043d575f80fd5b506102ea60025481565b348015610452575f80fd5b506102ea601b5481565b348015610467575f80fd5b506102296104763660046121c3565b610ae3565b348015610486575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610283565b3480156104b6575f80fd5b506102296104c5366004612168565b610be3565b3480156104d5575f80fd5b506102296104e43660046120e5565b610c1e565b3480156104f4575f80fd5b506102ea610d3e565b348015610508575f80fd5b506040805180820190915260048152634b49424f60e01b6020820152610276565b348015610534575f80fd5b506102ea61054336600461210f565b610d6d565b348015610553575f80fd5b50600854610493906001600160a01b031681565b348015610572575f80fd5b506102ab6105813660046120e5565b610d99565b348015610591575f80fd5b50600954610493906001600160a01b031681565b3480156105b0575f80fd5b506102296105bf366004612168565b610da5565b3480156105cf575f80fd5b506102ea6105de3660046121e3565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610613575f80fd5b5061022961062236600461220f565b610db2565b348015610632575f80fd5b5061022961064136600461225f565b610ea4565b348015610651575f80fd5b506102ea61066036600461210f565b60196020525f908152604090205481565b34801561067c575f80fd5b5061022961068b36600461210f565b610f09565b34801561069b575f80fd5b506102296106aa36600461210f565b610f85565b3480156106ba575f80fd5b50610229610fe7565b601c5460405163735a325560e01b81523360048201526001600160a01b039091169063735a3255906024015f604051808303815f87803b158015610705575f80fd5b505af1158015610717573d5f803e3d5ffd5b50505050565b5f546001600160a01b0316331461074f5760405162461bcd60e51b815260040161074690612288565b60405180910390fd5b601e80546001600160a01b039586166001600160a01b03199182168117909255601f805495871695821686179055601d805494871694821685179055601a805493909616921682179094555f93845260066020526040808520805460ff1990811660019081179092559486528186208054861682179055928552808520805485168417905590845290922080549091169091179055565b5f6107f2338484611089565b5060015b92915050565b5f546001600160a01b031633146108255760405162461bcd60e51b815260040161074690612288565b600980546001600160a01b039092166001600160a01b031992831681179091555f818152600660205260409020805460ff19166001179055601a8054909216179055565b5f6108758484846111ac565b6108c684336108c185604051806060016040528060288152602001612414602891396001600160a01b038a165f90815260056020908152604080832033845290915290205491906112d3565b611089565b5060015b9392505050565b5f546001600160a01b031633146108fa5760405162461bcd60e51b815260040161074690612288565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109455760405162461bcd60e51b815260040161074690612288565b6009805460ff60a01b1916600160a01b1790556013805460ff19166001179055565b335f908152601960205260409020548111156109db5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610746565b601c5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf29906044015f604051808303815f87803b158015610a24575f80fd5b505af1158015610a36573d5f803e3d5ffd5b5050335f90815260196020526040902054610a5492509050826112fe565b335f90815260196020526040902055601b54610a7090826112fe565b601b5550565b5f546001600160a01b03163314610a9f5760405162461bcd60e51b815260040161074690612288565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526004602052604090205490565b5f546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161074690612288565b5f610b2c612710610b2685610b2060015490565b90611309565b90611314565b90505f610b42612710610b2685610b2060015490565b90505f610b59612710610b266005610b2060015490565b9050808310158015610b6b5750808210155b610bd55760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610746565b506002919091556003555050565b601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610c1a573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610c475760405162461bcd60e51b815260040161074690612288565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caf91906122a8565b90505f610cc16064610b268486611309565b601d5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925085169063a9059cbb906044016020604051808303815f875af1158015610d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3791906122bf565b5050505050565b5f610d68610d4b5f610ac9565b610d62610d5961dead610ac9565b600154906112fe565b906112fe565b905090565b6001600160a01b0381165f9081526019602090815260408083205460049092528220546107f6916112fe565b5f6107f23384846111ac565b610daf338261131f565b50565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161074690612288565b600a889055600b879055600c869055600d859055600f83905560108290556011819055600e8490556012548311801590610e19575060125460105411155b8015610e295750601254600e5411155b8015610e39575060125460115411155b610e9a5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610746565b5050505050505050565b5f546001600160a01b03163314610ecd5760405162461bcd60e51b815260040161074690612288565b6015839055600154610ee890620186a090610b269085611309565b601755600154610f0190620186a090610b269084611309565b601855505050565b5f546001600160a01b03163314610f325760405162461bcd60e51b815260040161074690612288565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610fae5760405162461bcd60e51b815260040161074690612288565b601c80546001600160a01b039092166001600160a01b0319909216821790555f908152600660205260409020805460ff19166001179055565b6016805461ff0019166101001790555f61100033610ac9565b601c546040516334c5cbab60e11b8152336004820181905260248201529192506001600160a01b03169063698b9756906044015f604051808303815f87803b15801561104a575f80fd5b505af115801561105c573d5f803e3d5ffd5b505050505f61106e82610d6233610ac9565b905061107a338261131f565b50506016805461ff0019169055565b6001600160a01b0383166110eb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610746565b6001600160a01b03821661114c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610746565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6111b7838383611462565b6111c1838361159f565b6111cc83838361162e565b6111d7838383611717565b6111e18383611858565b6111ec8383836118bc565b6001600160a01b0383165f9081526004602052604090205461120e90826112fe565b6001600160a01b0384165f9081526004602052604081209190915561123384846118e0565b61123d5781611248565b611248848484611924565b6001600160a01b0384165f9081526004602052604090205490915061126d9082611a3f565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112c09085815260200190565b60405180910390a3610717848484611a4a565b5f81848411156112f65760405162461bcd60e51b8152600401610746919061209a565b505050900390565b5f6108ca82846122ee565b5f6108ca8284612301565b5f6108ca8284612318565b6001600160a01b0382165f9081526019602090815260408083205460049092529091205461134c916112fe565b8111156113b35760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610746565b601c5460405163773a0f0960e01b81526001600160a01b038481166004830152602482018490529091169063773a0f09906044015f604051808303815f87803b1580156113fe575f80fd5b505af1158015611410573d5f803e3d5ffd5b5050506001600160a01b0383165f90815260196020526040902054611436915082611a3f565b6001600160a01b0383165f90815260196020526040902055601b5461145b9082611a3f565b601b555050565b6001600160a01b0383166114c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610746565b6001600160a01b0382166115285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610746565b61153183610ac9565b81111561159a5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610746565b505050565b6001600160a01b0382165f9081526006602052604090205460ff161580156115df57506001600160a01b0381165f9081526006602052604090205460ff16155b15610c1a57600954600160a01b900460ff16610c1a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610746565b6001600160a01b0383165f9081526006602052604090205460ff1615801561166e57506001600160a01b0382165f9081526006602052604090205460ff16155b801561168857506008546001600160a01b03838116911614155b801561169f57506001600160a01b03821661dead14155b1561159a576003546001600160a01b0383165f908152600460205260409020546116c99083611a3f565b111561159a5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610746565b6001600160a01b0383165f90815260196020526040902054156117ce576001600160a01b0383165f90815260046020908152604080832054601990925290912054611763908390611a3f565b11156117ce5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2045786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610746565b600254811115806117f657506001600160a01b0383165f9081526006602052604090205460ff165b8061181857506001600160a01b0382165f9081526006602052604090205460ff165b61159a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610746565b6008546001600160a01b03828116911614801561188d57506001600160a01b0382165f9081526006602052604090205460ff16155b801561189c575060165460ff16155b15610c1a57600160145f8282546118b39190612337565b90915550505050565b6118c7838383611b22565b1561159a576118d7601754611bd1565b5f601455505050565b6001600160a01b0382165f9081526006602052604081205460ff161580156108ca5750506001600160a01b03165f9081526006602052604090205460ff1615919050565b5f806119308585611dd1565b118015611940575060165460ff16155b15611a38575f6119616119538686611dd1565b601254610b20908690611314565b305f9081526004602052604090205490915061197d9082611a3f565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119cd9085815260200190565b60405180910390a36119df8585611dd1565b600e54111580156119f157505f600e54115b15611a2657601a54600e54601254611a269230926001600160a01b0390911691611a219190610b20908990611314565b6111ac565b611a3083826112fe565b9150506108ca565b5092915050565b5f6108ca8284612337565b6008546001600160a01b038481169116148015611a7f57506001600160a01b0382165f9081526006602052604090205460ff16155b8015611a945750600954600160a01b900460ff165b8015611aa3575060165460ff16155b8015611ab75750601654610100900460ff16155b1561159a57600954604051637033876d60e11b81526001600160a01b038481166004830152602482018490529091169063e0670eda906044015f604051808303815f87803b158015611b07575f80fd5b505af1925050508015611b18575060015b1561159a57505050565b5f8060185483101590505f601754611b3930610ac9565b601654911115915060ff16158015611b53575060135460ff165b8015611b685750600954600160a01b900460ff165b8015611b715750815b8015611b9557506001600160a01b0386165f9081526006602052604090205460ff16155b8015611bae57506008546001600160a01b038681169116145b8015611bbe575060155460145410155b8015611bc75750805b9695505050505050565b6016805460ff19166001908117909155600f545f91611bf791600291610b209190611a3f565b600f54909150611c3757611c346002610b206001611c2e600c54611c2e600d54611c2e600b54600a54611a3f90919063ffffffff16565b90611a3f565b90505b5f611c5182610b26600a548661130990919063ffffffff16565b90505f611c5e84836112fe565b905047611c6a82611e35565b5f611c7547836112fe565b90505f611c97611c90600a54886112fe90919063ffffffff16565b8390611314565b90505f611caf600a548361130990919063ffffffff16565b90508015611cd057601f54611cd090879083906001600160a01b0316611f85565b600b545f90611ce490610b20856002611309565b90508015611d2557601e546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611d23573d5f803e3d5ffd5b505b600d545f90611d3990610b20866002611309565b90508015611d7a576009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611d78573d5f803e3d5ffd5b505b478015611dba57601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611db8573d5f803e3d5ffd5b505b50506016805460ff19169055505050505050505050565b6008545f906001600160a01b038381169116148015611df157505f601054115b15611dff57506010546107f6565b6008546001600160a01b038481169116148015611e1d57505f600f54115b15611e2b5750600f546107f6565b5060115492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e6857611e6861234a565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ebf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee3919061235e565b81600181518110611ef657611ef661234a565b6001600160a01b039283166020918202929092010152600754611f1c9130911684611089565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f549085905f90869030904290600401612379565b5f604051808303815f87803b158015611f6b575f80fd5b505af1158015611f7d573d5f803e3d5ffd5b505050505050565b600754611f9d9030906001600160a01b031685611089565b60075460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612008573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f7d91906123e8565b6001600160a01b0381168114610daf575f80fd5b5f805f8060808587031215612054575f80fd5b843561205f8161202d565b9350602085013561206f8161202d565b9250604085013561207f8161202d565b9150606085013561208f8161202d565b939692955090935050565b5f6020808352835180828501525f5b818110156120c5578581018301518582016040015282016120a9565b505f604082860101526040601f19601f8301168501019250505092915050565b5f80604083850312156120f6575f80fd5b82356121018161202d565b946020939093013593505050565b5f6020828403121561211f575f80fd5b81356108ca8161202d565b5f805f6060848603121561213c575f80fd5b83356121478161202d565b925060208401356121578161202d565b929592945050506040919091013590565b5f60208284031215612178575f80fd5b5035919050565b8015158114610daf575f80fd5b5f806040838503121561219d575f80fd5b82356121a88161202d565b915060208301356121b88161217f565b809150509250929050565b5f80604083850312156121d4575f80fd5b50508035926020909101359150565b5f80604083850312156121f4575f80fd5b82356121ff8161202d565b915060208301356121b88161202d565b5f805f805f805f80610100898b031215612227575f80fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b5f805f60608486031215612271575f80fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156122b8575f80fd5b5051919050565b5f602082840312156122cf575f80fd5b81516108ca8161217f565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107f6576107f66122da565b80820281158282048414176107f6576107f66122da565b5f8261233257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156107f6576107f66122da565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561236e575f80fd5b81516108ca8161202d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123c75784516001600160a01b0316835293830193918301916001016123a2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156123fa575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b27596e93236fb7ea535a3cccb39854c3581311f0e071bfd70d3a674fee46f9864736f6c63430008150033

Deployed Bytecode Sourcemap

4172:15345:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19406:108;;;;;;;;;;;;;:::i;:::-;;13796:407;;;;;;;;;;-1:-1:-1;13796:407:0;;;;;:::i;:::-;;:::i;7132:67::-;;;;;;;;;;-1:-1:-1;7192:5:0;;;;;;;;;;;;-1:-1:-1;;;7192:5:0;;;;7132:67;;;;;;;:::i;:::-;;;;;;;;7916:133;;;;;;;;;;-1:-1:-1;7916:133:0;;;;;:::i;:::-;;:::i;:::-;;;1864:14:1;;1857:22;1839:41;;1827:2;1812:18;7916:133:0;1699:187:1;9719:180:0;;;;;;;;;;-1:-1:-1;9719:180:0;;;;;:::i;:::-;;:::i;7439:84::-;;;;;;;;;;-1:-1:-1;7509:12:0;;7439:84;;;2289:25:1;;;2277:2;2262:18;7439:84:0;2143:177:1;18221:309:0;;;;;;;;;;-1:-1:-1;18221:309:0;;;;;:::i;:::-;;:::i;19292:106::-;;;;;;;;;;-1:-1:-1;19292:106:0;;;;;:::i;:::-;;:::i;12346:103::-;;;;;;;;;;;;;:::i;10397:347::-;;;;;;;;;;-1:-1:-1;10397:347:0;;;;;:::i;:::-;;:::i;2422:87::-;;;;;;;;;;-1:-1:-1;2422:87:0;;;;;:::i;:::-;2477:4;2502:5;-1:-1:-1;;;;;2491:16:0;;;2502:5;;2491:16;;2422:87;7282:67;;;;;;;;;;-1:-1:-1;7282:67:0;;4393:1;3113:36:1;;3101:2;3086:18;7282:67:0;2971:184:1;4724:44:0;;;;;;;;;;-1:-1:-1;4724:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14211:124;;;;;;;;;;-1:-1:-1;14211:124:0;;;;;:::i;:::-;;:::i;7529:103::-;;;;;;;;;;-1:-1:-1;7529:103:0;;;;;:::i;:::-;;:::i;4533:63::-;;;;;;;;;;;;;;;;4466:60;;;;;;;;;;;;;;;;5773:26;;;;;;;;;;;;;;;;13025:450;;;;;;;;;;-1:-1:-1;13025:450:0;;;;;:::i;:::-;;:::i;7355:78::-;;;;;;;;;;-1:-1:-1;7407:7:0;7425:5;-1:-1:-1;;;;;7425:5:0;7355:78;;;-1:-1:-1;;;;;4087:32:1;;;4069:51;;4057:2;4042:18;7355:78:0;3923:203:1;19167:117:0;;;;;;;;;;-1:-1:-1;19167:117:0;;;;;:::i;:::-;;:::i;18881:278::-;;;;;;;;;;-1:-1:-1;18881:278:0;;;;;:::i;:::-;;:::i;8186:138::-;;;;;;;;;;;;;:::i;7205:71::-;;;;;;;;;;-1:-1:-1;7267:7:0;;;;;;;;;;;;-1:-1:-1;;;7267:7:0;;;;7205:71;;8055:125;;;;;;;;;;-1:-1:-1;8055:125:0;;;;;:::i;:::-;;:::i;4796:19::-;;;;;;;;;;-1:-1:-1;4796:19:0;;;;-1:-1:-1;;;;;4796:19:0;;;7638:139;;;;;;;;;;-1:-1:-1;7638:139:0;;;;;:::i;:::-;;:::i;4822:30::-;;;;;;;;;;-1:-1:-1;4822:30:0;;;;-1:-1:-1;;;;;4822:30:0;;;10284:105;;;;;;;;;;-1:-1:-1;10284:105:0;;;;;:::i;:::-;;:::i;7783:127::-;;;;;;;;;;-1:-1:-1;7783:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7881:18:0;;;7864:7;7881:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7783:127;12457:560;;;;;;;;;;-1:-1:-1;12457:560:0;;;;;:::i;:::-;;:::i;13483:305::-;;;;;;;;;;-1:-1:-1;13483:305:0;;;;;:::i;:::-;;:::i;5681:47::-;;;;;;;;;;-1:-1:-1;5681:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;2515:111;;;;;;;;;;-1:-1:-1;2515:111:0;;;;;:::i;:::-;;:::i;11074:157::-;;;;;;;;;;-1:-1:-1;11074:157:0;;;;;:::i;:::-;;:::i;10752:314::-;;;;;;;;;;;;;:::i;19406:108::-;19458:15;;:48;;-1:-1:-1;;;19458:48:0;;19495:10;19458:48;;;4069:51:1;-1:-1:-1;;;;;19458:15:0;;;;:36;;4042:18:1;;19458:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19406:108::o;13796:407::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;;;;;;;;;13934:18:::1;:31:::0;;-1:-1:-1;;;;;13934:31:0;;::::1;-1:-1:-1::0;;;;;;13934:31:0;;::::1;::::0;::::1;::::0;;;13967:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;14000:20:::1;:35:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;14037:14:::1;:23:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;13934:18:::1;14071:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;14071:30:0;;::::1;13934:31:::0;14071:30;;::::1;::::0;;;14103:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;14135:25;;;;;;:32;;;::::1;::::0;::::1;::::0;;14169:19;;;;;;:26;;;;::::1;::::0;;::::1;::::0;;13796:407::o;7916:133::-;7991:4;7998:37;8007:10;8019:7;8028:6;7998:8;:37::i;:::-;-1:-1:-1;8043:4:0;7916:133;;;;;:::o;9719:180::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;9796:15:::1;:36:::0;;-1:-1:-1;;;;;9796:36:0;;::::1;-1:-1:-1::0;;;;;;9796:36:0;;::::1;::::0;::::1;::::0;;;:15:::1;9834:22:::0;;;:11:::1;:22;::::0;;;;:29;;-1:-1:-1;;9834:29:0::1;9796:36:::0;9834:29:::1;::::0;;9865:14:::1;:26:::0;;;;::::1;;::::0;;9719:180::o;18221:309::-;18319:4;18336:36;18346:6;18354:9;18365:6;18336:9;:36::i;:::-;18383:117;18392:6;18400:10;18412:87;18448:6;18412:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18412:19:0;;;;;;:11;:19;;;;;;;;18432:10;18412:31;;;;;;;;;:87;:35;:87::i;:::-;18383:8;:117::i;:::-;-1:-1:-1;18518:4:0;18221:309;;;;;;:::o;19292:106::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;19365:14:::1;:25:::0;;-1:-1:-1;;;;;;19365:25:0::1;-1:-1:-1::0;;;;;19365:25:0;;;::::1;::::0;;;::::1;::::0;;19292:106::o;12346:103::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;12400:14:::1;:21:::0;;-1:-1:-1;;;;12400:21:0::1;-1:-1:-1::0;;;12400:21:0::1;::::0;;12423:11:::1;:18:::0;;-1:-1:-1;;12423:18:0::1;12417:4;12423:18;::::0;;12346:103::o;10397:347::-;10491:10;10478:24;;;;:12;:24;;;;;;10468:34;;;10460:92;;;;-1:-1:-1;;;10460:92:0;;6530:2:1;10460:92:0;;;6512:21:1;6569:2;6549:18;;;6542:30;6608:34;6588:18;;;6581:62;-1:-1:-1;;;6659:18:1;;;6652:43;6712:19;;10460:92:0;6328:409:1;10460:92:0;10563:15;;:51;;-1:-1:-1;;;10563:51:0;;10595:10;10563:51;;;6916::1;6983:18;;;6976:34;;;-1:-1:-1;;;;;10563:15:0;;;;:31;;6889:18:1;;10563:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10665:10:0;10652:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;10652:24:0;-1:-1:-1;10681:6:0;10652:28;:36::i;:::-;10638:10;10625:24;;;;:12;:24;;;;;:63;10713:11;;:23;;10729:6;10713:15;:23::i;:::-;10699:11;:37;-1:-1:-1;10397:347:0:o;14211:124::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14295:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;14295:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14211:124::o;7529:103::-;-1:-1:-1;;;;;7612:18:0;7595:7;7612:18;;;:9;:18;;;;;;;7529:103::o;13025:450::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;13109:13:::1;13125:43;13161:5;13125:23;13143:4;13125:13;7509:12:::0;;;7439:84;13125:13:::1;:17:::0;::::1;:23::i;:::-;:27:::0;::::1;:43::i;:::-;13109:59;;13179:17;13199:46;13238:5;13199:26;13217:7;13199:13;7509:12:::0;;;7439:84;13199:46:::1;13179:66;;13247:13;13263:31;13288:5;13263:20;13281:1;13263:13;7509:12:::0;;;7439:84;13263:31:::1;13247:47;;13322:5;13313;:14;;:36;;;;;13344:5;13331:9;:18;;13313:36;13305:102;;;::::0;-1:-1:-1;;;13305:102:0;;7223:2:1;13305:102:0::1;::::0;::::1;7205:21:1::0;7262:2;7242:18;;;7235:30;7301:34;7281:18;;;7274:62;-1:-1:-1;;;7352:18:1;;;7345:51;7413:19;;13305:102:0::1;7021:417:1::0;13305:102:0::1;-1:-1:-1::0;13418:12:0::1;:20:::0;;;;13440:15:::1;:27:::0;-1:-1:-1;;13025:450:0:o;19167:117::-;19237:20;;19229:47;;-1:-1:-1;;;;;19237:20:0;;;;19229:47;;;;;19268:7;;19237:20;19229:47;19237:20;19229:47;19268:7;19237:20;19229:47;;;;;;;;;;;;;;;;;;;;;19167:117;:::o;18881:278::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;18985:41:::1;::::0;-1:-1:-1;;;18985:41:0;;19020:4:::1;18985:41;::::0;::::1;4069:51:1::0;18967:15:0::1;::::0;-1:-1:-1;;;;;18985:26:0;::::1;::::0;::::1;::::0;4042:18:1;;18985:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18967:59:::0;-1:-1:-1;19037:15:0::1;19055:29;19080:3;19055:20;18967:59:::0;19067:7;19055:11:::1;:20::i;:29::-;19121:20;::::0;19095:56:::1;::::0;-1:-1:-1;;;19095:56:0;;-1:-1:-1;;;;;19121:20:0;;::::1;19095:56;::::0;::::1;6916:51:1::0;6983:18;;;6976:34;;;19037:47:0;;-1:-1:-1;19095:25:0;::::1;::::0;::::1;::::0;6889:18:1;;19095:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18956:203;;18881:278:::0;;:::o;8186:138::-;8245:7;8262:60;8300:21;8318:1;8300:9;:21::i;:::-;8262:33;8279:15;5887:42;8279:9;:15::i;:::-;8262:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;8255:67;;8186:138;:::o;8055:125::-;-1:-1:-1;;;;;8157:20:0;;8118:7;8157:20;;;:12;:20;;;;;;;;;8135:9;:17;;;;;;:43;;:21;:43::i;7638:139::-;7716:4;7723:40;7733:10;7745:9;7756:6;7723:9;:40::i;10284:105::-;10346:35;10362:10;10374:6;10346:15;:35::i;:::-;10284:105;:::o;12457:560::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;12652:12:::1;:25:::0;;;12679:12:::1;:25:::0;;;12706:14:::1;:29:::0;;;12737:10:::1;:21:::0;;;12760:8:::1;:17:::0;;;12779:7:::1;:15:::0;;;12796:11:::1;:20:::0;;;12818:8:::1;:17:::0;;;12866:11:::1;::::0;12854:23;::::1;::::0;::::1;::::0;:49:::1;;;12892:11;;12881:7;;:22;;12854:49;:76;;;;;12919:11;;12907:8;;:23;;12854:76;:106;;;;;12949:11;;12934;;:26;;12854:106;12846:163;;;::::0;-1:-1:-1;;;12846:163:0;;8084:2:1;12846:163:0::1;::::0;::::1;8066:21:1::0;8123:2;8103:18;;;8096:30;8162:34;8142:18;;;8135:62;-1:-1:-1;;;8213:18:1;;;8206:42;8265:19;;12846:163:0::1;7882:408:1::0;12846:163:0::1;12457:560:::0;;;;;;;;:::o;13483:305::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;13612:10:::1;:24:::0;;;13654:12:::1;::::0;:53:::1;::::0;13699:6:::1;::::0;13654:32:::1;::::0;13671:14;13654:16:::1;:32::i;:53::-;13638:13;:69:::0;13726:12:::1;::::0;:54:::1;::::0;13772:6:::1;::::0;13726:33:::1;::::0;13743:15;13726:16:::1;:33::i;:54::-;13709:14;:71:::0;-1:-1:-1;;;13483:305:0:o;2515:111::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;2581:5:::1;:11:::0;;-1:-1:-1;;;;;;2581:11:0::1;-1:-1:-1::0;;;;;2581:11:0;::::1;::::0;;::::1;::::0;;;2599:25:::1;::::0;4069:51:1;;;2599:25:0::1;::::0;4057:2:1;4042:18;2599:25:0::1;;;;;;;2515:111:::0;:::o;11074:157::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;11149:15:::1;:44:::0;;-1:-1:-1;;;;;11149:44:0;;::::1;-1:-1:-1::0;;;;;;11149:44:0;;::::1;::::0;::::1;::::0;;:15:::1;11195:21:::0;;;:11:::1;:21;::::0;;;;:28;;-1:-1:-1;;11195:28:0::1;11149:44:::0;11195:28:::1;::::0;;11074:157::o;10752:314::-;5573:7;:14;;-1:-1:-1;;5573:14:0;;;;;;10843:21:::1;10853:10;10843:9;:21::i;:::-;10875:15;::::0;:62:::1;::::0;-1:-1:-1;;;10875:62:0;;10914:10:::1;10875:62;::::0;::::1;8723:34:1::0;;;8773:18;;;8766:43;10820:44:0;;-1:-1:-1;;;;;;10875:15:0::1;::::0;:38:::1;::::0;8658:18:1;;10875:62:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10948:18;10969:39;10995:12;10969:21;10979:10;10969:9;:21::i;:39::-;10948:60;;11019:39;11035:10;11047;11019:15;:39::i;:::-;-1:-1:-1::0;;5592:7:0;:15;;-1:-1:-1;;5592:15:0;;;10752:314::o;18538:335::-;-1:-1:-1;;;;;18631:19:0;;18623:68;;;;-1:-1:-1;;;18623:68:0;;9022:2:1;18623:68:0;;;9004:21:1;9061:2;9041:18;;;9034:30;9100:34;9080:18;;;9073:62;-1:-1:-1;;;9151:18:1;;;9144:34;9195:19;;18623:68:0;8820:400:1;18623:68:0;-1:-1:-1;;;;;18710:21:0;;18702:68;;;;-1:-1:-1;;;18702:68:0;;9427:2:1;18702:68:0;;;9409:21:1;9466:2;9446:18;;;9439:30;9505:34;9485:18;;;9478:62;-1:-1:-1;;;9556:18:1;;;9549:32;9598:19;;18702:68:0;9225:398:1;18702:68:0;-1:-1:-1;;;;;18781:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18833:32;;2289:25:1;;;18833:32:0;;2262:18:1;18833:32:0;;;;;;;18538:335;;;:::o;8695:735::-;8784:37;8795:6;8803:9;8814:6;8784:10;:37::i;:::-;8832:38;8852:6;8860:9;8832:19;:38::i;:::-;8881:41;8896:6;8904:9;8915:6;8881:14;:41::i;:::-;8934:39;8947:6;8955:9;8966:6;8934:12;:39::i;:::-;8984:35;9001:6;9009:9;8984:16;:35::i;:::-;9030;9039:6;9047:9;9058:6;9030:8;:35::i;:::-;-1:-1:-1;;;;;9096:17:0;;;;;;:9;:17;;;;;;:29;;9118:6;9096:21;:29::i;:::-;-1:-1:-1;;;;;9076:17:0;;;;;;:9;:17;;;;;:49;;;;9161:32;9086:6;9183:9;9161:13;:32::i;:::-;:78;;9233:6;9161:78;;;9196:34;9204:6;9212:9;9223:6;9196:7;:34::i;:::-;-1:-1:-1;;;;;9273:20:0;;;;;;:9;:20;;;;;;9136:103;;-1:-1:-1;9273:40:0;;9136:103;9273:24;:40::i;:::-;-1:-1:-1;;;;;9250:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9329:43;;;;;;;;;;9357:14;2289:25:1;;2277:2;2262:18;;2143:177;9329:43:0;;;;;;;;9383:39;9396:6;9404:9;9415:6;9383:12;:39::i;754:162::-;840:7;886:12;878:6;;;;870:29;;;;-1:-1:-1;;;870:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;908:5:0;;;754:162::o;400:82::-;458:7;475:5;479:1;475;:5;:::i;488:82::-;546:7;563:5;567:1;563;:5;:::i;576:82::-;634:7;651:5;655:1;651;:5;:::i;9907:369::-;-1:-1:-1;;;;;10024:20:0;;;;;;:12;:20;;;;;;;;;10002:9;:17;;;;;;;:43;;:21;:43::i;:::-;9992:6;:53;;9984:113;;;;-1:-1:-1;;;9984:113:0;;10490:2:1;9984:113:0;;;10472:21:1;10529:2;10509:18;;;10502:30;10568:34;10548:18;;;10541:62;-1:-1:-1;;;10619:18:1;;;10612:45;10674:19;;9984:113:0;10288:411:1;9984:113:0;10108:15;;:46;;-1:-1:-1;;;10108:46:0;;-1:-1:-1;;;;;6934:32:1;;;10108:46:0;;;6916:51:1;6983:18;;;6976:34;;;10108:15:0;;;;:30;;6889:18:1;;10108:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;10188:20:0;;;;;;:12;:20;;;;;;:32;;-1:-1:-1;10213:6:0;10188:24;:32::i;:::-;-1:-1:-1;;;;;10165:20:0;;;;;;:12;:20;;;;;:55;10245:11;;:23;;10261:6;10245:15;:23::i;:::-;10231:11;:37;-1:-1:-1;;9907:369:0:o;8332:355::-;-1:-1:-1;;;;;8436:20:0;;8428:70;;;;-1:-1:-1;;;8428:70:0;;10906:2:1;8428:70:0;;;10888:21:1;10945:2;10925:18;;;10918:30;10984:34;10964:18;;;10957:62;-1:-1:-1;;;11035:18:1;;;11028:35;11080:19;;8428:70:0;10704:401:1;8428:70:0;-1:-1:-1;;;;;8517:23:0;;8509:71;;;;-1:-1:-1;;;8509:71:0;;11312:2:1;8509:71:0;;;11294:21:1;11351:2;11331:18;;;11324:30;11390:34;11370:18;;;11363:62;-1:-1:-1;;;11441:18:1;;;11434:33;11484:19;;8509:71:0;11110:399:1;8509:71:0;8609:17;8619:6;8609:9;:17::i;:::-;8599:6;:27;;8591:88;;;;-1:-1:-1;;;8591:88:0;;11716:2:1;8591:88:0;;;11698:21:1;11755:2;11735:18;;;11728:30;11794:34;11774:18;;;11767:62;-1:-1:-1;;;11845:18:1;;;11838:47;11902:19;;8591:88:0;11514:413:1;8591:88:0;8332:355;;;:::o;11239:191::-;-1:-1:-1;;;;;11332:19:0;;;;;;:11;:19;;;;;;;;11331:20;:47;;;;-1:-1:-1;;;;;;11356:22:0;;;;;;:11;:22;;;;;;;;11355:23;11331:47;11328:95;;;11388:14;;-1:-1:-1;;;11388:14:0;;;;11380:41;;;;-1:-1:-1;;;11380:41:0;;12134:2:1;11380:41:0;;;12116:21:1;12173:2;12153:18;;;12146:30;-1:-1:-1;;;12192:18:1;;;12185:44;12246:18;;11380:41:0;11932:338:1;11442:331:0;-1:-1:-1;;;;;11546:19:0;;;;;;:11;:19;;;;;;;;11545:20;:47;;;;-1:-1:-1;;;;;;11570:22:0;;;;;;:11;:22;;;;;;;;11569:23;11545:47;:77;;;;-1:-1:-1;11617:4:0;;-1:-1:-1;;;;;11596:26:0;;;11617:4;;11596:26;;11545:77;:107;;;;-1:-1:-1;;;;;;11626:26:0;;5887:42;11626:26;;11545:107;11542:224;;;11714:15;;-1:-1:-1;;;;;11677:20:0;;;;;;:9;:20;;;;;;:32;;11702:6;11677:24;:32::i;:::-;11676:53;;11668:96;;;;-1:-1:-1;;;11668:96:0;;12477:2:1;11668:96:0;;;12459:21:1;12516:2;12496:18;;;12489:30;12555:32;12535:18;;;12528:60;12605:18;;11668:96:0;12275:354:1;11961:377:0;-1:-1:-1;;;;;12062:20:0;;12093:1;12062:20;;;:12;:20;;;;;;:33;12059:160;;-1:-1:-1;;;;;12143:17:0;;;;;;:9;:17;;;;;;;;;12117:12;:20;;;;;;;12106:32;;:6;;:10;:32::i;:::-;12105:55;;12097:120;;;;-1:-1:-1;;;12097:120:0;;12836:2:1;12097:120:0;;;12818:21:1;12875:2;12855:18;;;12848:30;12914:34;12894:18;;;12887:62;-1:-1:-1;;;12965:18:1;;;12958:50;13025:19;;12097:120:0;12634:416:1;12097:120:0;12247:12;;12237:6;:22;;:45;;;-1:-1:-1;;;;;;12263:19:0;;;;;;:11;:19;;;;;;;;12237:45;:71;;;-1:-1:-1;;;;;;12286:22:0;;;;;;:11;:22;;;;;;;;12237:71;12229:101;;;;-1:-1:-1;;;12229:101:0;;13257:2:1;12229:101:0;;;13239:21:1;13296:2;13276:18;;;13269:30;-1:-1:-1;;;13315:18:1;;;13308:47;13372:18;;12229:101:0;13055:341:1;11781:172:0;11878:4;;-1:-1:-1;;;;;11865:17:0;;;11878:4;;11865:17;:41;;;;-1:-1:-1;;;;;;11887:19:0;;;;;;:11;:19;;;;;;;;11886:20;11865:41;:54;;;;-1:-1:-1;11911:8:0;;;;11910:9;11865:54;11862:84;;;11942:1;11921:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11781:172:0;;:::o;16933:197::-;17025:41;17040:6;17048:9;17059:6;17025:14;:41::i;:::-;17022:101;;;17068:29;17083:13;;17068:14;:29::i;:::-;17119:1;17099:9;:22;16933:197;;;:::o;17138:160::-;-1:-1:-1;;;;;17244:19:0;;17219:4;17244:19;;;:11;:19;;;;;;;;17243:20;:47;;;;-1:-1:-1;;;;;;;17268:22:0;;;;;:11;:22;;;;;;;;17267:23;;17138:160;-1:-1:-1;17138:160:0:o;17582:631::-;17668:7;17724:1;17691:30;17703:6;17711:9;17691:11;:30::i;:::-;:34;:47;;;;-1:-1:-1;17730:8:0;;;;17729:9;17691:47;17688:503;;;17750:17;17770:59;17798:30;17810:6;17818:9;17798:11;:30::i;:::-;17781:11;;17770:23;;:6;;:10;:23::i;:59::-;17885:4;17867:24;;;;:9;:24;;;;;;17750:79;;-1:-1:-1;17867:39:0;;17750:79;17867:28;:39::i;:::-;17858:4;17840:24;;;;:9;:24;;;;;;;:66;;;;17922:42;;-1:-1:-1;;;;;17922:42:0;;;;;;;17954:9;2289:25:1;;2277:2;2262:18;;2143:177;17922:42:0;;;;;;;;17990:30;18002:6;18010:9;17990:11;:30::i;:::-;17978:8;;:42;;:67;;;;;18043:1;18024:8;;:21;17978:67;17975:176;;;18094:14;;18139:8;;18122:11;;18061:88;;18079:4;;-1:-1:-1;;;;;18094:14:0;;;;18111:37;;18139:8;18111:23;;:6;;:10;:23::i;:37::-;18061:9;:88::i;:::-;18168:21;:6;18179:9;18168:10;:21::i;:::-;18161:28;;;;;17688:503;-1:-1:-1;18199:6:0;17582:631;-1:-1:-1;;17582:631:0:o;312:82::-;370:7;387:5;391:1;387;:5;:::i;9438:273::-;9544:4;;-1:-1:-1;;;;;9534:14:0;;;9544:4;;9534:14;:41;;;;-1:-1:-1;;;;;;9553:22:0;;;;;;:11;:22;;;;;;;;9552:23;9534:41;:59;;;;-1:-1:-1;9579:14:0;;-1:-1:-1;;;9579:14:0;;;;9534:59;:72;;;;-1:-1:-1;9598:8:0;;;;9597:9;9534:72;:84;;;;-1:-1:-1;9611:7:0;;;;;;;9610:8;9534:84;9531:173;;;9638:15;;:53;;-1:-1:-1;;;9638:53:0;;-1:-1:-1;;;;;6934:32:1;;;9638:53:0;;;6916:51:1;6983:18;;;6976:34;;;9638:15:0;;;;:34;;6889:18:1;;9638:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9634:69;;;9438:273;;;:::o;16512:413::-;16610:4;16627:13;16653:14;;16643:6;:24;;16627:40;;16678:19;16728:13;;16700:24;16718:4;16700:9;:24::i;:::-;16760:8;;16700:41;-1:-1:-1;16700:41:0;;-1:-1:-1;16760:8:0;;16759:9;:24;;;;-1:-1:-1;16772:11:0;;;;16759:24;:42;;;;-1:-1:-1;16787:14:0;;-1:-1:-1;;;16787:14:0;;;;16759:42;:54;;;;;16805:8;16759:54;:78;;;;-1:-1:-1;;;;;;16818:19:0;;;;;;:11;:19;;;;;;;;16817:20;16759:78;:113;;;;-1:-1:-1;16868:4:0;;-1:-1:-1;;;;;16855:17:0;;;16868:4;;16855:17;16759:113;:140;;;;;16889:10;;16876:9;;:23;;16759:140;:158;;;;;16903:14;16759:158;16752:165;16512:413;-1:-1:-1;;;;;;16512:413:0:o;14343:1347::-;5637:8;:15;;-1:-1:-1;;5637:15:0;5648:4;5637:15;;;;;;14437:8:::1;::::0;5637;;14437:22:::1;::::0;14457:1:::1;::::0;14437:15:::1;::::0;:8;:12:::1;:15::i;:22::-;14473:8;::::0;14414:45;;-1:-1:-1;14470:138:0::1;;14512:94;14604:1;14512:87;14597:1;14512:80;14577:14;;14512:60;14561:10;;14512:44;14543:12;;14512;;:16;;:44;;;;:::i;:::-;:48:::0;::::1;:60::i;:94::-;14497:109;;14470:138;14618:32;14653:42;14682:12;14653:24;14664:12;;14653:6;:10;;:24;;;;:::i;:42::-;14618:77:::0;-1:-1:-1;14706:14:0::1;14723:36;:6:::0;14618:77;14723:10:::1;:36::i;:::-;14706:53:::0;-1:-1:-1;14795:21:0::1;14827:24;14706:53:::0;14827:16:::1;:24::i;:::-;14862:20;14885:41;:21;14911:14:::0;14885:25:::1;:41::i;:::-;14862:64;;14937:19;14958:48;14975:30;14992:12;;14975;:16;;:30;;;;:::i;:::-;14958:12:::0;;:16:::1;:48::i;:::-;14937:69;;15017:29;15049;15065:12;;15049:11;:15;;:29;;;;:::i;:::-;15017:61:::0;-1:-1:-1;15092:34:0;;15089:123:::1;;15190:18;::::0;15128:81:::1;::::0;15141:24;;15167:21;;-1:-1:-1;;;;;15190:18:0::1;15128:12;:81::i;:::-;15271:12;::::0;15222:23:::1;::::0;15248:36:::1;::::0;:18:::1;:11:::0;15264:1:::1;15248:15;:18::i;:36::-;15222:62:::0;-1:-1:-1;15298:19:0;;15295:79:::1;;15327:18;::::0;15319:53:::1;::::0;-1:-1:-1;;;;;15327:18:0;;::::1;::::0;15319:53;::::1;;;::::0;15356:15;;15327:18:::1;15319:53:::0;15327:18;15319:53;15356:15;15327:18;15319:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15295:79;15431:10;::::0;15384:21:::1;::::0;15408:34:::1;::::0;:18:::1;:11:::0;15424:1:::1;15408:15;:18::i;:34::-;15384:58:::0;-1:-1:-1;15456:17:0;;15453:81:::1;;15491:15;::::0;15475:57:::1;::::0;-1:-1:-1;;;;;15491:15:0;;::::1;::::0;15475:57;::::1;;;::::0;15518:13;;15491:15:::1;15475:57:::0;15491:15;15475:57;15518:13;15491:15;15475:57;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15453:81;15567:21;15602:25:::0;;15599:84:::1;;15637:20;::::0;15629:52:::1;::::0;-1:-1:-1;;;;;15637:20:0;;::::1;::::0;15629:52;::::1;;;::::0;15668:12;;15637:20:::1;15629:52:::0;15637:20;15629:52;15668:12;15637:20;15629:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15599:84;-1:-1:-1::0;;5657:8:0;:16;;-1:-1:-1;;5657:16:0;;;-1:-1:-1;;;;;;;;;14343:1347:0:o;17306:268::-;17421:4;;17385:7;;-1:-1:-1;;;;;17408:17:0;;;17421:4;;17408:17;:41;;;;;17447:1;17429:7;;:20;17408:41;17405:62;;;-1:-1:-1;17458:7:0;;17451:14;;17405:62;17490:4;;-1:-1:-1;;;;;17480:14:0;;;17490:4;;17480:14;:39;;;;;17517:1;17498:8;;:21;17480:39;17477:61;;;-1:-1:-1;17528:8:0;;17521:15;;17477:61;-1:-1:-1;17555:11:0;;17306:268;;;;:::o;16066:434::-;16156:16;;;16170:1;16156:16;;;;;;;;16132:21;;16156:16;;;;;;;;;;-1:-1:-1;16156:16:0;16132:40;;16201:4;16183;16188:1;16183:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16183:23:0;;;:7;;;;;;;;;;:23;;;;16227:6;;:13;;;-1:-1:-1;;;16227:13:0;;;;:6;;;;;:11;;:13;;;;;16183:7;;16227:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16217:4;16222:1;16217:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16217:23:0;;;:7;;;;;;;;;:23;16283:6;;16251:53;;16268:4;;16283:6;16292:11;16251:8;:53::i;:::-;16315:6;;:177;;-1:-1:-1;;;16315:177:0;;-1:-1:-1;;;;;16315:6:0;;;;:57;;:177;;16387:11;;16315:6;;16429:4;;16456;;16476:15;;16315:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16121:379;16066:434;:::o;15698:360::-;15829:6;;15797:53;;15814:4;;-1:-1:-1;;;;;15829:6:0;15838:11;15797:8;:53::i;:::-;15861:6;;:189;;-1:-1:-1;;;15861:189:0;;15924:4;15861:189;;;15377:34:1;15427:18;;;15420:34;;;15861:6:0;15470:18:1;;;15463:34;;;15513:18;;;15506:34;-1:-1:-1;;;;;15577:15:1;;;15556:19;;;15549:44;16034:15:0;15609:19:1;;;15602:35;15861:6:0;;;;:22;;15891:9;;15311:19:1;;15861:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:671;236:6;244;252;260;313:3;301:9;292:7;288:23;284:33;281:53;;;330:1;327;320:12;281:53;369:9;356:23;388:31;413:5;388:31;:::i;:::-;438:5;-1:-1:-1;495:2:1;480:18;;467:32;508:33;467:32;508:33;:::i;:::-;560:7;-1:-1:-1;619:2:1;604:18;;591:32;632:33;591:32;632:33;:::i;:::-;684:7;-1:-1:-1;743:2:1;728:18;;715:32;756:33;715:32;756:33;:::i;:::-;150:671;;;;-1:-1:-1;150:671:1;;-1:-1:-1;;150:671:1:o;826:548::-;938:4;967:2;996;985:9;978:21;1028:6;1022:13;1071:6;1066:2;1055:9;1051:18;1044:34;1096:1;1106:140;1120:6;1117:1;1114:13;1106:140;;;1215:14;;;1211:23;;1205:30;1181:17;;;1200:2;1177:26;1170:66;1135:10;;1106:140;;;1110:3;1295:1;1290:2;1281:6;1270:9;1266:22;1262:31;1255:42;1365:2;1358;1354:7;1349:2;1341:6;1337:15;1333:29;1322:9;1318:45;1314:54;1306:62;;;;826:548;;;;:::o;1379:315::-;1447:6;1455;1508:2;1496:9;1487:7;1483:23;1479:32;1476:52;;;1524:1;1521;1514:12;1476:52;1563:9;1550:23;1582:31;1607:5;1582:31;:::i;:::-;1632:5;1684:2;1669:18;;;;1656:32;;-1:-1:-1;;;1379:315:1:o;1891:247::-;1950:6;2003:2;1991:9;1982:7;1978:23;1974:32;1971:52;;;2019:1;2016;2009:12;1971:52;2058:9;2045:23;2077:31;2102:5;2077:31;:::i;2325:456::-;2402:6;2410;2418;2471:2;2459:9;2450:7;2446:23;2442:32;2439:52;;;2487:1;2484;2477:12;2439:52;2526:9;2513:23;2545:31;2570:5;2545:31;:::i;:::-;2595:5;-1:-1:-1;2652:2:1;2637:18;;2624:32;2665:33;2624:32;2665:33;:::i;:::-;2325:456;;2717:7;;-1:-1:-1;;;2771:2:1;2756:18;;;;2743:32;;2325:456::o;2786:180::-;2845:6;2898:2;2886:9;2877:7;2873:23;2869:32;2866:52;;;2914:1;2911;2904:12;2866:52;-1:-1:-1;2937:23:1;;2786:180;-1:-1:-1;2786:180:1:o;3160:118::-;3246:5;3239:13;3232:21;3225:5;3222:32;3212:60;;3268:1;3265;3258:12;3283:382;3348:6;3356;3409:2;3397:9;3388:7;3384:23;3380:32;3377:52;;;3425:1;3422;3415:12;3377:52;3464:9;3451:23;3483:31;3508:5;3483:31;:::i;:::-;3533:5;-1:-1:-1;3590:2:1;3575:18;;3562:32;3603:30;3562:32;3603:30;:::i;:::-;3652:7;3642:17;;;3283:382;;;;;:::o;3670:248::-;3738:6;3746;3799:2;3787:9;3778:7;3774:23;3770:32;3767:52;;;3815:1;3812;3805:12;3767:52;-1:-1:-1;;3838:23:1;;;3908:2;3893:18;;;3880:32;;-1:-1:-1;3670:248:1:o;4354:388::-;4422:6;4430;4483:2;4471:9;4462:7;4458:23;4454:32;4451:52;;;4499:1;4496;4489:12;4451:52;4538:9;4525:23;4557:31;4582:5;4557:31;:::i;:::-;4607:5;-1:-1:-1;4664:2:1;4649:18;;4636:32;4677:33;4636:32;4677:33;:::i;4747:661::-;4869:6;4877;4885;4893;4901;4909;4917;4925;4978:3;4966:9;4957:7;4953:23;4949:33;4946:53;;;4995:1;4992;4985:12;4946:53;-1:-1:-1;;5018:23:1;;;5088:2;5073:18;;5060:32;;-1:-1:-1;5139:2:1;5124:18;;5111:32;;5190:2;5175:18;;5162:32;;-1:-1:-1;5241:3:1;5226:19;;5213:33;;-1:-1:-1;5293:3:1;5278:19;;5265:33;;-1:-1:-1;5345:3:1;5330:19;;5317:33;;-1:-1:-1;5397:3:1;5382:19;5369:33;;-1:-1:-1;4747:661:1;-1:-1:-1;4747:661:1:o;5413:316::-;5490:6;5498;5506;5559:2;5547:9;5538:7;5534:23;5530:32;5527:52;;;5575:1;5572;5565:12;5527:52;-1:-1:-1;;5598:23:1;;;5668:2;5653:18;;5640:32;;-1:-1:-1;5719:2:1;5704:18;;;5691:32;;5413:316;-1:-1:-1;5413:316:1:o;5994:329::-;6196:2;6178:21;;;6235:1;6215:18;;;6208:29;-1:-1:-1;;;6268:2:1;6253:18;;6246:36;6314:2;6299:18;;5994:329::o;7443:184::-;7513:6;7566:2;7554:9;7545:7;7541:23;7537:32;7534:52;;;7582:1;7579;7572:12;7534:52;-1:-1:-1;7605:16:1;;7443:184;-1:-1:-1;7443:184:1:o;7632:245::-;7699:6;7752:2;7740:9;7731:7;7727:23;7723:32;7720:52;;;7768:1;7765;7758:12;7720:52;7800:9;7794:16;7819:28;7841:5;7819:28;:::i;9628:127::-;9689:10;9684:3;9680:20;9677:1;9670:31;9720:4;9717:1;9710:15;9744:4;9741:1;9734:15;9760:128;9827:9;;;9848:11;;;9845:37;;;9862:18;;:::i;9893:168::-;9966:9;;;9997;;10014:15;;;10008:22;;9994:37;9984:71;;10035:18;;:::i;10066:217::-;10106:1;10132;10122:132;;10176:10;10171:3;10167:20;10164:1;10157:31;10211:4;10208:1;10201:15;10239:4;10236:1;10229:15;10122:132;-1:-1:-1;10268:9:1;;10066:217::o;13401:125::-;13466:9;;;13487:10;;;13484:36;;;13500:18;;:::i;13663:127::-;13724:10;13719:3;13715:20;13712:1;13705:31;13755:4;13752:1;13745:15;13779:4;13776:1;13769:15;13795:251;13865:6;13918:2;13906:9;13897:7;13893:23;13889:32;13886:52;;;13934:1;13931;13924:12;13886:52;13966:9;13960:16;13985:31;14010:5;13985:31;:::i;14051:980::-;14313:4;14361:3;14350:9;14346:19;14392:6;14381:9;14374:25;14418:2;14456:6;14451:2;14440:9;14436:18;14429:34;14499:3;14494:2;14483:9;14479:18;14472:31;14523:6;14558;14552:13;14589:6;14581;14574:22;14627:3;14616:9;14612:19;14605:26;;14666:2;14658:6;14654:15;14640:29;;14687:1;14697:195;14711:6;14708:1;14705:13;14697:195;;;14776:13;;-1:-1:-1;;;;;14772:39:1;14760:52;;14867:15;;;;14832:12;;;;14808:1;14726:9;14697:195;;;-1:-1:-1;;;;;;;14948:32:1;;;;14943:2;14928:18;;14921:60;-1:-1:-1;;;15012:3:1;14997:19;14990:35;14909:3;14051:980;-1:-1:-1;;;14051:980:1:o;15648:306::-;15736:6;15744;15752;15805:2;15793:9;15784:7;15780:23;15776:32;15773:52;;;15821:1;15818;15811:12;15773:52;15850:9;15844:16;15834:26;;15900:2;15889:9;15885:18;15879:25;15869:35;;15944:2;15933:9;15929:18;15923:25;15913:35;;15648:306;;;;;:::o

Swarm Source

ipfs://b27596e93236fb7ea535a3cccb39854c3581311f0e071bfd70d3a674fee46f98

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.