ETH Price: $2,420.57 (+0.16%)

Token

dev do something (DDS)
 

Overview

Max Total Supply

69,420,000 DDS

Holders

152

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.110572298686051981 DDS

Value
$0.00
0x5A2B2fCF75bF40fca5B79eEbE7785081dEd2D8A3
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:
Erc20DevDoSomething

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-10
*/

// SPDX-License-Identifier: UNLICENSED
/**
 * 
 * 
 * Telegram - https://t.me/devdosomething_erc
 * Twitter - https://twitter.com/DDSTOKEN
 * Web - https://devdosomething.vip
 * 
 * 
 **/

pragma solidity 0.8.20;

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;

    constructor(address _owner) {
        owner = _owner;
    }

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

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

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(owner);
    }

    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
}

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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

    string public constant name = "dev do something";
    string public constant symbol = "DDS";
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 69420000 * 10**decimals;

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

    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 = 85;
    uint256 public operationsFee = 15;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 1000;

    uint256 public buyMultiplier = 200;
    uint256 public sellMultiplier = 299;
    uint256 public transferMultiplier = 200;

    address marketingFeeReceiver;
    address operationsFeeReceiver;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;

    bool public swapEnabled = false;
    uint256 public swapThreshold = totalSupply / 100;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

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

        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0xace123e03371dDa2b65c83ac107562d45d8ECe70;
        operationsFeeReceiver = 0x14c9D9871F3D902b4399B12A35b98eFb0A610819;

        isFeeExempt[msg.sender] = true;

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

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

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

    function addLP(address _pair) external onlyOwner{
        pair = _pair;
    }

    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 >= 10,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 10,"Cannot set max transaction less than 1%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

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

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

        if (!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);
        uint256 contractTokens = feeAmount;

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

        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;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    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 openTrading() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

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

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

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalFee);
        uint256 amountETHOperations = amountETH.mul(operationsFee).div(totalFee);

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(operationsFeeReceiver).transfer(amountETHOperations);

    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

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

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

    function setFeeReceivers(address _marketingFeeReceiver, address _operationsFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        operationsFeeReceiver = _operationsFeeReceiver;
    }


    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        require(_denominator > 50, "Amount too high");

        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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_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":"_pair","type":"address"}],"name":"addLP","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","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":"","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":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","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":"openTrading","outputs":[],"stateMutability":"nonpayable","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":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_operationsFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"setFees","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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526064620000146012600a62000464565b620000249063042343e06200047b565b62000030919062000495565b6001556064620000436012600a62000464565b620000539063042343e06200047b565b6200005f919062000495565b60025560556008819055600f60098190556200007b91620004b5565b600a90815560c8600b81905561012b600c55600d556011805461ffff60a01b19169055606490620000af9060129062000464565b620000bf9063042343e06200047b565b620000cb919062000495565b601255348015620000da575f80fd5b505f8054336001600160a01b03199182161790915560108054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000148573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200016e9190620004cb565b6001600160a01b03908116608052305f8181526004602090815260408083206010548616845282528083205f199055600e80546001600160a01b031990811673ace123e03371dda2b65c83ac107562d45d8ece70178255600f80549091167314c9d9871f3d902b4399b12a35b98efb0a6108191790553380855260058452828520805460ff1990811660019081179092556006865284872080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548216831790557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8805482168317905583548916875284872080548216831790559186526007909452828520805482168517905594845281842080548616841790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d805486168417905554909416825292902080549091169091179055620002dc6012600a62000464565b620002ec9063042343e06200047b565b335f81815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200032e6012600a62000464565b6200033e9063042343e06200047b565b60405190815260200160405180910390a3620004f3565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003a957815f19048211156200038d576200038d62000355565b808516156200039b57918102915b93841c93908002906200036e565b509250929050565b5f82620003c1575060016200045e565b81620003cf57505f6200045e565b8160018114620003e85760028114620003f35762000413565b60019150506200045e565b60ff84111562000407576200040762000355565b50506001821b6200045e565b5060208310610133831016604e8410600b841016171562000438575081810a6200045e565b62000444838362000369565b805f19048211156200045a576200045a62000355565b0290505b92915050565b5f6200047460ff841683620003b1565b9392505050565b80820281158282048414176200045e576200045e62000355565b5f82620004b057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200045e576200045e62000355565b5f60208284031215620004dc575f80fd5b81516001600160a01b038116811462000474575f80fd5b6080516121976200050c5f395f61190701526121975ff3fe6080604052600436106102b6575f3560e01c80636ce46bc311610177578063a8aa1b31116100dc578063ddf731f311610087578063f887ea4011610062578063f887ea4014610840578063fed0d2a11461085f578063ffb54a9914610874575f80fd5b8063ddf731f3146107e3578063df20fd4914610802578063f2fde38b14610821575f80fd5b8063c867d60b116100b7578063c867d60b1461075d578063c9567bf91461078b578063dd62ed3e1461079f575f80fd5b8063a8aa1b3114610700578063a9059cbb1461071f578063bd9ab5371461073e575f80fd5b806378109e541161013c5780638b42507f116101175780638b42507f1461068557806395d89b41146106b3578063a4b45c00146106e1575f80fd5b806378109e541461062b5780637d1db4a514610640578063893d20e814610655575f80fd5b80636ce46bc31461058e5780636ddd1713146105ad57806370a08231146105cd578063715018a6146105f857806377b54bad1461060c575f80fd5b80631df4ccfc1161021d578063313ce567116101e2578063571ac8b0116101bd578063571ac8b0146105455780635921652f146105645780636b67c4df14610579575f80fd5b8063313ce567146104d25780633f4218e0146104f85780634be9d86914610526575f80fd5b80631df4ccfc1461044857806323b872dd1461045d5780632b112e491461047c5780632f54bf6e146104905780633121c7c0146104bd575f80fd5b806309302dc61161027d578063180b0d7e11610258578063180b0d7e1461040057806318160ddd146104155780631da1db5e14610429575f80fd5b806309302dc614610393578063095ea7b3146103b25780630b78f9c0146103e1575f80fd5b8062108683146102c1578062bff446146102e25780630445b6671461030157806306fdde0314610329578063090896be1461037e575f80fd5b366102bd57005b5f80fd5b3480156102cc575f80fd5b506102e06102db366004611d22565b610894565b005b3480156102ed575f80fd5b506102e06102fc366004611d22565b61094d565b34801561030c575f80fd5b5061031660125481565b6040519081526020015b60405180910390f35b348015610334575f80fd5b506103716040518060400160405280601081526020017f64657620646f20736f6d657468696e670000000000000000000000000000000081525081565b6040516103209190611da1565b348015610389575f80fd5b5061031660095481565b34801561039e575f80fd5b506102e06103ad366004611dec565b6109fb565b3480156103bd575f80fd5b506103d16103cc366004611e17565b610ad1565b6040519015158152602001610320565b3480156103ec575f80fd5b506102e06103fb366004611e41565b610b3d565b34801561040b575f80fd5b506103166103e881565b348015610420575f80fd5b50610316610b9a565b348015610434575f80fd5b506102e0610443366004611dec565b610bb7565b348015610453575f80fd5b50610316600a5481565b348015610468575f80fd5b506103d1610477366004611e61565b610c3e565b348015610487575f80fd5b50610316610d03565b34801561049b575f80fd5b506103d16104aa366004611e9f565b5f546001600160a01b0391821691161490565b3480156104c8575f80fd5b50610316600b5481565b3480156104dd575f80fd5b506104e6601281565b60405160ff9091168152602001610320565b348015610503575f80fd5b506103d1610512366004611e9f565b60056020525f908152604090205460ff1681565b348015610531575f80fd5b506102e0610540366004611d22565b610d89565b348015610550575f80fd5b506103d161055f366004611e9f565b610e37565b34801561056f575f80fd5b50610316600d5481565b348015610584575f80fd5b5061031660085481565b348015610599575f80fd5b506102e06105a8366004611eba565b610e43565b3480156105b8575f80fd5b506011546103d190600160a81b900460ff1681565b3480156105d8575f80fd5b506103166105e7366004611e9f565b60036020525f908152604090205481565b348015610603575f80fd5b506102e0610e96565b348015610617575f80fd5b506103d1610626366004611e17565b610f1c565b348015610636575f80fd5b5061031660025481565b34801561064b575f80fd5b5061031660015481565b348015610660575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610320565b348015610690575f80fd5b506103d161069f366004611e9f565b60066020525f908152604090205460ff1681565b3480156106be575f80fd5b506103716040518060400160405280600381526020016244445360e81b81525081565b3480156106ec575f80fd5b506102e06106fb366004611ee3565b61103d565b34801561070b575f80fd5b5060115461066d906001600160a01b031681565b34801561072a575f80fd5b506103d1610739366004611e17565b6110ad565b348015610749575f80fd5b506102e0610758366004611dec565b6110b9565b348015610768575f80fd5b506103d1610777366004611e9f565b60076020525f908152604090205460ff1681565b348015610796575f80fd5b506102e0611194565b3480156107aa575f80fd5b506103166107b9366004611ee3565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156107ee575f80fd5b506102e06107fd366004611e9f565b6111ed565b34801561080d575f80fd5b506102e061081c366004611f1a565b611251565b34801561082c575f80fd5b506102e061083b366004611e9f565b611326565b34801561084b575f80fd5b5060105461066d906001600160a01b031681565b34801561086a575f80fd5b50610316600c5481565b34801561087f575f80fd5b506011546103d190600160a01b900460ff1681565b5f546001600160a01b031633146108db5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b5f5b82811015610947578160075f8686858181106108fb576108fb611f36565b90506020020160208101906109109190611e9f565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905561094081611f5e565b90506108dd565b50505050565b5f546001600160a01b0316331461098f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b5f5b82811015610947578160055f8686858181106109af576109af611f36565b90506020020160208101906109c49190611e9f565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556109f481611f5e565b9050610991565b5f546001600160a01b03163314610a3d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b600a811015610a995760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b60648201526084016108d2565b6103e881610aa96012600a612056565b610ab79063042343e0612064565b610ac19190612064565b610acb919061207b565b60025550565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b2b9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610b7f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b60088290556009819055610b93818361209a565b600a555050565b610ba66012600a612056565b610bb49063042343e0612064565b81565b5f546001600160a01b03163314610bf95760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b47336108fc6064610c0a8585612064565b610c14919061207b565b6040518115909202915f818181858888f19350505050158015610c39573d5f803e3d5ffd5b505050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610cee57604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387165f908152600482528381203382529091529190912054610cca9184906113bb565b6001600160a01b0385165f9081526004602090815260408083203384529091529020555b610cf98484846113f3565b90505b9392505050565b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead5f9081527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54909190610d626012600a612056565b610d709063042343e0612064565b610d7a91906120ad565b610d8491906120ad565b905090565b5f546001600160a01b03163314610dcb5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b5f5b82811015610947578160065f868685818110610deb57610deb611f36565b9050602002016020810190610e009190611e9f565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610e3081611f5e565b9050610dcd565b5f610b37825f19610ad1565b5f546001600160a01b03163314610e855760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b600c91909155600b91909155600d55565b5f546001600160a01b03163314610ed85760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f80546001600160a01b03163314610f5f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b815f03610fcf576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610fa8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcc91906120c0565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015611019573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfc91906120d7565b5f546001600160a01b0316331461107f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b5f610cfc3384846113f3565b5f546001600160a01b031633146110fb5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b600a81101561115c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152667468616e20312560c81b60648201526084016108d2565b6103e88161116c6012600a612056565b61117a9063042343e0612064565b6111849190612064565b61118e919061207b565b60015550565b5f546001600160a01b031633146111d65760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b6011805461ffff60a01b191661010160a01b179055565b5f546001600160a01b0316331461122f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146112935760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b603281116112e35760405162461bcd60e51b815260206004820152600f60248201527f416d6f756e7420746f6f2068696768000000000000000000000000000000000060448201526064016108d2565b6011805460ff60a81b1916600160a81b84151502179055806113076012600a612056565b6113159063042343e0612064565b61131f919061207b565b6012555050565b5f546001600160a01b031633146113685760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f81848411156113de5760405162461bcd60e51b81526004016108d29190611da1565b505f6113ea84866120ad565b95945050505050565b6013545f9060ff16156114125761140b84848461176b565b9050610cfc565b6001600160a01b0384165f9081526005602052604090205460ff1615801561145257506001600160a01b0383165f9081526005602052604090205460ff16155b156114b057601154600160a01b900460ff166114b05760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e2079657400000000000000000000000060448201526064016108d2565b6001600160a01b0384165f9081526007602052604090205460ff161580156114f057506001600160a01b0383165f9081526007602052604090205460ff16155b801561150a57506011546001600160a01b03848116911614155b15611583576002546001600160a01b0384165f9081526003602052604090205461153590849061209a565b11156115835760405162461bcd60e51b815260206004820152601860248201527f4d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016108d2565b600154821115806115ab57506001600160a01b0384165f9081526006602052604090205460ff165b806115cd57506001600160a01b0383165f9081526006602052604090205460ff165b6116195760405162461bcd60e51b815260206004820152601560248201527f4d6178205458204c696d6974204578636565646564000000000000000000000060448201526064016108d2565b61162161184e565b1561162e5761162e6118a2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526003909152919091205461167f9184906113bb565b6001600160a01b0385165f90815260036020908152604080832093909355600590529081205460ff16806116ca57506001600160a01b0384165f9081526005602052604090205460ff165b6116de576116d9858486611a71565b6116e0565b825b6001600160a01b0385165f908152600360205260409020549091506117059082611b88565b6001600160a01b038086165f8181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117589085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526003909152918220546117bb9184906113bb565b6001600160a01b038086165f9081526003602052604080822093909355908516815220546117e99083611b88565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061183c9086815260200190565b60405180910390a35060019392505050565b6011545f906001600160a01b0316331480159061186e575060135460ff16155b80156118835750601154600160a81b900460ff165b8015610d84575050601254305f90815260036020526040902054101590565b6013805460ff191660011790556012546040805160028082526060820183525f9260208301908036833701905050905030815f815181106118e5576118e5611f36565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061193957611939611f36565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac9479061197e9085905f908690309042906004016120f2565b5f604051808303815f87803b158015611995575f80fd5b505af11580156119a7573d5f803e3d5ffd5b505050505f4790505f6119d1600a546119cb60085485611be690919063ffffffff16565b90611c64565b90505f6119ef600a546119cb60095486611be690919063ffffffff16565b600e546040519192506001600160a01b03169083156108fc029084905f818181858888f19350505050158015611a27573d5f803e3d5ffd5b50600f546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611a5f573d5f803e3d5ffd5b50506013805460ff1916905550505050565b5f821580611a7f5750600a54155b15611a8b575081610cfc565b600d546011546001600160a01b0390811690841603611aad5750600c54611ac8565b6011546001600160a01b0390811690861603611ac85750600b545b5f611af8611ad96103e86064612064565b6119cb84611af2600a548a611be690919063ffffffff16565b90611be6565b9050808015611b7357305f90815260036020526040902054611b1a9082611b88565b305f81815260036020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b6a9085815260200190565b60405180910390a35b611b7d8683611ca5565b979650505050505050565b5f80611b94838561209a565b905083811015610cfc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108d2565b5f825f03611bf557505f610b37565b5f611c008385612064565b905082611c0d858361207b565b14610cfc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108d2565b5f610cfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ce6565b5f610cfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113bb565b5f8183611d065760405162461bcd60e51b81526004016108d29190611da1565b505f6113ea848661207b565b8015158114611d1f575f80fd5b50565b5f805f60408486031215611d34575f80fd5b833567ffffffffffffffff80821115611d4b575f80fd5b818601915086601f830112611d5e575f80fd5b813581811115611d6c575f80fd5b8760208260051b8501011115611d80575f80fd5b60209283019550935050840135611d9681611d12565b809150509250925092565b5f6020808352835180828501525f5b81811015611dcc57858101830151858201604001528201611db0565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215611dfc575f80fd5b5035919050565b6001600160a01b0381168114611d1f575f80fd5b5f8060408385031215611e28575f80fd5b8235611e3381611e03565b946020939093013593505050565b5f8060408385031215611e52575f80fd5b50508035926020909101359150565b5f805f60608486031215611e73575f80fd5b8335611e7e81611e03565b92506020840135611e8e81611e03565b929592945050506040919091013590565b5f60208284031215611eaf575f80fd5b8135610cfc81611e03565b5f805f60608486031215611ecc575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611ef4575f80fd5b8235611eff81611e03565b91506020830135611f0f81611e03565b809150509250929050565b5f8060408385031215611f2b575f80fd5b8235611e3381611d12565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611f6f57611f6f611f4a565b5060010190565b600181815b80851115611fb057815f1904821115611f9657611f96611f4a565b80851615611fa357918102915b93841c9390800290611f7b565b509250929050565b5f82611fc657506001610b37565b81611fd257505f610b37565b8160018114611fe85760028114611ff25761200e565b6001915050610b37565b60ff84111561200357612003611f4a565b50506001821b610b37565b5060208310610133831016604e8410600b8410161715612031575081810a610b37565b61203b8383611f76565b805f190482111561204e5761204e611f4a565b029392505050565b5f610cfc60ff841683611fb8565b8082028115828204841417610b3757610b37611f4a565b5f8261209557634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610b3757610b37611f4a565b81810381811115610b3757610b37611f4a565b5f602082840312156120d0575f80fd5b5051919050565b5f602082840312156120e7575f80fd5b8151610cfc81611d12565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121405784516001600160a01b03168352938301939183019160010161211b565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220bacc8f1db00091c0718bd3a0628f39011d8830cd3cc7ed559df64d20a5f0881564736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102b6575f3560e01c80636ce46bc311610177578063a8aa1b31116100dc578063ddf731f311610087578063f887ea4011610062578063f887ea4014610840578063fed0d2a11461085f578063ffb54a9914610874575f80fd5b8063ddf731f3146107e3578063df20fd4914610802578063f2fde38b14610821575f80fd5b8063c867d60b116100b7578063c867d60b1461075d578063c9567bf91461078b578063dd62ed3e1461079f575f80fd5b8063a8aa1b3114610700578063a9059cbb1461071f578063bd9ab5371461073e575f80fd5b806378109e541161013c5780638b42507f116101175780638b42507f1461068557806395d89b41146106b3578063a4b45c00146106e1575f80fd5b806378109e541461062b5780637d1db4a514610640578063893d20e814610655575f80fd5b80636ce46bc31461058e5780636ddd1713146105ad57806370a08231146105cd578063715018a6146105f857806377b54bad1461060c575f80fd5b80631df4ccfc1161021d578063313ce567116101e2578063571ac8b0116101bd578063571ac8b0146105455780635921652f146105645780636b67c4df14610579575f80fd5b8063313ce567146104d25780633f4218e0146104f85780634be9d86914610526575f80fd5b80631df4ccfc1461044857806323b872dd1461045d5780632b112e491461047c5780632f54bf6e146104905780633121c7c0146104bd575f80fd5b806309302dc61161027d578063180b0d7e11610258578063180b0d7e1461040057806318160ddd146104155780631da1db5e14610429575f80fd5b806309302dc614610393578063095ea7b3146103b25780630b78f9c0146103e1575f80fd5b8062108683146102c1578062bff446146102e25780630445b6671461030157806306fdde0314610329578063090896be1461037e575f80fd5b366102bd57005b5f80fd5b3480156102cc575f80fd5b506102e06102db366004611d22565b610894565b005b3480156102ed575f80fd5b506102e06102fc366004611d22565b61094d565b34801561030c575f80fd5b5061031660125481565b6040519081526020015b60405180910390f35b348015610334575f80fd5b506103716040518060400160405280601081526020017f64657620646f20736f6d657468696e670000000000000000000000000000000081525081565b6040516103209190611da1565b348015610389575f80fd5b5061031660095481565b34801561039e575f80fd5b506102e06103ad366004611dec565b6109fb565b3480156103bd575f80fd5b506103d16103cc366004611e17565b610ad1565b6040519015158152602001610320565b3480156103ec575f80fd5b506102e06103fb366004611e41565b610b3d565b34801561040b575f80fd5b506103166103e881565b348015610420575f80fd5b50610316610b9a565b348015610434575f80fd5b506102e0610443366004611dec565b610bb7565b348015610453575f80fd5b50610316600a5481565b348015610468575f80fd5b506103d1610477366004611e61565b610c3e565b348015610487575f80fd5b50610316610d03565b34801561049b575f80fd5b506103d16104aa366004611e9f565b5f546001600160a01b0391821691161490565b3480156104c8575f80fd5b50610316600b5481565b3480156104dd575f80fd5b506104e6601281565b60405160ff9091168152602001610320565b348015610503575f80fd5b506103d1610512366004611e9f565b60056020525f908152604090205460ff1681565b348015610531575f80fd5b506102e0610540366004611d22565b610d89565b348015610550575f80fd5b506103d161055f366004611e9f565b610e37565b34801561056f575f80fd5b50610316600d5481565b348015610584575f80fd5b5061031660085481565b348015610599575f80fd5b506102e06105a8366004611eba565b610e43565b3480156105b8575f80fd5b506011546103d190600160a81b900460ff1681565b3480156105d8575f80fd5b506103166105e7366004611e9f565b60036020525f908152604090205481565b348015610603575f80fd5b506102e0610e96565b348015610617575f80fd5b506103d1610626366004611e17565b610f1c565b348015610636575f80fd5b5061031660025481565b34801561064b575f80fd5b5061031660015481565b348015610660575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610320565b348015610690575f80fd5b506103d161069f366004611e9f565b60066020525f908152604090205460ff1681565b3480156106be575f80fd5b506103716040518060400160405280600381526020016244445360e81b81525081565b3480156106ec575f80fd5b506102e06106fb366004611ee3565b61103d565b34801561070b575f80fd5b5060115461066d906001600160a01b031681565b34801561072a575f80fd5b506103d1610739366004611e17565b6110ad565b348015610749575f80fd5b506102e0610758366004611dec565b6110b9565b348015610768575f80fd5b506103d1610777366004611e9f565b60076020525f908152604090205460ff1681565b348015610796575f80fd5b506102e0611194565b3480156107aa575f80fd5b506103166107b9366004611ee3565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156107ee575f80fd5b506102e06107fd366004611e9f565b6111ed565b34801561080d575f80fd5b506102e061081c366004611f1a565b611251565b34801561082c575f80fd5b506102e061083b366004611e9f565b611326565b34801561084b575f80fd5b5060105461066d906001600160a01b031681565b34801561086a575f80fd5b50610316600c5481565b34801561087f575f80fd5b506011546103d190600160a01b900460ff1681565b5f546001600160a01b031633146108db5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b5f5b82811015610947578160075f8686858181106108fb576108fb611f36565b90506020020160208101906109109190611e9f565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905561094081611f5e565b90506108dd565b50505050565b5f546001600160a01b0316331461098f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b5f5b82811015610947578160055f8686858181106109af576109af611f36565b90506020020160208101906109c49190611e9f565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556109f481611f5e565b9050610991565b5f546001600160a01b03163314610a3d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b600a811015610a995760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b60648201526084016108d2565b6103e881610aa96012600a612056565b610ab79063042343e0612064565b610ac19190612064565b610acb919061207b565b60025550565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b2b9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610b7f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b60088290556009819055610b93818361209a565b600a555050565b610ba66012600a612056565b610bb49063042343e0612064565b81565b5f546001600160a01b03163314610bf95760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b47336108fc6064610c0a8585612064565b610c14919061207b565b6040518115909202915f818181858888f19350505050158015610c39573d5f803e3d5ffd5b505050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610cee57604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387165f908152600482528381203382529091529190912054610cca9184906113bb565b6001600160a01b0385165f9081526004602090815260408083203384529091529020555b610cf98484846113f3565b90505b9392505050565b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead5f9081527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54909190610d626012600a612056565b610d709063042343e0612064565b610d7a91906120ad565b610d8491906120ad565b905090565b5f546001600160a01b03163314610dcb5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b5f5b82811015610947578160065f868685818110610deb57610deb611f36565b9050602002016020810190610e009190611e9f565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610e3081611f5e565b9050610dcd565b5f610b37825f19610ad1565b5f546001600160a01b03163314610e855760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b600c91909155600b91909155600d55565b5f546001600160a01b03163314610ed85760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f80546001600160a01b03163314610f5f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b815f03610fcf576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610fa8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcc91906120c0565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015611019573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfc91906120d7565b5f546001600160a01b0316331461107f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b5f610cfc3384846113f3565b5f546001600160a01b031633146110fb5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b600a81101561115c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152667468616e20312560c81b60648201526084016108d2565b6103e88161116c6012600a612056565b61117a9063042343e0612064565b6111849190612064565b61118e919061207b565b60015550565b5f546001600160a01b031633146111d65760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b6011805461ffff60a01b191661010160a01b179055565b5f546001600160a01b0316331461122f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146112935760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b603281116112e35760405162461bcd60e51b815260206004820152600f60248201527f416d6f756e7420746f6f2068696768000000000000000000000000000000000060448201526064016108d2565b6011805460ff60a81b1916600160a81b84151502179055806113076012600a612056565b6113159063042343e0612064565b61131f919061207b565b6012555050565b5f546001600160a01b031633146113685760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016108d2565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f81848411156113de5760405162461bcd60e51b81526004016108d29190611da1565b505f6113ea84866120ad565b95945050505050565b6013545f9060ff16156114125761140b84848461176b565b9050610cfc565b6001600160a01b0384165f9081526005602052604090205460ff1615801561145257506001600160a01b0383165f9081526005602052604090205460ff16155b156114b057601154600160a01b900460ff166114b05760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e2079657400000000000000000000000060448201526064016108d2565b6001600160a01b0384165f9081526007602052604090205460ff161580156114f057506001600160a01b0383165f9081526007602052604090205460ff16155b801561150a57506011546001600160a01b03848116911614155b15611583576002546001600160a01b0384165f9081526003602052604090205461153590849061209a565b11156115835760405162461bcd60e51b815260206004820152601860248201527f4d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016108d2565b600154821115806115ab57506001600160a01b0384165f9081526006602052604090205460ff165b806115cd57506001600160a01b0383165f9081526006602052604090205460ff165b6116195760405162461bcd60e51b815260206004820152601560248201527f4d6178205458204c696d6974204578636565646564000000000000000000000060448201526064016108d2565b61162161184e565b1561162e5761162e6118a2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526003909152919091205461167f9184906113bb565b6001600160a01b0385165f90815260036020908152604080832093909355600590529081205460ff16806116ca57506001600160a01b0384165f9081526005602052604090205460ff165b6116de576116d9858486611a71565b6116e0565b825b6001600160a01b0385165f908152600360205260409020549091506117059082611b88565b6001600160a01b038086165f8181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117589085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526003909152918220546117bb9184906113bb565b6001600160a01b038086165f9081526003602052604080822093909355908516815220546117e99083611b88565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061183c9086815260200190565b60405180910390a35060019392505050565b6011545f906001600160a01b0316331480159061186e575060135460ff16155b80156118835750601154600160a81b900460ff165b8015610d84575050601254305f90815260036020526040902054101590565b6013805460ff191660011790556012546040805160028082526060820183525f9260208301908036833701905050905030815f815181106118e5576118e5611f36565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061193957611939611f36565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac9479061197e9085905f908690309042906004016120f2565b5f604051808303815f87803b158015611995575f80fd5b505af11580156119a7573d5f803e3d5ffd5b505050505f4790505f6119d1600a546119cb60085485611be690919063ffffffff16565b90611c64565b90505f6119ef600a546119cb60095486611be690919063ffffffff16565b600e546040519192506001600160a01b03169083156108fc029084905f818181858888f19350505050158015611a27573d5f803e3d5ffd5b50600f546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611a5f573d5f803e3d5ffd5b50506013805460ff1916905550505050565b5f821580611a7f5750600a54155b15611a8b575081610cfc565b600d546011546001600160a01b0390811690841603611aad5750600c54611ac8565b6011546001600160a01b0390811690861603611ac85750600b545b5f611af8611ad96103e86064612064565b6119cb84611af2600a548a611be690919063ffffffff16565b90611be6565b9050808015611b7357305f90815260036020526040902054611b1a9082611b88565b305f81815260036020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b6a9085815260200190565b60405180910390a35b611b7d8683611ca5565b979650505050505050565b5f80611b94838561209a565b905083811015610cfc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108d2565b5f825f03611bf557505f610b37565b5f611c008385612064565b905082611c0d858361207b565b14610cfc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108d2565b5f610cfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ce6565b5f610cfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113bb565b5f8183611d065760405162461bcd60e51b81526004016108d29190611da1565b505f6113ea848661207b565b8015158114611d1f575f80fd5b50565b5f805f60408486031215611d34575f80fd5b833567ffffffffffffffff80821115611d4b575f80fd5b818601915086601f830112611d5e575f80fd5b813581811115611d6c575f80fd5b8760208260051b8501011115611d80575f80fd5b60209283019550935050840135611d9681611d12565b809150509250925092565b5f6020808352835180828501525f5b81811015611dcc57858101830151858201604001528201611db0565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215611dfc575f80fd5b5035919050565b6001600160a01b0381168114611d1f575f80fd5b5f8060408385031215611e28575f80fd5b8235611e3381611e03565b946020939093013593505050565b5f8060408385031215611e52575f80fd5b50508035926020909101359150565b5f805f60608486031215611e73575f80fd5b8335611e7e81611e03565b92506020840135611e8e81611e03565b929592945050506040919091013590565b5f60208284031215611eaf575f80fd5b8135610cfc81611e03565b5f805f60608486031215611ecc575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611ef4575f80fd5b8235611eff81611e03565b91506020830135611f0f81611e03565b809150509250929050565b5f8060408385031215611f2b575f80fd5b8235611e3381611d12565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611f6f57611f6f611f4a565b5060010190565b600181815b80851115611fb057815f1904821115611f9657611f96611f4a565b80851615611fa357918102915b93841c9390800290611f7b565b509250929050565b5f82611fc657506001610b37565b81611fd257505f610b37565b8160018114611fe85760028114611ff25761200e565b6001915050610b37565b60ff84111561200357612003611f4a565b50506001821b610b37565b5060208310610133831016604e8410600b8410161715612031575081810a610b37565b61203b8383611f76565b805f190482111561204e5761204e611f4a565b029392505050565b5f610cfc60ff841683611fb8565b8082028115828204841417610b3757610b37611f4a565b5f8261209557634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610b3757610b37611f4a565b81810381811115610b3757610b37611f4a565b5f602082840312156120d0575f80fd5b5051919050565b5f602082840312156120e7575f80fd5b8151610cfc81611d12565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121405784516001600160a01b03168352938301939183019160010161211b565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220bacc8f1db00091c0718bd3a0628f39011d8830cd3cc7ed559df64d20a5f0881564736f6c63430008140033

Deployed Bytecode Sourcemap

3454:9831:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11984:228;;;;;;;;;;-1:-1:-1;11984:228:0;;;;;:::i;:::-;;:::i;:::-;;11536:212;;;;;;;;;;-1:-1:-1;11536:212:0;;;;;:::i;:::-;;:::i;4867:48::-;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;4867:48:0;;;;;;;;3717;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4371:33::-;;;;;;;;;;;;;;;;7174:260;;;;;;;;;;-1:-1:-1;7174:260:0;;;;;:::i;:::-;;:::i;6278:216::-;;;;;;;;;;-1:-1:-1;6278:216:0;;;;;:::i;:::-;;:::i;:::-;;;2456:14:1;;2449:22;2431:41;;2419:2;2404:18;6278:216:0;2291:187:1;12426:223:0;;;;;;;;;;-1:-1:-1;12426:223:0;;;;;:::i;:::-;;:::i;4472:45::-;;;;;;;;;;;;4513:4;4472:45;;3860:61;;;;;;;;;;;;;:::i;10135:207::-;;;;;;;;;;-1:-1:-1;10135:207:0;;;;;:::i;:::-;;:::i;4411:54::-;;;;;;;;;;;;;;;;6796:370;;;;;;;;;;-1:-1:-1;6796:370:0;;;;;:::i;:::-;;:::i;13143:137::-;;;;;;;;;;;;;:::i;2262:103::-;;;;;;;;;;-1:-1:-1;2262:103:0;;;;;:::i;:::-;2317:4;2352:5;-1:-1:-1;;;;;2341:16:0;;;2352:5;;2341:16;;2262:103;4526:34;;;;;;;;;;;;;;;;3816:35;;;;;;;;;;;;3849:2;3816:35;;;;;3621:4:1;3609:17;;;3591:36;;3579:2;3564:18;3816:35:0;3449:184:1;4165:44:0;;;;;;;;;;-1:-1:-1;4165:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11756:220;;;;;;;;;;-1:-1:-1;11756:220:0;;;;;:::i;:::-;;:::i;6502:122::-;;;;;;;;;;-1:-1:-1;6502:122:0;;;;;:::i;:::-;;:::i;4609:39::-;;;;;;;;;;;;;;;;4332:32;;;;;;;;;;;;;;;;12220:198;;;;;;;;;;-1:-1:-1;12220:198:0;;;;;:::i;:::-;;:::i;4829:31::-;;;;;;;;;;-1:-1:-1;4829:31:0;;;;-1:-1:-1;;;4829:31:0;;;;;;4043:45;;;;;;;;;;-1:-1:-1;4043:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2519:126;;;;;;;;;;;;;:::i;10350:284::-;;;;;;;;;;-1:-1:-1;10350:284:0;;;;;:::i;:::-;;:::i;3984:50::-;;;;;;;;;;;;;;;;3930:47;;;;;;;;;;;;;;;;6053:78;;;;;;;;;;-1:-1:-1;6105:7:0;6123:5;-1:-1:-1;;;;;6123:5:0;6053:78;;;-1:-1:-1;;;;;4123:55:1;;;4105:74;;4093:2;4078:18;6053:78:0;3959:226:1;4216:48:0;;;;;;;;;;-1:-1:-1;4216:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3772:37;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3772:37:0;;;;;12657:227;;;;;;;;;;-1:-1:-1;12657:227:0;;;;;:::i;:::-;;:::i;4761:19::-;;;;;;;;;;-1:-1:-1;4761:19:0;;;;-1:-1:-1;;;;;4761:19:0;;;6632:156;;;;;;;;;;-1:-1:-1;6632:156:0;;;;;:::i;:::-;;:::i;7440:261::-;;;;;;;;;;-1:-1:-1;7440:261:0;;;;;:::i;:::-;;:::i;4271:52::-;;;;;;;;;;-1:-1:-1;4271:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10642:108;;;;;;;;;;;;;:::i;6137:133::-;;;;;;;;;;-1:-1:-1;6137:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6239:19:0;;;6221:7;6239:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6137:133;5928:79;;;;;;;;;;-1:-1:-1;5928:79:0;;;;;:::i;:::-;;:::i;12894:237::-;;;;;;;;;;-1:-1:-1;12894:237:0;;;;;:::i;:::-;;:::i;2373:138::-;;;;;;;;;;-1:-1:-1;2373:138:0;;;;;:::i;:::-;;:::i;4730:24::-;;;;;;;;;;-1:-1:-1;4730:24:0;;;;-1:-1:-1;;;;;4730:24:0;;;4567:35;;;;;;;;;;;;;;;;4789:31;;;;;;;;;;-1:-1:-1;4789:31:0;;;;-1:-1:-1;;;4789:31:0;;;;;;11984:228;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;;;;;;;;;12096:9:::1;12091:114;12109:20:::0;;::::1;12091:114;;;12187:6;12151:19;:33;12171:9;;12181:1;12171:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12151:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12151:33:0;:42;;-1:-1:-1;;12151:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12131:3:::1;::::0;::::1;:::i;:::-;;;12091:114;;;;11984:228:::0;;;:::o;11536:212::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;11640:9:::1;11635:106;11653:20:::0;;::::1;11635:106;;;11723:6;11695:11;:25;11707:9;;11717:1;11707:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11695:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11695:25:0;:34;;-1:-1:-1;;11695:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11675:3:::1;::::0;::::1;:::i;:::-;;;11635:106;;7174:260:::0;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;7310:2:::1;7283:23;:29;;7275:75;;;::::0;-1:-1:-1;;;7275:75:0;;6346:2:1;7275:75:0::1;::::0;::::1;6328:21:1::0;6385:2;6365:18;;;6358:30;6424:34;6404:18;;;6397:62;-1:-1:-1;;;6475:18:1;;;6468:32;6517:19;;7275:75:0::1;6144:398:1::0;7275:75:0::1;7422:4;7394:23:::0;3909:12:::1;3849:2;3909;:12;:::i;:::-;3898:23;::::0;:8:::1;:23;:::i;:::-;7380:37;;;;:::i;:::-;7379:47;;;;:::i;:::-;7361:15;:65:::0;-1:-1:-1;7174:260:0:o;6278:216::-;6382:10;6353:4;6370:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6370:32:0;;;;;;;;;;:41;;;6427:37;6353:4;;6370:32;;6427:37;;;;6405:6;1038:25:1;;1026:2;1011:18;;892:177;6427:37:0;;;;;;;;-1:-1:-1;6482:4:0;6278:216;;;;;:::o;12426:223::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;12520:12:::1;:28:::0;;;12559:13:::1;:30:::0;;;12611::::1;12575:14:::0;12535:13;12611:30:::1;:::i;:::-;12600:8;:41:::0;-1:-1:-1;;12426:223:0:o;3860:61::-;3909:12;3849:2;3909;:12;:::i;:::-;3898:23;;:8;:23;:::i;:::-;3860:61;:::o;10135:207::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;10238:21:::1;10278:10;10270:64;10330:3;10299:28;10311:16:::0;10238:21;10299:28:::1;:::i;:::-;:34;;;;:::i;:::-;10270:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10207:135;10135:207:::0;:::o;6796:370::-;-1:-1:-1;;;;;6916:19:0;;6896:4;6916:19;;;:11;:19;;;;;;;;6936:10;6916:31;;;;;;;;-1:-1:-1;;6916:52:0;6913:186;;7018:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7018:19:0;;-1:-1:-1;7018:19:0;;;:11;:19;;;;;7038:10;7018:31;;;;;;;;;;:69;;7054:6;;7018:35;:69::i;:::-;-1:-1:-1;;;;;6984:19:0;;;;;;:11;:19;;;;;;;;7004:10;6984:31;;;;;;;:103;6913:186;7118:40;7132:6;7140:9;7151:6;7118:13;:40::i;:::-;7111:47;;6796:370;;;;;;:::o;13143:137::-;13256:9;:15;;;;3593:42;13196:7;13238:15;;;;;13196:7;;13256:15;3909:12;3849:2;3909;:12;:::i;:::-;3898:23;;:8;:23;:::i;:::-;13224:29;;;;:::i;:::-;:47;;;;:::i;:::-;13216:56;;13143:137;:::o;11756:220::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;11864:9:::1;11859:110;11877:20:::0;;::::1;11859:110;;;11951:6;11919:15;:29;11935:9;;11945:1;11935:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11919:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11919:29:0;:38;;-1:-1:-1;;11919:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11899:3:::1;::::0;::::1;:::i;:::-;;;11859:110;;6502:122:::0;6557:4;6581:35;6589:7;-1:-1:-1;;6581:7:0;:35::i;12220:198::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;12319:14:::1;:22:::0;;;;12352:13:::1;:20:::0;;;;12383:18:::1;:27:::0;12220:198::o;2519:126::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;2592:1:::1;2576:18:::0;;-1:-1:-1;;;;;;2576:18:0::1;::::0;;2610:27:::1;::::0;4105:74:1;;;2610:27:0::1;::::0;4093:2:1;4078:18;2610:27:0::1;;;;;;;2519:126::o:0;10350:284::-;10441:12;2352:5;;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;10469:6:::1;10479:1;10469:11:::0;10466:95:::1;;10505:44;::::0;-1:-1:-1;;;10505:44:0;;10543:4:::1;10505:44;::::0;::::1;4105:74:1::0;-1:-1:-1;;;;;10505:29:0;::::1;::::0;::::1;::::0;4078:18:1;;10505:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10496:53;;10466:95;10578:48;::::0;-1:-1:-1;;;10578:48:0;;10607:10:::1;10578:48;::::0;::::1;8951:74:1::0;9041:18;;;9034:34;;;-1:-1:-1;;;;;10578:28:0;::::1;::::0;::::1;::::0;8924:18:1;;10578:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12657:227::-:0;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;12775:20:::1;:44:::0;;-1:-1:-1;;;;;12775:44:0;;::::1;-1:-1:-1::0;;;;;;12775:44:0;;::::1;;::::0;;;12830:21:::1;:46:::0;;;;;::::1;::::0;::::1;;::::0;;12657:227::o;6632:156::-;6712:4;6736:44;6750:10;6762:9;6773:6;6736:13;:44::i;7440:261::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;7574:2:::1;7546:24;:30;;7538:81;;;::::0;-1:-1:-1;;;7538:81:0;;9531:2:1;7538:81:0::1;::::0;::::1;9513:21:1::0;9570:2;9550:18;;;9543:30;9609:34;9589:18;;;9582:62;-1:-1:-1;;;9660:18:1;;;9653:37;9707:19;;7538:81:0::1;9329:403:1::0;7538:81:0::1;7689:4;7660:24:::0;3909:12:::1;3849:2;3909;:12;:::i;:::-;3898:23;::::0;:8:::1;:23;:::i;:::-;7646:38;;;;:::i;:::-;7645:48;;;;:::i;:::-;7630:12;:63:::0;-1:-1:-1;7440:261:0:o;10642:108::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;10695:11:::1;:18:::0;;-1:-1:-1;;;;10724:18:0;-1:-1:-1;;;10724:18:0;;;10642:108::o;5928:79::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;5987:4:::1;:12:::0;;-1:-1:-1;;;;;;5987:12:0::1;-1:-1:-1::0;;;;;5987:12:0;;;::::1;::::0;;;::::1;::::0;;5928:79::o;12894:237::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;13013:2:::1;12998:12;:17;12990:45;;;::::0;-1:-1:-1;;;12990:45:0;;9939:2:1;12990:45:0::1;::::0;::::1;9921:21:1::0;9978:2;9958:18;;;9951:30;10017:17;9997:18;;;9990:45;10052:18;;12990:45:0::1;9737:339:1::0;12990:45:0::1;13048:11;:22:::0;;-1:-1:-1;;;;13048:22:0::1;-1:-1:-1::0;;;13048:22:0;::::1;;;;::::0;;13111:12;3909::::1;3849:2;3909;:12;:::i;:::-;3898:23;::::0;:8:::1;:23;:::i;:::-;13097:26;;;;:::i;:::-;13081:13;:42:::0;-1:-1:-1;;12894:237:0:o;2373:138::-;2317:4;2352:5;-1:-1:-1;;;;;2352:5:0;2221:10;2341:16;2205:38;;;;-1:-1:-1;;;2205:38:0;;5608:2:1;2205:38:0;;;5590:21:1;5647:1;5627:18;;;5620:29;-1:-1:-1;;;5665:18:1;;;5658:36;5711:18;;2205:38:0;5406:329:1;2205:38:0;2449:5:::1;:11:::0;;-1:-1:-1;;;;;;2449:11:0::1;-1:-1:-1::0;;;;;2449:11:0;::::1;::::0;;::::1;::::0;;;2476:27:::1;::::0;4105:74:1;;;2476:27:0::1;::::0;4093:2:1;4078:18;2476:27:0::1;;;;;;;2373:138:::0;:::o;581:192::-;667:7;703:12;695:6;;;;687:29;;;;-1:-1:-1;;;687:29:0;;;;;;;;:::i;:::-;-1:-1:-1;727:9:0;739:5;743:1;739;:5;:::i;:::-;727:17;581:192;-1:-1:-1;;;;;581:192:0:o;7709:1080::-;7821:6;;7801:4;;7821:6;;7818:63;;;7837:41;7852:6;7860:9;7871:6;7837:14;:41::i;:::-;7830:48;;;;7818:63;-1:-1:-1;;;;;7897:19:0;;;;;;:11;:19;;;;;;;;7896:20;:47;;;;-1:-1:-1;;;;;;7921:22:0;;;;;;:11;:22;;;;;;;;7920:23;7896:47;7893:121;;;7967:11;;-1:-1:-1;;;7967:11:0;;;;7959:43;;;;-1:-1:-1;;;7959:43:0;;10283:2:1;7959:43:0;;;10265:21:1;10322:2;10302:18;;;10295:30;10361:22;10341:18;;;10334:50;10401:18;;7959:43:0;10081:344:1;7959:43:0;-1:-1:-1;;;;;8031:27:0;;;;;;:19;:27;;;;;;;;8030:28;:63;;;;-1:-1:-1;;;;;;8063:30:0;;;;;;:19;:30;;;;;;;;8062:31;8030:63;:84;;;;-1:-1:-1;8110:4:0;;-1:-1:-1;;;;;8097:17:0;;;8110:4;;8097:17;;8030:84;8026:203;;;8174:15;;-1:-1:-1;;;;;8140:20:0;;;;;;:9;:20;;;;;;:29;;8163:6;;8140:29;:::i;:::-;8139:50;;8131:86;;;;-1:-1:-1;;;8131:86:0;;10632:2:1;8131:86:0;;;10614:21:1;10671:2;10651:18;;;10644:30;10710:26;10690:18;;;10683:54;10754:18;;8131:86:0;10430:348:1;8131:86:0;8260:12;;8250:6;:22;;8249:51;;;-1:-1:-1;;;;;;8277:23:0;;;;;;:15;:23;;;;;;;;8249:51;:81;;;-1:-1:-1;;;;;;8304:26:0;;;;;;:15;:26;;;;;;;;8249:81;8241:115;;;;-1:-1:-1;;;8241:115:0;;10985:2:1;8241:115:0;;;10967:21:1;11024:2;11004:18;;;10997:30;11063:23;11043:18;;;11036:51;11104:18;;8241:115:0;10783:345:1;8241:115:0;8372:16;:14;:16::i;:::-;8369:35;;;8391:10;:8;:10::i;:::-;8436:53;;;;;;;;;;;-1:-1:-1;;;8436:53:0;;;;;;;;-1:-1:-1;;;;;8436:17:0;;-1:-1:-1;8436:17:0;;;:9;:17;;;;;;;;:53;;8458:6;;8436:21;:53::i;:::-;-1:-1:-1;;;;;8416:17:0;;;;;;:9;:17;;;;;;;;:73;;;;8528:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;8551:22:0;;;;;;:11;:22;;;;;;;;8528:45;8527:93;;8586:34;8594:6;8602;8610:9;8586:7;:34::i;:::-;8527:93;;;8577:6;8527:93;-1:-1:-1;;;;;8656:20:0;;;;;;:9;:20;;;;;;8502:118;;-1:-1:-1;8656:40:0;;8502:118;8656:24;:40::i;:::-;-1:-1:-1;;;;;8633:20:0;;;;;;;:9;:20;;;;;;;:63;;;;8716:43;;;;;;;;;;8744:14;1038:25:1;;1026:2;1011:18;;892:177;8716:43:0;;;;;;;;-1:-1:-1;8777:4:0;;7709:1080;-1:-1:-1;;;;7709:1080:0:o;8801:330::-;8931:53;;;;;;;;;;;-1:-1:-1;;;8931:53:0;;;;;;;;-1:-1:-1;;;;;8931:17:0;;8894:4;8931:17;;;:9;:17;;;;;;;:53;;8953:6;;8931:21;:53::i;:::-;-1:-1:-1;;;;;8911:17:0;;;;;;;:9;:17;;;;;;:73;;;;9018:20;;;;;;;:32;;9043:6;9018:24;:32::i;:::-;-1:-1:-1;;;;;8995:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9066:35;;;;;;;;;;9094:6;1038:25:1;;1026:2;1011:18;;892:177;9066:35:0;;;;;;;;-1:-1:-1;9119:4:0;8801:330;;;;;:::o;9930:197::-;10017:4;;9979;;-1:-1:-1;;;;;10017:4:0;10003:10;:18;;;;:38;;-1:-1:-1;10035:6:0;;;;10034:7;10003:38;:62;;;;-1:-1:-1;10054:11:0;;-1:-1:-1;;;10054:11:0;;;;10003:62;:116;;;;-1:-1:-1;;10106:13:0;;10096:4;10078:24;;;;:9;:24;;;;;;:41;;;9930:197::o;10758:770::-;4964:6;:13;;-1:-1:-1;;4964:13:0;4973:4;4964:13;;;10830::::1;::::0;10880:16:::1;::::0;;10894:1:::1;10880:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10880:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10880:16:0::1;10856:40;;10925:4;10907;10912:1;10907:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;10907:23:0::1;;;-1:-1:-1::0;;;;;10907:23:0::1;;;::::0;::::1;10951:4;10941;10946:1;10941:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10941:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;10968:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;10968:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;11040:12;;10968:6:::1;::::0;11083:4;;11110::::1;::::0;11130:15:::1;::::0;10968:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11169:17;11189:21;11169:41;;11223:26;11252:41;11284:8;;11252:27;11266:12;;11252:9;:13;;:27;;;;:::i;:::-;:31:::0;::::1;:41::i;:::-;11223:70;;11304:27;11334:42;11367:8;;11334:28;11348:13;;11334:9;:13;;:28;;;;:::i;:42::-;11397:20;::::0;11389:58:::1;::::0;11304:72;;-1:-1:-1;;;;;;11397:20:0::1;::::0;11389:58;::::1;;;::::0;11428:18;;11397:20:::1;11389:58:::0;11397:20;11389:58;11428:18;11397:20;11389:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;11466:21:0::1;::::0;11458:60:::1;::::0;-1:-1:-1;;;;;11466:21:0;;::::1;::::0;11458:60;::::1;;;::::0;11498:19;;11466:21:::1;11458:60:::0;11466:21;11458:60;11498:19;11466:21;11458:60;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4982:6:0;:14;;-1:-1:-1;;4982:14:0;;;-1:-1:-1;;;;10758:770:0:o;9139:783::-;9225:7;9248:11;;;:28;;-1:-1:-1;9263:8:0;;:13;9248:28;9245:72;;;-1:-1:-1;9299:6:0;9292:13;;9245:72;9350:18;;9397:4;;-1:-1:-1;;;;;9397:4:0;;;9384:17;;;;9381:154;;-1:-1:-1;9431:14:0;;9381:154;;;9476:4;;-1:-1:-1;;;;;9476:4:0;;;9466:14;;;;9463:72;;-1:-1:-1;9510:13:0;;9463:72;9547:17;9567:62;9608:20;4513:4;9625:3;9608:20;:::i;:::-;9567:36;9592:10;9567:20;9578:8;;9567:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;9547:82;-1:-1:-1;9547:82:0;9690:18;;9687:187;;9769:4;9751:24;;;;:9;:24;;;;;;:44;;9780:14;9751:28;:44::i;:::-;9742:4;9724:24;;;;:9;:24;;;;;;;:71;;;;9815:47;;-1:-1:-1;;;;;9815:47:0;;;;;;;9847:14;1038:25:1;;1026:2;1011:18;;892:177;9815:47:0;;;;;;;;9687:187;9893:21;:6;9904:9;9893:10;:21::i;:::-;9886:28;9139:783;-1:-1:-1;;;;;;;9139:783:0:o;252:181::-;310:7;;342:5;346:1;342;:5;:::i;:::-;330:17;;371:1;366;:6;;358:46;;;;-1:-1:-1;;;358:46:0;;12498:2:1;358:46:0;;;12480:21:1;12537:2;12517:18;;;12510:30;12576:29;12556:18;;;12549:57;12623:18;;358:46:0;12296:351:1;779:250:0;837:7;861:1;866;861:6;857:47;;-1:-1:-1;891:1:0;884:8;;857:47;916:9;928:5;932:1;928;:5;:::i;:::-;916:17;-1:-1:-1;961:1:0;952:5;956:1;916:17;952:5;:::i;:::-;:10;944:56;;;;-1:-1:-1;;;944:56:0;;12854:2:1;944:56:0;;;12836:21:1;12893:2;12873:18;;;12866:30;12932:34;12912:18;;;12905:62;-1:-1:-1;;;12983:18:1;;;12976:31;13024:19;;944:56:0;12652:397:1;1035:132:0;1093:7;1120:39;1124:1;1127;1120:39;;;;;;;;;;;;;;;;;:3;:39::i;439:136::-;497:7;524:43;528:1;531;524:43;;;;;;;;;;;;;;;;;:3;:43::i;1173:189::-;1259:7;1294:12;1287:5;1279:28;;;;-1:-1:-1;;;1279:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1318:9:0;1330:5;1334:1;1330;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:750::-;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1074:548::-;1186:4;1215:2;1244;1233:9;1226:21;1276:6;1270:13;1319:6;1314:2;1303:9;1299:18;1292:34;1344:1;1354:140;1368:6;1365:1;1362:13;1354:140;;;1463:14;;;1459:23;;1453:30;1429:17;;;1448:2;1425:26;1418:66;1383:10;;1354:140;;;1358:3;1543:1;1538:2;1529:6;1518:9;1514:22;1510:31;1503:42;1613:2;1606;1602:7;1597:2;1589:6;1585:15;1581:29;1570:9;1566:45;1562:54;1554:62;;;;1074:548;;;;:::o;1627:180::-;1686:6;1739:2;1727:9;1718:7;1714:23;1710:32;1707:52;;;1755:1;1752;1745:12;1707:52;-1:-1:-1;1778:23:1;;1627:180;-1:-1:-1;1627:180:1:o;1812:154::-;-1:-1:-1;;;;;1891:5:1;1887:54;1880:5;1877:65;1867:93;;1956:1;1953;1946:12;1971:315;2039:6;2047;2100:2;2088:9;2079:7;2075:23;2071:32;2068:52;;;2116:1;2113;2106:12;2068:52;2155:9;2142:23;2174:31;2199:5;2174:31;:::i;:::-;2224:5;2276:2;2261:18;;;;2248:32;;-1:-1:-1;;;1971:315:1:o;2483:248::-;2551:6;2559;2612:2;2600:9;2591:7;2587:23;2583:32;2580:52;;;2628:1;2625;2618:12;2580:52;-1:-1:-1;;2651:23:1;;;2721:2;2706:18;;;2693:32;;-1:-1:-1;2483:248:1:o;2736:456::-;2813:6;2821;2829;2882:2;2870:9;2861:7;2857:23;2853:32;2850:52;;;2898:1;2895;2888:12;2850:52;2937:9;2924:23;2956:31;2981:5;2956:31;:::i;:::-;3006:5;-1:-1:-1;3063:2:1;3048:18;;3035:32;3076:33;3035:32;3076:33;:::i;:::-;2736:456;;3128:7;;-1:-1:-1;;;3182:2:1;3167:18;;;;3154:32;;2736:456::o;3197:247::-;3256:6;3309:2;3297:9;3288:7;3284:23;3280:32;3277:52;;;3325:1;3322;3315:12;3277:52;3364:9;3351:23;3383:31;3408:5;3383:31;:::i;3638:316::-;3715:6;3723;3731;3784:2;3772:9;3763:7;3759:23;3755:32;3752:52;;;3800:1;3797;3790:12;3752:52;-1:-1:-1;;3823:23:1;;;3893:2;3878:18;;3865:32;;-1:-1:-1;3944:2:1;3929:18;;;3916:32;;3638:316;-1:-1:-1;3638:316:1:o;4190:388::-;4258:6;4266;4319:2;4307:9;4298:7;4294:23;4290:32;4287:52;;;4335:1;4332;4325:12;4287:52;4374:9;4361:23;4393:31;4418:5;4393:31;:::i;:::-;4443:5;-1:-1:-1;4500:2:1;4485:18;;4472:32;4513:33;4472:32;4513:33;:::i;:::-;4565:7;4555:17;;;4190:388;;;;;:::o;4583:309::-;4648:6;4656;4709:2;4697:9;4688:7;4684:23;4680:32;4677:52;;;4725:1;4722;4715:12;4677:52;4764:9;4751:23;4783:28;4805:5;4783:28;:::i;5740:127::-;5801:10;5796:3;5792:20;5789:1;5782:31;5832:4;5829:1;5822:15;5856:4;5853:1;5846:15;5872:127;5933:10;5928:3;5924:20;5921:1;5914:31;5964:4;5961:1;5954:15;5988:4;5985:1;5978:15;6004:135;6043:3;6064:17;;;6061:43;;6084:18;;:::i;:::-;-1:-1:-1;6131:1:1;6120:13;;6004:135::o;6547:422::-;6636:1;6679:5;6636:1;6693:270;6714:7;6704:8;6701:21;6693:270;;;6773:4;6769:1;6765:6;6761:17;6755:4;6752:27;6749:53;;;6782:18;;:::i;:::-;6832:7;6822:8;6818:22;6815:55;;;6852:16;;;;6815:55;6931:22;;;;6891:15;;;;6693:270;;;6697:3;6547:422;;;;;:::o;6974:806::-;7023:5;7053:8;7043:80;;-1:-1:-1;7094:1:1;7108:5;;7043:80;7142:4;7132:76;;-1:-1:-1;7179:1:1;7193:5;;7132:76;7224:4;7242:1;7237:59;;;;7310:1;7305:130;;;;7217:218;;7237:59;7267:1;7258:10;;7281:5;;;7305:130;7342:3;7332:8;7329:17;7326:43;;;7349:18;;:::i;:::-;-1:-1:-1;;7405:1:1;7391:16;;7420:5;;7217:218;;7519:2;7509:8;7506:16;7500:3;7494:4;7491:13;7487:36;7481:2;7471:8;7468:16;7463:2;7457:4;7454:12;7450:35;7447:77;7444:159;;;-1:-1:-1;7556:19:1;;;7588:5;;7444:159;7635:34;7660:8;7654:4;7635:34;:::i;:::-;7705:6;7701:1;7697:6;7693:19;7684:7;7681:32;7678:58;;;7716:18;;:::i;:::-;7754:20;;6974:806;-1:-1:-1;;;6974:806:1:o;7785:140::-;7843:5;7872:47;7913:4;7903:8;7899:19;7893:4;7872:47;:::i;7930:168::-;8003:9;;;8034;;8051:15;;;8045:22;;8031:37;8021:71;;8072:18;;:::i;8103:217::-;8143:1;8169;8159:132;;8213:10;8208:3;8204:20;8201:1;8194:31;8248:4;8245:1;8238:15;8276:4;8273:1;8266:15;8159:132;-1:-1:-1;8305:9:1;;8103:217::o;8325:125::-;8390:9;;;8411:10;;;8408:36;;;8424:18;;:::i;8455:128::-;8522:9;;;8543:11;;;8540:37;;;8557:18;;:::i;8588:184::-;8658:6;8711:2;8699:9;8690:7;8686:23;8682:32;8679:52;;;8727:1;8724;8717:12;8679:52;-1:-1:-1;8750:16:1;;8588:184;-1:-1:-1;8588:184:1:o;9079:245::-;9146:6;9199:2;9187:9;9178:7;9174:23;9170:32;9167:52;;;9215:1;9212;9205:12;9167:52;9247:9;9241:16;9266:28;9288:5;9266:28;:::i;11265:1026::-;11527:4;11575:3;11564:9;11560:19;11606:6;11595:9;11588:25;11632:2;11670:6;11665:2;11654:9;11650:18;11643:34;11713:3;11708:2;11697:9;11693:18;11686:31;11737:6;11772;11766:13;11803:6;11795;11788:22;11841:3;11830:9;11826:19;11819:26;;11880:2;11872:6;11868:15;11854:29;;11901:1;11911:218;11925:6;11922:1;11919:13;11911:218;;;11990:13;;-1:-1:-1;;;;;11986:62:1;11974:75;;12104:15;;;;12069:12;;;;11947:1;11940:9;11911:218;;;-1:-1:-1;;;;;;;12185:55:1;;;;12180:2;12165:18;;12158:83;-1:-1:-1;;;12272:3:1;12257:19;12250:35;12146:3;11265:1026;-1:-1:-1;;;11265:1026:1:o

Swarm Source

ipfs://bacc8f1db00091c0718bd3a0628f39011d8830cd3cc7ed559df64d20a5f08815
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.