ETH Price: $3,322.92 (-1.26%)
 

Overview

Max Total Supply

100,000,000,000 BSTW

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.441757845 BSTW

Value
$0.00
0x30f8a0b82bd5fb32d3dae5df6d392316ac7766e1
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20BENDER

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-29
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.16;

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

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal 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 onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        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 renounceOwnership() external onlyOwner {
        authorizations[owner] = false;
        owner = address(0);
    }

}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

contract ERC20BENDER is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Bender Save The World";
    string public constant symbol = "BSTW";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 100 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 50;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public marketingFee = 3;
    uint256 public operationsFee = 2;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 600;
    uint256 sellMultiplier = 600;
    uint256 transferMultiplier = 600;

    address marketingFeeReceiver;
    address operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool tradingOpen = false;

    bool swapEnabled = true;
    uint256 swapThreshold = totalSupply / 500;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0xC703B029e09ca871B68c00C7fbEf7B612D8DB809;
        operationsFeeReceiver = 0x444c93b68619254c5053333EDCf376c56b2313B4;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 5,"Cannot set max wallet less than 0.5%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 5,"Cannot set max transaction less than 0.5%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"trading not open yet");
        }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

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

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function takeitlive() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function swapBack() internal swapping {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOperations = (amountETH * operationsFee) / totalFee;

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETHOperations}("");
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees_base100(uint256 _marketingFee, uint256 _operationsFee) external onlyOwner {
        marketingFee = _marketingFee;
        operationsFee = _operationsFee;
        totalFee = _marketingFee + _operationsFee;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

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":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"setFees_base100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeitlive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146009600a62000562565b620000259064174876e8006200057a565b6200003191906200059c565b6002556032620000446009600a62000562565b620000559064174876e8006200057a565b6200006191906200059c565b60035560036009556002600a55600a54600954620000809190620005bf565b600b55610258600c819055600d819055600e556011805461ffff60a01b1916600160a81b1790556101f4620000b86009600a62000562565b620000c99064174876e8006200057a565b620000d591906200059c565b601255348015620000e557600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560118054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa1580156200016c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001929190620005d5565b6001600160a01b039081166080526011546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002099190620005d5565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200025b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002819190620005d5565b6001600160a01b0390811660a05230600081815260056020908152604080832060115490951683529381528382206000199055600f80546001600160a01b031990811673c703b029e09ca871b68c00c7fbef7b612d8db809179091556010805490911673444c93b68619254c5053333edcf376c56b2313b417905533825260068152838220805460ff1990811660019081179092556007835285842080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216831790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805482168317905560089092528483208054831682179055928252928120805484168317905561dead90527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054909216179055620003d16009600a62000562565b620003e29064174876e8006200057a565b33600081815260046020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004256009600a62000562565b620004369064174876e8006200057a565b60405190815260200160405180910390a362000600565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004a45781600019048211156200048857620004886200044d565b808516156200049657918102915b93841c939080029062000468565b509250929050565b600082620004bd575060016200055c565b81620004cc575060006200055c565b8160018114620004e55760028114620004f05762000510565b60019150506200055c565b60ff8411156200050457620005046200044d565b50506001821b6200055c565b5060208310610133831016604e8410600b841016171562000535575081810a6200055c565b62000541838362000463565b80600019048211156200055857620005586200044d565b0290505b92915050565b60006200057360ff841683620004ac565b9392505050565b60008160001904831182151516156200059757620005976200044d565b500290565b600082620005ba57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200055c576200055c6200044d565b600060208284031215620005e857600080fd5b81516001600160a01b03811681146200057357600080fd5b60805160a051611d8962000642600039600081816105c401528181611063015281816113ec0152818161168a01526116be015260006114b60152611d896000f3fe6080604052600436106102135760003560e01c8063715018a611610118578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e14610676578063df20fd49146106bc578063f0b37c04146106dc578063f887ea40146106fc578063fe9fbb801461071c57600080fd5b8063a9059cbb146105e6578063b6a5d7de14610606578063bd9ab53714610626578063c867d60b1461064657600080fd5b8063893d20e8116100e7578063893d20e81461050b5780638b42507f1461053d57806395d89b411461056d578063963c44bf1461059d578063a8aa1b31146105b257600080fd5b8063715018a6146104aa57806377b54bad146104bf57806378109e54146104df5780637d1db4a5146104f557600080fd5b80632b112e491161019b57806348a5df041161016a57806348a5df0414610407578063571ac8b0146104275780636b67c4df146104475780636ce46bc31461045d57806370a082311461047d57600080fd5b80632b112e491461036c5780632f54bf6e14610381578063313ce567146103b05780633f4218e0146103d757600080fd5b8063180b0d7e116101e2578063180b0d7e146102ec57806318160ddd146103015780631da1db5e146103165780631df4ccfc1461033657806323b872dd1461034c57600080fd5b806306fdde031461021f578063090896be1461027657806309302dc61461029a578063095ea7b3146102bc57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102606040518060400160405280601581526020017410995b99195c8814d85d9948151a194815dbdc9b19605a1b81525081565b60405161026d9190611952565b60405180910390f35b34801561028257600080fd5b5061028c600a5481565b60405190815260200161026d565b3480156102a657600080fd5b506102ba6102b53660046119a0565b610755565b005b3480156102c857600080fd5b506102dc6102d73660046119d5565b61081e565b604051901515815260200161026d565b3480156102f857600080fd5b5061028c606481565b34801561030d57600080fd5b5061028c61088b565b34801561032257600080fd5b506102ba6103313660046119a0565b6108a9565b34801561034257600080fd5b5061028c600b5481565b34801561035857600080fd5b506102dc6103673660046119ff565b610922565b34801561037857600080fd5b5061028c6109e4565b34801561038d57600080fd5b506102dc61039c366004611a3b565b6000546001600160a01b0391821691161490565b3480156103bc57600080fd5b506103c5600981565b60405160ff909116815260200161026d565b3480156103e357600080fd5b506102dc6103f2366004611a3b565b60066020526000908152604090205460ff1681565b34801561041357600080fd5b506102ba610422366004611a56565b610a6c565b34801561043357600080fd5b506102dc610442366004611a3b565b610ab1565b34801561045357600080fd5b5061028c60095481565b34801561046957600080fd5b506102ba610478366004611a78565b610abf565b34801561048957600080fd5b5061028c610498366004611a3b565b60046020526000908152604090205481565b3480156104b657600080fd5b506102ba610b1d565b3480156104cb57600080fd5b506102dc6104da3660046119d5565b610b77565b3480156104eb57600080fd5b5061028c60035481565b34801561050157600080fd5b5061028c60025481565b34801561051757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026d565b34801561054957600080fd5b506102dc610558366004611a3b565b60076020526000908152604090205460ff1681565b34801561057957600080fd5b50610260604051806040016040528060048152602001634253545760e01b81525081565b3480156105a957600080fd5b506102ba610c86565b3480156105be57600080fd5b506105257f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f257600080fd5b506102dc6106013660046119d5565b610cc7565b34801561061257600080fd5b506102ba610621366004611a3b565b610cd4565b34801561063257600080fd5b506102ba6106413660046119a0565b610d25565b34801561065257600080fd5b506102dc610661366004611a3b565b60086020526000908152604090205460ff1681565b34801561068257600080fd5b5061028c610691366004611aa4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106c857600080fd5b506102ba6106d7366004611ae8565b610deb565b3480156106e857600080fd5b506102ba6106f7366004611a3b565b610e59565b34801561070857600080fd5b50601154610525906001600160a01b031681565b34801561072857600080fd5b506102dc610737366004611a3b565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146107885760405162461bcd60e51b815260040161077f90611b06565b60405180910390fd5b60058110156107e55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b606482015260840161077f565b6103e8816107f56009600a611c20565b6108049064174876e800611c2f565b61080e9190611c2f565b6108189190611c4e565b60035550565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108799086815260200190565b60405180910390a35060015b92915050565b6108976009600a611c20565b6108a69064174876e800611c2f565b81565b6000546001600160a01b031633146108d35760405162461bcd60e51b815260040161077f90611b06565b47600060646108e28484611c2f565b6108ec9190611c4e565b604051909150339082156108fc029083906000818181858888f1935050505015801561091c573d6000803e3d6000fd5b50505050565b6001600160a01b0383166000908152600560209081526040808320338452909152812054600019146109cf576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526005825283812033825290915291909120546109aa918490610f02565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6109da848484610f3c565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54909190610a446009600a611c20565b610a539064174876e800611c2f565b610a5d9190611c70565b610a679190611c70565b905090565b6000546001600160a01b03163314610a965760405162461bcd60e51b815260040161077f90611b06565b6009829055600a819055610aaa8183611c83565b600b555050565b60006108858260001961081e565b3360009081526001602052604090205460ff16610b0c5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015260640161077f565b600d91909155600c91909155600e55565b6000546001600160a01b03163314610b475760405162461bcd60e51b815260040161077f90611b06565b600080546001600160a01b03168152600160205260408120805460ff1916905580546001600160a01b0319169055565b600080546001600160a01b03163314610ba25760405162461bcd60e51b815260040161077f90611b06565b81600003610c15576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c129190611c96565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dd9190611caf565b6000546001600160a01b03163314610cb05760405162461bcd60e51b815260040161077f90611b06565b6011805461ffff60a01b191661010160a01b179055565b60006109dd338484610f3c565b6000546001600160a01b03163314610cfe5760405162461bcd60e51b815260040161077f90611b06565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610d4f5760405162461bcd60e51b815260040161077f90611b06565b6005811015610db25760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b606482015260840161077f565b6103e881610dc26009600a611c20565b610dd19064174876e800611c2f565b610ddb9190611c2f565b610de59190611c4e565b60025550565b6000546001600160a01b03163314610e155760405162461bcd60e51b815260040161077f90611b06565b6011805460ff60a81b1916600160a81b8415150217905580610e396009600a611c20565b610e489064174876e800611c2f565b610e529190611c4e565b6012555050565b6000546001600160a01b03163314610e835760405162461bcd60e51b815260040161077f90611b06565b6000546001600160a01b0390811690821603610ee15760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a6564000000000000604482015260640161077f565b6001600160a01b03166000908152600160205260409020805460ff19169055565b60008184841115610f265760405162461bcd60e51b815260040161077f9190611952565b506000610f338486611c70565b95945050505050565b60135460009060ff1615610f5c57610f558484846112f9565b90506109dd565b6001600160a01b03841660009081526001602052604090205460ff16158015610f9e57506001600160a01b03831660009081526001602052604090205460ff16155b15610ff357601154600160a01b900460ff16610ff35760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161077f565b6001600160a01b03841660009081526001602052604090205460ff1615801561103557506001600160a01b03841660009081526008602052604090205460ff16155b801561105a57506001600160a01b03831660009081526008602052604090205460ff16155b801561109857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611112576003546001600160a01b0384166000908152600460205260409020546110c4908490611c83565b11156111125760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161077f565b6002548211158061113b57506001600160a01b03841660009081526007602052604090205460ff165b8061115e57506001600160a01b03831660009081526007602052604090205460ff165b6111a25760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b604482015260640161077f565b6111aa6113df565b156111b7576111b7611452565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260049091529190912054611209918490610f02565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff168061125657506001600160a01b03841660009081526006602052604090205460ff165b61126a57611265858486611662565b61126c565b825b6001600160a01b03851660009081526004602052604090205490915061129290826117bf565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112e69085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260049091529182205461134a918490610f02565b6001600160a01b03808616600090815260046020526040808220939093559085168152205461137990836117bf565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113cd9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480159061141d575060135460ff16155b80156114325750601154600160a81b900460ff165b8015610a6757505060125430600090815260046020526040902054101590565b6013805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061149457611494611ccc565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106114e8576114e8611ccc565b6001600160a01b03928316602091820292909201015260115460125460405163791ac94760e01b8152919092169163791ac947916115329190600090869030904290600401611ce2565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600b54600954479350600092506115799084611c2f565b6115839190611c4e565b90506000600b54600a54846115989190611c2f565b6115a29190611c4e565b600f546040519192506000916001600160a01b039091169084908381818185875af1925050503d80600081146115f4576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b606091505b50506010546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611649576040519150601f19603f3d011682016040523d82523d6000602084013e61164e565b606091505b50506013805460ff19169055505050505050565b60008215806116715750600b54155b1561167d5750816109dd565b600e546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416036116bc5750600d546116fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036116fa5750600c545b600061172f61170a606480611c2f565b61172984611723600b548a61181e90919063ffffffff16565b9061181e565b906118a0565b905080156117ab573060009081526004602052604090205461175190826117bf565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117a29085815260200190565b60405180910390a35b6117b585826118e2565b9695505050505050565b6000806117cc8385611c83565b9050838110156109dd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161077f565b60008260000361183057506000610885565b600061183c8385611c2f565b9050826118498583611c4e565b146109dd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161077f565b60006109dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611924565b60006109dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f02565b600081836119455760405162461bcd60e51b815260040161077f9190611952565b506000610f338486611c4e565b600060208083528351808285015260005b8181101561197f57858101830151858201604001528201611963565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156119b257600080fd5b5035919050565b80356001600160a01b03811681146119d057600080fd5b919050565b600080604083850312156119e857600080fd5b6119f1836119b9565b946020939093013593505050565b600080600060608486031215611a1457600080fd5b611a1d846119b9565b9250611a2b602085016119b9565b9150604084013590509250925092565b600060208284031215611a4d57600080fd5b6109dd826119b9565b60008060408385031215611a6957600080fd5b50508035926020909101359150565b600080600060608486031215611a8d57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611ab757600080fd5b611ac0836119b9565b9150611ace602084016119b9565b90509250929050565b8015158114611ae557600080fd5b50565b60008060408385031215611afb57600080fd5b82356119f181611ad7565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611b77578160001904821115611b5d57611b5d611b26565b80851615611b6a57918102915b93841c9390800290611b41565b509250929050565b600082611b8e57506001610885565b81611b9b57506000610885565b8160018114611bb15760028114611bbb57611bd7565b6001915050610885565b60ff841115611bcc57611bcc611b26565b50506001821b610885565b5060208310610133831016604e8410600b8410161715611bfa575081810a610885565b611c048383611b3c565b8060001904821115611c1857611c18611b26565b029392505050565b60006109dd60ff841683611b7f565b6000816000190483118215151615611c4957611c49611b26565b500290565b600082611c6b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561088557610885611b26565b8082018082111561088557610885611b26565b600060208284031215611ca857600080fd5b5051919050565b600060208284031215611cc157600080fd5b81516109dd81611ad7565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d325784516001600160a01b031683529383019391830191600101611d0d565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220afaf5a7211dd1039602a45d8f849baa5d94b58ec961c13efbfc6efbd24ce432d64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102135760003560e01c8063715018a611610118578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e14610676578063df20fd49146106bc578063f0b37c04146106dc578063f887ea40146106fc578063fe9fbb801461071c57600080fd5b8063a9059cbb146105e6578063b6a5d7de14610606578063bd9ab53714610626578063c867d60b1461064657600080fd5b8063893d20e8116100e7578063893d20e81461050b5780638b42507f1461053d57806395d89b411461056d578063963c44bf1461059d578063a8aa1b31146105b257600080fd5b8063715018a6146104aa57806377b54bad146104bf57806378109e54146104df5780637d1db4a5146104f557600080fd5b80632b112e491161019b57806348a5df041161016a57806348a5df0414610407578063571ac8b0146104275780636b67c4df146104475780636ce46bc31461045d57806370a082311461047d57600080fd5b80632b112e491461036c5780632f54bf6e14610381578063313ce567146103b05780633f4218e0146103d757600080fd5b8063180b0d7e116101e2578063180b0d7e146102ec57806318160ddd146103015780631da1db5e146103165780631df4ccfc1461033657806323b872dd1461034c57600080fd5b806306fdde031461021f578063090896be1461027657806309302dc61461029a578063095ea7b3146102bc57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102606040518060400160405280601581526020017410995b99195c8814d85d9948151a194815dbdc9b19605a1b81525081565b60405161026d9190611952565b60405180910390f35b34801561028257600080fd5b5061028c600a5481565b60405190815260200161026d565b3480156102a657600080fd5b506102ba6102b53660046119a0565b610755565b005b3480156102c857600080fd5b506102dc6102d73660046119d5565b61081e565b604051901515815260200161026d565b3480156102f857600080fd5b5061028c606481565b34801561030d57600080fd5b5061028c61088b565b34801561032257600080fd5b506102ba6103313660046119a0565b6108a9565b34801561034257600080fd5b5061028c600b5481565b34801561035857600080fd5b506102dc6103673660046119ff565b610922565b34801561037857600080fd5b5061028c6109e4565b34801561038d57600080fd5b506102dc61039c366004611a3b565b6000546001600160a01b0391821691161490565b3480156103bc57600080fd5b506103c5600981565b60405160ff909116815260200161026d565b3480156103e357600080fd5b506102dc6103f2366004611a3b565b60066020526000908152604090205460ff1681565b34801561041357600080fd5b506102ba610422366004611a56565b610a6c565b34801561043357600080fd5b506102dc610442366004611a3b565b610ab1565b34801561045357600080fd5b5061028c60095481565b34801561046957600080fd5b506102ba610478366004611a78565b610abf565b34801561048957600080fd5b5061028c610498366004611a3b565b60046020526000908152604090205481565b3480156104b657600080fd5b506102ba610b1d565b3480156104cb57600080fd5b506102dc6104da3660046119d5565b610b77565b3480156104eb57600080fd5b5061028c60035481565b34801561050157600080fd5b5061028c60025481565b34801561051757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026d565b34801561054957600080fd5b506102dc610558366004611a3b565b60076020526000908152604090205460ff1681565b34801561057957600080fd5b50610260604051806040016040528060048152602001634253545760e01b81525081565b3480156105a957600080fd5b506102ba610c86565b3480156105be57600080fd5b506105257f00000000000000000000000093541993c1cb4e783f5783d1ed8a9a734554a2f981565b3480156105f257600080fd5b506102dc6106013660046119d5565b610cc7565b34801561061257600080fd5b506102ba610621366004611a3b565b610cd4565b34801561063257600080fd5b506102ba6106413660046119a0565b610d25565b34801561065257600080fd5b506102dc610661366004611a3b565b60086020526000908152604090205460ff1681565b34801561068257600080fd5b5061028c610691366004611aa4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106c857600080fd5b506102ba6106d7366004611ae8565b610deb565b3480156106e857600080fd5b506102ba6106f7366004611a3b565b610e59565b34801561070857600080fd5b50601154610525906001600160a01b031681565b34801561072857600080fd5b506102dc610737366004611a3b565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146107885760405162461bcd60e51b815260040161077f90611b06565b60405180910390fd5b60058110156107e55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b606482015260840161077f565b6103e8816107f56009600a611c20565b6108049064174876e800611c2f565b61080e9190611c2f565b6108189190611c4e565b60035550565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108799086815260200190565b60405180910390a35060015b92915050565b6108976009600a611c20565b6108a69064174876e800611c2f565b81565b6000546001600160a01b031633146108d35760405162461bcd60e51b815260040161077f90611b06565b47600060646108e28484611c2f565b6108ec9190611c4e565b604051909150339082156108fc029083906000818181858888f1935050505015801561091c573d6000803e3d6000fd5b50505050565b6001600160a01b0383166000908152600560209081526040808320338452909152812054600019146109cf576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526005825283812033825290915291909120546109aa918490610f02565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6109da848484610f3c565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54909190610a446009600a611c20565b610a539064174876e800611c2f565b610a5d9190611c70565b610a679190611c70565b905090565b6000546001600160a01b03163314610a965760405162461bcd60e51b815260040161077f90611b06565b6009829055600a819055610aaa8183611c83565b600b555050565b60006108858260001961081e565b3360009081526001602052604090205460ff16610b0c5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015260640161077f565b600d91909155600c91909155600e55565b6000546001600160a01b03163314610b475760405162461bcd60e51b815260040161077f90611b06565b600080546001600160a01b03168152600160205260408120805460ff1916905580546001600160a01b0319169055565b600080546001600160a01b03163314610ba25760405162461bcd60e51b815260040161077f90611b06565b81600003610c15576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c129190611c96565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dd9190611caf565b6000546001600160a01b03163314610cb05760405162461bcd60e51b815260040161077f90611b06565b6011805461ffff60a01b191661010160a01b179055565b60006109dd338484610f3c565b6000546001600160a01b03163314610cfe5760405162461bcd60e51b815260040161077f90611b06565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610d4f5760405162461bcd60e51b815260040161077f90611b06565b6005811015610db25760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b606482015260840161077f565b6103e881610dc26009600a611c20565b610dd19064174876e800611c2f565b610ddb9190611c2f565b610de59190611c4e565b60025550565b6000546001600160a01b03163314610e155760405162461bcd60e51b815260040161077f90611b06565b6011805460ff60a81b1916600160a81b8415150217905580610e396009600a611c20565b610e489064174876e800611c2f565b610e529190611c4e565b6012555050565b6000546001600160a01b03163314610e835760405162461bcd60e51b815260040161077f90611b06565b6000546001600160a01b0390811690821603610ee15760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a6564000000000000604482015260640161077f565b6001600160a01b03166000908152600160205260409020805460ff19169055565b60008184841115610f265760405162461bcd60e51b815260040161077f9190611952565b506000610f338486611c70565b95945050505050565b60135460009060ff1615610f5c57610f558484846112f9565b90506109dd565b6001600160a01b03841660009081526001602052604090205460ff16158015610f9e57506001600160a01b03831660009081526001602052604090205460ff16155b15610ff357601154600160a01b900460ff16610ff35760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161077f565b6001600160a01b03841660009081526001602052604090205460ff1615801561103557506001600160a01b03841660009081526008602052604090205460ff16155b801561105a57506001600160a01b03831660009081526008602052604090205460ff16155b801561109857507f00000000000000000000000093541993c1cb4e783f5783d1ed8a9a734554a2f96001600160a01b0316836001600160a01b031614155b15611112576003546001600160a01b0384166000908152600460205260409020546110c4908490611c83565b11156111125760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161077f565b6002548211158061113b57506001600160a01b03841660009081526007602052604090205460ff165b8061115e57506001600160a01b03831660009081526007602052604090205460ff165b6111a25760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b604482015260640161077f565b6111aa6113df565b156111b7576111b7611452565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260049091529190912054611209918490610f02565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff168061125657506001600160a01b03841660009081526006602052604090205460ff165b61126a57611265858486611662565b61126c565b825b6001600160a01b03851660009081526004602052604090205490915061129290826117bf565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112e69085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260049091529182205461134a918490610f02565b6001600160a01b03808616600090815260046020526040808220939093559085168152205461137990836117bf565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113cd9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f00000000000000000000000093541993c1cb4e783f5783d1ed8a9a734554a2f9161480159061141d575060135460ff16155b80156114325750601154600160a81b900460ff165b8015610a6757505060125430600090815260046020526040902054101590565b6013805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061149457611494611ccc565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106114e8576114e8611ccc565b6001600160a01b03928316602091820292909201015260115460125460405163791ac94760e01b8152919092169163791ac947916115329190600090869030904290600401611ce2565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600b54600954479350600092506115799084611c2f565b6115839190611c4e565b90506000600b54600a54846115989190611c2f565b6115a29190611c4e565b600f546040519192506000916001600160a01b039091169084908381818185875af1925050503d80600081146115f4576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b606091505b50506010546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611649576040519150601f19603f3d011682016040523d82523d6000602084013e61164e565b606091505b50506013805460ff19169055505050505050565b60008215806116715750600b54155b1561167d5750816109dd565b600e546001600160a01b037f00000000000000000000000093541993c1cb4e783f5783d1ed8a9a734554a2f98116908416036116bc5750600d546116fa565b7f00000000000000000000000093541993c1cb4e783f5783d1ed8a9a734554a2f96001600160a01b0316856001600160a01b0316036116fa5750600c545b600061172f61170a606480611c2f565b61172984611723600b548a61181e90919063ffffffff16565b9061181e565b906118a0565b905080156117ab573060009081526004602052604090205461175190826117bf565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117a29085815260200190565b60405180910390a35b6117b585826118e2565b9695505050505050565b6000806117cc8385611c83565b9050838110156109dd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161077f565b60008260000361183057506000610885565b600061183c8385611c2f565b9050826118498583611c4e565b146109dd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161077f565b60006109dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611924565b60006109dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f02565b600081836119455760405162461bcd60e51b815260040161077f9190611952565b506000610f338486611c4e565b600060208083528351808285015260005b8181101561197f57858101830151858201604001528201611963565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156119b257600080fd5b5035919050565b80356001600160a01b03811681146119d057600080fd5b919050565b600080604083850312156119e857600080fd5b6119f1836119b9565b946020939093013593505050565b600080600060608486031215611a1457600080fd5b611a1d846119b9565b9250611a2b602085016119b9565b9150604084013590509250925092565b600060208284031215611a4d57600080fd5b6109dd826119b9565b60008060408385031215611a6957600080fd5b50508035926020909101359150565b600080600060608486031215611a8d57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611ab757600080fd5b611ac0836119b9565b9150611ace602084016119b9565b90509250929050565b8015158114611ae557600080fd5b50565b60008060408385031215611afb57600080fd5b82356119f181611ad7565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611b77578160001904821115611b5d57611b5d611b26565b80851615611b6a57918102915b93841c9390800290611b41565b509250929050565b600082611b8e57506001610885565b81611b9b57506000610885565b8160018114611bb15760028114611bbb57611bd7565b6001915050610885565b60ff841115611bcc57611bcc611b26565b50506001821b610885565b5060208310610133831016604e8410600b8410161715611bfa575081810a610885565b611c048383611b3c565b8060001904821115611c1857611c18611b26565b029392505050565b60006109dd60ff841683611b7f565b6000816000190483118215151615611c4957611c49611b26565b500290565b600082611c6b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561088557610885611b26565b8082018082111561088557610885611b26565b600060208284031215611ca857600080fd5b5051919050565b600060208284031215611cc157600080fd5b81516109dd81611ad7565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d325784516001600160a01b031683529383019391830191600101611d0d565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220afaf5a7211dd1039602a45d8f849baa5d94b58ec961c13efbfc6efbd24ce432d64736f6c63430008100033

Deployed Bytecode Sourcemap

3405:8725:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3660:53;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3660:53:0;;;;;;;;;;;;:::i;:::-;;;;;;;;4320:32;;;;;;;;;;;;;;;;;;;713:25:1;;;701:2;686:18;4320:32:0;567:177:1;6968:261:0;;;;;;;;;;-1:-1:-1;6968:261:0;;;;;:::i;:::-;;:::i;:::-;;6072:216;;;;;;;;;;-1:-1:-1;6072:216:0;;;;;:::i;:::-;;:::i;:::-;;;1536:14:1;;1529:22;1511:41;;1499:2;1484:18;6072:216:0;1371:187:1;4420:44:0;;;;;;;;;;;;4461:3;4420:44;;3808:64;;;;;;;;;;;;;:::i;9908:259::-;;;;;;;;;;-1:-1:-1;9908:259:0;;;;;:::i;:::-;;:::i;4359:54::-;;;;;;;;;;;;;;;;6590:370;;;;;;;;;;-1:-1:-1;6590:370:0;;;;;:::i;:::-;;:::i;11990:137::-;;;;;;;;;;;;;:::i;2570:103::-;;;;;;;;;;-1:-1:-1;2570:103:0;;;;;:::i;:::-;2625:4;2660:5;-1:-1:-1;;;;;2649:16:0;;;2660:5;;2649:16;;2570:103;3765:34;;;;;;;;;;;;3798:1;3765:34;;;;;2259:4:1;2247:17;;;2229:36;;2217:2;2202:18;3765:34:0;2087:184:1;4115:44:0;;;;;;;;;;-1:-1:-1;4115:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11564:231;;;;;;;;;;-1:-1:-1;11564:231:0;;;;;:::i;:::-;;:::i;6296:122::-;;;;;;;;;;-1:-1:-1;6296:122:0;;;;;:::i;:::-;;:::i;4282:31::-;;;;;;;;;;;;;;;;11357:199;;;;;;;;;;-1:-1:-1;11357:199:0;;;;;:::i;:::-;;:::i;3993:45::-;;;;;;;;;;-1:-1:-1;3993:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2796:125;;;;;;;;;;;;;:::i;10175:286::-;;;;;;;;;;-1:-1:-1;10175:286:0;;;;;:::i;:::-;;:::i;3935:49::-;;;;;;;;;;;;;;;;3881:47;;;;;;;;;;;;;;;;5847:78;;;;;;;;;;-1:-1:-1;5899:7:0;5917:5;-1:-1:-1;;;;;5917:5:0;5847:78;;;-1:-1:-1;;;;;3014:32:1;;;2996:51;;2984:2;2969:18;5847:78:0;2850:203:1;4166:48:0;;;;;;;;;;-1:-1:-1;4166:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3720:38;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3720:38:0;;;;;10469:107;;;;;;;;;;;;;:::i;4691:29::-;;;;;;;;;;;;;;;6426:156;;;;;;;;;;-1:-1:-1;6426:156:0;;;;;:::i;:::-;;:::i;2299:94::-;;;;;;;;;;-1:-1:-1;2299:94:0;;;;;:::i;:::-;;:::i;7237:262::-;;;;;;;;;;-1:-1:-1;7237:262:0;;;;;:::i;:::-;;:::i;4221:52::-;;;;;;;;;;-1:-1:-1;4221:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5931:133;;;;;;;;;;-1:-1:-1;5931:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6033:19:0;;;6015:7;6033:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5931:133;11803:179;;;;;;;;;;-1:-1:-1;11803:179:0;;;;;:::i;:::-;;:::i;2401:161::-;;;;;;;;;;-1:-1:-1;2401:161:0;;;;;:::i;:::-;;:::i;4660:24::-;;;;;;;;;;-1:-1:-1;4660:24:0;;;;-1:-1:-1;;;;;4660:24:0;;;2681:107;;;;;;;;;;-1:-1:-1;2681:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;2761:19:0;2737:4;2761:19;;;:14;:19;;;;;;;;;2681:107;6968:261;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;;;;;;;;;7104:1:::1;7077:23;:28;;7069:76;;;::::0;-1:-1:-1;;;7069:76:0;;4522:2:1;7069:76:0::1;::::0;::::1;4504:21:1::0;4561:2;4541:18;;;4534:30;4600:34;4580:18;;;4573:62;-1:-1:-1;;;4651:18:1;;;4644:34;4695:19;;7069:76:0::1;4320:400:1::0;7069:76:0::1;7217:4;7189:23:::0;3860:12:::1;3798:1;3860:2;:12;:::i;:::-;3846:26;::::0;:11:::1;:26;:::i;:::-;7175:37;;;;:::i;:::-;7174:47;;;;:::i;:::-;7156:15;:65:::0;-1:-1:-1;6968:261:0:o;6072:216::-;6176:10;6147:4;6164:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6164:32:0;;;;;;;;;;:41;;;6221:37;6147:4;;6164:32;;6221:37;;;;6199:6;713:25:1;;701:2;686:18;;567:177;6221:37:0;;;;;;;;-1:-1:-1;6276:4:0;6072:216;;;;;:::o;3808:64::-;3860:12;3798:1;3860:2;:12;:::i;:::-;3846:26;;:11;:26;:::i;:::-;3808:64;:::o;9908:259::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;10011:21:::1;9991:17;10102:3;10069:28;10081:16:::0;10011:21;10069:28:::1;:::i;:::-;10067:38;;;;:::i;:::-;10116:43;::::0;10043:62;;-1:-1:-1;10124:10:0::1;::::0;10116:43;::::1;;;::::0;10043:62;;10116:43:::1;::::0;;;10043:62;10124:10;10116:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9980:187;;9908:259:::0;:::o;6590:370::-;-1:-1:-1;;;;;6710:19:0;;6690:4;6710:19;;;:11;:19;;;;;;;;6730:10;6710:31;;;;;;;;-1:-1:-1;;6710:52:0;6707:186;;6812:69;;;;;;;;;;;-1:-1:-1;;;6812:69:0;;;;;;;;-1:-1:-1;;;;;6812:19:0;;-1:-1:-1;6812:19:0;;;:11;:19;;;;;6832:10;6812:31;;;;;;;;;;:69;;6848:6;;6812:35;:69::i;:::-;-1:-1:-1;;;;;6778:19:0;;;;;;:11;:19;;;;;;;;6798:10;6778:31;;;;;;;:103;6707:186;6912:40;6926:6;6934:9;6945:6;6912:13;:40::i;:::-;6905:47;;6590:370;;;;;;:::o;11990:137::-;12103:9;:15;;;;3536:42;12043:7;12085:15;;;;;12043:7;;12103:15;3860:12;3798:1;3860:2;:12;:::i;:::-;3846:26;;:11;:26;:::i;:::-;12071:29;;;;:::i;:::-;:47;;;;:::i;:::-;12063:56;;11990:137;:::o;11564:231::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;11666:12:::1;:28:::0;;;11705:13:::1;:30:::0;;;11757::::1;11721:14:::0;11681:13;11757:30:::1;:::i;:::-;11746:8;:41:::0;-1:-1:-1;;11564:231:0:o;6296:122::-;6351:4;6375:35;6383:7;-1:-1:-1;;6375:7:0;:35::i;11357:199::-;2253:10;2737:4;2761:19;;;:14;:19;;;;;;;;2232:48;;;;-1:-1:-1;;;2232:48:0;;7100:2:1;2232:48:0;;;7082:21:1;7139:2;7119:18;;;7112:30;-1:-1:-1;;;7158:18:1;;;7151:41;7209:18;;2232:48:0;6898:335:1;2232:48:0;11457:14:::1;:22:::0;;;;11490:13:::1;:20:::0;;;;11521:18:::1;:27:::0;11357:199::o;2796:125::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;2879:5:::1;2870::::0;;-1:-1:-1;;;;;2870:5:0::1;2855:21:::0;;:14:::1;:21;::::0;;;;:29;;-1:-1:-1;;2855:29:0::1;::::0;;2895:18;;-1:-1:-1;;;;;;2895:18:0::1;::::0;;2796:125::o;10175:286::-;10266:12;2660:5;;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;10294:6:::1;10304:1;10294:11:::0;10291:95:::1;;10330:44;::::0;-1:-1:-1;;;10330:44:0;;10368:4:::1;10330:44;::::0;::::1;2996:51:1::0;-1:-1:-1;;;;;10330:29:0;::::1;::::0;::::1;::::0;2969:18:1;;10330:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10321:53;;10291:95;10405:48;::::0;-1:-1:-1;;;10405:48:0;;10434:10:::1;10405:48;::::0;::::1;7601:51:1::0;7668:18;;;7661:34;;;-1:-1:-1;;;;;10405:28:0;::::1;::::0;::::1;::::0;7574:18:1;;10405:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10469:107::-:0;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;10521:11:::1;:18:::0;;-1:-1:-1;;;;10550:18:0;-1:-1:-1;;;10550:18:0;;;10469:107::o;6426:156::-;6506:4;6530:44;6544:10;6556:9;6567:6;6530:13;:44::i;2299:94::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2359:19:0::1;;::::0;;;2381:4:::1;2359:19;::::0;;;;;;;:26;;-1:-1:-1;;2359:26:0::1;::::0;;::::1;::::0;;2299:94::o;7237:262::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;7371:1:::1;7343:24;:29;;7335:82;;;::::0;-1:-1:-1;;;7335:82:0;;8158:2:1;7335:82:0::1;::::0;::::1;8140:21:1::0;8197:2;8177:18;;;8170:30;8236:34;8216:18;;;8209:62;-1:-1:-1;;;8287:18:1;;;8280:39;8336:19;;7335:82:0::1;7956:405:1::0;7335:82:0::1;7487:4;7458:24:::0;3860:12:::1;3798:1;3860:2;:12;:::i;:::-;3846:26;::::0;:11:::1;:26;:::i;:::-;7444:38;;;;:::i;:::-;7443:48;;;;:::i;:::-;7428:12;:63:::0;-1:-1:-1;7237:262:0:o;11803:179::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;11899:11:::1;:22:::0;;-1:-1:-1;;;;11899:22:0::1;-1:-1:-1::0;;;11899:22:0;::::1;;;;::::0;;11962:12;3860::::1;3798:1;3860:2;:12;:::i;:::-;3846:26;::::0;:11:::1;:26;:::i;:::-;11948;;;;:::i;:::-;11932:13;:42:::0;-1:-1:-1;;11803:179:0:o;2401:161::-;2625:4;2660:5;-1:-1:-1;;;;;2660:5:0;2158:10;2649:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;2480:5:::1;::::0;-1:-1:-1;;;;;2480:5:0;;::::1;2473:12:::0;;::::1;::::0;2465:51:::1;;;::::0;-1:-1:-1;;;2465:51:0;;8568:2:1;2465:51:0::1;::::0;::::1;8550:21:1::0;8607:2;8587:18;;;8580:30;8646:28;8626:18;;;8619:56;8692:18;;2465:51:0::1;8366:350:1::0;2465:51:0::1;-1:-1:-1::0;;;;;2527:19:0::1;2549:5;2527:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2527:27:0::1;::::0;;2401:161::o;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;7507:1115::-;7619:6;;7599:4;;7619:6;;7616:63;;;7635:41;7650:6;7658:9;7669:6;7635:14;:41::i;:::-;7628:48;;;;7616:63;-1:-1:-1;;;;;7695:22:0;;;;;;:14;:22;;;;;;;;7694:23;:53;;;;-1:-1:-1;;;;;;7722:25:0;;;;;;:14;:25;;;;;;;;7721:26;7694:53;7691:127;;;7771:11;;-1:-1:-1;;;7771:11:0;;;;7763:43;;;;-1:-1:-1;;;7763:43:0;;8923:2:1;7763:43:0;;;8905:21:1;8962:2;8942:18;;;8935:30;-1:-1:-1;;;8981:18:1;;;8974:50;9041:18;;7763:43:0;8721:344:1;7763:43:0;-1:-1:-1;;;;;7835:22:0;;;;;;:14;:22;;;;;;;;7834:23;:55;;;;-1:-1:-1;;;;;;7862:27:0;;;;;;:19;:27;;;;;;;;7861:28;7834:55;:90;;;;-1:-1:-1;;;;;;7894:30:0;;;;;;:19;:30;;;;;;;;7893:31;7834:90;:111;;;;;7941:4;-1:-1:-1;;;;;7928:17:0;:9;-1:-1:-1;;;;;7928:17:0;;;7834:111;7830:230;;;8005:15;;-1:-1:-1;;;;;7971:20:0;;;;;;:9;:20;;;;;;:29;;7994:6;;7971:29;:::i;:::-;7970:50;;7962:86;;;;-1:-1:-1;;;7962:86:0;;9272:2:1;7962:86:0;;;9254:21:1;9311:2;9291:18;;;9284:30;9350:26;9330:18;;;9323:54;9394:18;;7962:86:0;9070:348:1;7962:86:0;8095:12;;8085:6;:22;;8084:51;;;-1:-1:-1;;;;;;8112:23:0;;;;;;:15;:23;;;;;;;;8084:51;:81;;;-1:-1:-1;;;;;;8139:26:0;;;;;;:15;:26;;;;;;;;8084:81;8076:115;;;;-1:-1:-1;;;8076:115:0;;9625:2:1;8076:115:0;;;9607:21:1;9664:2;9644:18;;;9637:30;-1:-1:-1;;;9683:18:1;;;9676:51;9744:18;;8076:115:0;9423:345:1;8076:115:0;8207:16;:14;:16::i;:::-;8204:35;;;8226:10;:8;:10::i;:::-;8271:53;;;;;;;;;;;-1:-1:-1;;;8271:53:0;;;;;;;;-1:-1:-1;;;;;8271:17:0;;-1:-1:-1;8271:17:0;;;:9;:17;;;;;;;;:53;;8293:6;;8271:21;:53::i;:::-;-1:-1:-1;;;;;8251:17:0;;;;;;:9;:17;;;;;;;;:73;;;;8363:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;8386:22:0;;;;;;:11;:22;;;;;;;;8363:45;8362:93;;8421:34;8429:6;8437;8445:9;8421:7;:34::i;:::-;8362:93;;;8412:6;8362:93;-1:-1:-1;;;;;8491:20:0;;;;;;:9;:20;;;;;;8337:118;;-1:-1:-1;8491:40:0;;8337:118;8491:24;:40::i;:::-;-1:-1:-1;;;;;8468:20:0;;;;;;;:9;:20;;;;;;;:63;;;;8549:43;;;;;;;;;;8577:14;713:25:1;;701:2;686:18;;567:177;8549:43:0;;;;;;;;-1:-1:-1;8610:4:0;;7507:1115;-1:-1:-1;;;;7507:1115:0:o;8634:330::-;8764:53;;;;;;;;;;;-1:-1:-1;;;8764:53:0;;;;;;;;-1:-1:-1;;;;;8764:17:0;;8727:4;8764:17;;;:9;:17;;;;;;;:53;;8786:6;;8764:21;:53::i;:::-;-1:-1:-1;;;;;8744:17:0;;;;;;;:9;:17;;;;;;:73;;;;8851:20;;;;;;;:32;;8876:6;8851:24;:32::i;:::-;-1:-1:-1;;;;;8828:20:0;;;;;;;:9;:20;;;;;;;:55;;;;8899:35;;;;;;;;;;8927:6;713:25:1;;701:2;686:18;;567:177;8899:35:0;;;;;;;;-1:-1:-1;8952:4:0;8634:330;;;;;:::o;9703:197::-;9752:4;9776:10;-1:-1:-1;;;;;9790:4:0;9776:18;;;;;:38;;-1:-1:-1;9808:6:0;;;;9807:7;9776:38;:62;;;;-1:-1:-1;9827:11:0;;-1:-1:-1;;;9827:11:0;;;;9776:62;:116;;;;-1:-1:-1;;9879:13:0;;9869:4;9851:24;;;;:9;:24;;;;;;:41;;;9703:197::o;10584:765::-;4880:6;:13;;-1:-1:-1;;4880:13:0;4889:4;4880:13;;;10659:16:::1;::::0;;10673:1:::1;10659:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10659:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10659:16:0::1;10635:40;;10704:4;10686;10691:1;10686:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;10686:23:0::1;;;-1:-1:-1::0;;;;;10686:23:0::1;;;::::0;::::1;10730:4;10720;10725:1;10720:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10720:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;10747:6:::1;::::0;10819:13:::1;::::0;10747:189:::1;::::0;-1:-1:-1;;;10747:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;10819:13;10747:6:::1;::::0;10863:4;;10890::::1;::::0;10910:15:::1;::::0;10747:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11061:8:0::1;::::0;11045:12:::1;::::0;10969:21:::1;::::0;-1:-1:-1;10949:17:0::1;::::0;-1:-1:-1;11033:24:0::1;::::0;10969:21;11033:24:::1;:::i;:::-;11032:37;;;;:::i;:::-;11003:66;;11080:27;11140:8;;11123:13;;11111:9;:25;;;;:::i;:::-;11110:38;;;;:::i;:::-;11190:20;::::0;11182:65:::1;::::0;11080:68;;-1:-1:-1;11162:15:0::1;::::0;-1:-1:-1;;;;;11190:20:0;;::::1;::::0;11224:18;;11162:15;11182:65;11162:15;11182:65;11224:18;11190:20;11182:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;11282:21:0::1;::::0;11274:67:::1;::::0;11161:86;;-1:-1:-1;;;;;;11282:21:0::1;::::0;11317:19;;11274:67:::1;::::0;;;11317:19;11282:21;11274:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4898:6:0;:14;;-1:-1:-1;;4898:14:0;;;-1:-1:-1;;;;;;10584:765:0:o;8972:723::-;9058:7;9081:11;;;:28;;-1:-1:-1;9096:8:0;;:13;9081:28;9078:72;;;-1:-1:-1;9132:6:0;9125:13;;9078:72;9183:18;;-1:-1:-1;;;;;9230:4:0;9217:17;;;;;;9214:154;;-1:-1:-1;9264:14:0;;9214:154;;;9309:4;-1:-1:-1;;;;;9299:14:0;:6;-1:-1:-1;;;;;9299:14:0;;9296:72;;-1:-1:-1;9343:13:0;;9296:72;9380:17;9400:62;9441:20;4461:3;;9441:20;:::i;:::-;9400:36;9425:10;9400:20;9411:8;;9400:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;9380:82;-1:-1:-1;9478:13:0;;9475:172;;9552:4;9534:24;;;;:9;:24;;;;;;:39;;9563:9;9534:28;:39::i;:::-;9525:4;9507:24;;;;:9;:24;;;;;;;:66;;;;9593:42;;-1:-1:-1;;;;;9593:42:0;;;;;;;9625:9;713:25:1;;701:2;686:18;;567:177;9593:42:0;;;;;;;;9475:172;9666:21;:6;9677:9;9666:10;:21::i;:::-;9659:28;8972:723;-1:-1:-1;;;;;;8972:723:0:o;93:181::-;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;11434:2:1;199:46:0;;;11416:21:1;11473:2;11453:18;;;11446:30;11512:29;11492:18;;;11485:57;11559:18;;199:46:0;11232:351:1;620:250:0;678:7;702:1;707;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;11790:2:1;785:56:0;;;11772:21:1;11829:2;11809:18;;;11802:30;11868:34;11848:18;;;11841:62;-1:-1:-1;;;11919:18:1;;;11912:31;11960:19;;785:56:0;11588:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;1014:189::-;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;:5;:::i;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:1;;749:180;-1:-1:-1;749:180:1:o;934:173::-;1002:20;;-1:-1:-1;;;;;1051:31:1;;1041:42;;1031:70;;1097:1;1094;1087:12;1031:70;934:173;;;:::o;1112:254::-;1180:6;1188;1241:2;1229:9;1220:7;1216:23;1212:32;1209:52;;;1257:1;1254;1247:12;1209:52;1280:29;1299:9;1280:29;:::i;:::-;1270:39;1356:2;1341:18;;;;1328:32;;-1:-1:-1;;;1112:254:1:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;1896:186::-;1955:6;2008:2;1996:9;1987:7;1983:23;1979:32;1976:52;;;2024:1;2021;2014:12;1976:52;2047:29;2066:9;2047:29;:::i;2276:248::-;2344:6;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;-1:-1:-1;;2444:23:1;;;2514:2;2499:18;;;2486:32;;-1:-1:-1;2276:248:1:o;2529:316::-;2606:6;2614;2622;2675:2;2663:9;2654:7;2650:23;2646:32;2643:52;;;2691:1;2688;2681:12;2643:52;-1:-1:-1;;2714:23:1;;;2784:2;2769:18;;2756:32;;-1:-1:-1;2835:2:1;2820:18;;;2807:32;;2529:316;-1:-1:-1;2529:316:1:o;3058:260::-;3126:6;3134;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;3226:29;3245:9;3226:29;:::i;:::-;3216:39;;3274:38;3308:2;3297:9;3293:18;3274:38;:::i;:::-;3264:48;;3058:260;;;;;:::o;3323:118::-;3409:5;3402:13;3395:21;3388:5;3385:32;3375:60;;3431:1;3428;3421:12;3375:60;3323:118;:::o;3446:309::-;3511:6;3519;3572:2;3560:9;3551:7;3547:23;3543:32;3540:52;;;3588:1;3585;3578:12;3540:52;3627:9;3614:23;3646:28;3668:5;3646:28;:::i;3986:329::-;4188:2;4170:21;;;4227:1;4207:18;;;4200:29;-1:-1:-1;;;4260:2:1;4245:18;;4238:36;4306:2;4291:18;;3986:329::o;4725:127::-;4786:10;4781:3;4777:20;4774:1;4767:31;4817:4;4814:1;4807:15;4841:4;4838:1;4831:15;4857:422;4946:1;4989:5;4946:1;5003:270;5024:7;5014:8;5011:21;5003:270;;;5083:4;5079:1;5075:6;5071:17;5065:4;5062:27;5059:53;;;5092:18;;:::i;:::-;5142:7;5132:8;5128:22;5125:55;;;5162:16;;;;5125:55;5241:22;;;;5201:15;;;;5003:270;;;5007:3;4857:422;;;;;:::o;5284:806::-;5333:5;5363:8;5353:80;;-1:-1:-1;5404:1:1;5418:5;;5353:80;5452:4;5442:76;;-1:-1:-1;5489:1:1;5503:5;;5442:76;5534:4;5552:1;5547:59;;;;5620:1;5615:130;;;;5527:218;;5547:59;5577:1;5568:10;;5591:5;;;5615:130;5652:3;5642:8;5639:17;5636:43;;;5659:18;;:::i;:::-;-1:-1:-1;;5715:1:1;5701:16;;5730:5;;5527:218;;5829:2;5819:8;5816:16;5810:3;5804:4;5801:13;5797:36;5791:2;5781:8;5778:16;5773:2;5767:4;5764:12;5760:35;5757:77;5754:159;;;-1:-1:-1;5866:19:1;;;5898:5;;5754:159;5945:34;5970:8;5964:4;5945:34;:::i;:::-;6015:6;6011:1;6007:6;6003:19;5994:7;5991:32;5988:58;;;6026:18;;:::i;:::-;6064:20;;5284:806;-1:-1:-1;;;5284:806:1:o;6095:140::-;6153:5;6182:47;6223:4;6213:8;6209:19;6203:4;6182:47;:::i;6240:168::-;6280:7;6346:1;6342;6338:6;6334:14;6331:1;6328:21;6323:1;6316:9;6309:17;6305:45;6302:71;;;6353:18;;:::i;:::-;-1:-1:-1;6393:9:1;;6240:168::o;6413:217::-;6453:1;6479;6469:132;;6523:10;6518:3;6514:20;6511:1;6504:31;6558:4;6555:1;6548:15;6586:4;6583:1;6576:15;6469:132;-1:-1:-1;6615:9:1;;6413:217::o;6635:128::-;6702:9;;;6723:11;;;6720:37;;;6737:18;;:::i;6768:125::-;6833:9;;;6854:10;;;6851:36;;;6867:18;;:::i;7238:184::-;7308:6;7361:2;7349:9;7340:7;7336:23;7332:32;7329:52;;;7377:1;7374;7367:12;7329:52;-1:-1:-1;7400:16:1;;7238:184;-1:-1:-1;7238:184:1:o;7706:245::-;7773:6;7826:2;7814:9;7805:7;7801:23;7797:32;7794:52;;;7842:1;7839;7832:12;7794:52;7874:9;7868:16;7893:28;7915:5;7893:28;:::i;9905:127::-;9966:10;9961:3;9957:20;9954:1;9947:31;9997:4;9994:1;9987:15;10021:4;10018:1;10011:15;10037:980;10299:4;10347:3;10336:9;10332:19;10378:6;10367:9;10360:25;10404:2;10442:6;10437:2;10426:9;10422:18;10415:34;10485:3;10480:2;10469:9;10465:18;10458:31;10509:6;10544;10538:13;10575:6;10567;10560:22;10613:3;10602:9;10598:19;10591:26;;10652:2;10644:6;10640:15;10626:29;;10673:1;10683:195;10697:6;10694:1;10691:13;10683:195;;;10762:13;;-1:-1:-1;;;;;10758:39:1;10746:52;;10853:15;;;;10818:12;;;;10794:1;10712:9;10683:195;;;-1:-1:-1;;;;;;;10934:32:1;;;;10929:2;10914:18;;10907:60;-1:-1:-1;;;10998:3:1;10983:19;10976:35;10895:3;10037:980;-1:-1:-1;;;10037:980:1:o

Swarm Source

ipfs://afaf5a7211dd1039602a45d8f849baa5d94b58ec961c13efbfc6efbd24ce432d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.