ETH Price: $2,493.30 (-0.74%)

Token

Tale Of Hachiko (tHACHI)
 

Overview

Max Total Supply

5,000,000 tHACHI

Holders

252

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.20671787 tHACHI

Value
$0.00
0x3be614e3718d035266464094cc054302df5dec69
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:
ERC20TALEOFHACHIKO

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-24
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.14;

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) external 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 transferOwnership(address payable _newOwner) external onlyOwner {
        authorizations[owner] = false;
        owner = _newOwner;
        authorizations[owner] = true;
        emit OwnershipTransferred(owner);
    }

    function renounceOwnership() external onlyOwner {
        authorizations[owner] = false;
        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 ERC20TALEOFHACHIKO is ERC20, Auth {
    using SafeMath for uint256;

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

    string public constant name = "Tale Of Hachiko";
    string public constant symbol = "tHACHI";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 5 * 10**6 * 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 liquidityFee = 10;
    uint256 public marketingFee = 30;
    uint256 public totalFee = marketingFee + liquidityFee;
    uint256 public constant feeDenominator = 1000;

    uint256 sellMultiplier = 2250;
    uint256 buyMultiplier = 2250;
    uint256 transferMultiplier = 2250;

    address public marketingFeeReceiver;
    address public autoLpReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;

    bool public swapEnabled = true;
    uint256 public 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 = 0xCaD3bA40091d3DdDa7c5c4b0aaFeAECa2f9c845A;
        autoLpReceiver = msg.sender;

        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;
        isWalletLimitExempt[ZERO] = 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 goLive() external onlyOwner {
        tradingOpen = true;
    }

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee;

        uint256 amountToLiquify = (swapThreshold * liquidityFee)/(totalETHFee * 2);
        uint256 amountToSwap = swapThreshold - amountToLiquify;

        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;

        totalETHFee = totalETHFee - (liquidityFee / 2);
        
        uint256 amountETHLiquidity = (amountETH * liquidityFee) / (totalETHFee * 2);
        uint256 amountETHMarketing = (amountETH * marketingFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLpReceiver,
                block.timestamp
            );
        }
    }

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

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

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

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

    function setFees_base1000(uint256 _liquidityFee,  uint256 _marketingFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;

        totalFee = liquidityFee + marketingFee;
    }

    function setMarketingWallet(address _marketingFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
    
    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":"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":[],"name":"autoLpReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"goLive","outputs":[],"stateMutability":"nonpayable","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":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFees_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setMarketingWallet","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":"_amount","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":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146009600a62000565565b6200002390624c4b406200057d565b6200002f91906200059f565b6002556064620000426009600a62000565565b6200005190624c4b406200057d565b6200005d91906200059f565b600355600a6009819055601e808255620000789190620005c2565b600b556108ca600c819055600d819055600e556011805461ffff60a01b1916600160a81b1790556101f4620000b06009600a62000565565b620000bf90624c4b406200057d565b620000cb91906200059f565b601255348015620000db57600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560118054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa15801562000162573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001889190620005dd565b6001600160a01b039081166080526011546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ff9190620005dd565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002779190620005dd565b6001600160a01b0390811660a05230600081815260056020908152604080832060115490951683529381528382206000199055600f805473cad3ba40091d3ddda7c5c4b0aafeaeca2f9c845a6001600160a01b0319918216179091556010805433921682179055825260068152838220805460ff1990811660019081179092556007835285842080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216831790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548216831790556008909252848320805483168217905592825292812080548416831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805484168317905580527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909216179055620003d86009600a62000565565b620003e790624c4b406200057d565b33600081815260046020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200042a6009600a62000565565b6200043990624c4b406200057d565b60405190815260200160405180910390a362000608565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004a75781600019048211156200048b576200048b62000450565b808516156200049957918102915b93841c93908002906200046b565b509250929050565b600082620004c0575060016200055f565b81620004cf575060006200055f565b8160018114620004e85760028114620004f35762000513565b60019150506200055f565b60ff84111562000507576200050762000450565b50506001821b6200055f565b5060208310610133831016604e8410600b841016171562000538575081810a6200055f565b62000544838362000466565b80600019048211156200055b576200055b62000450565b0290505b92915050565b60006200057660ff841683620004af565b9392505050565b60008160001904831182151516156200059a576200059a62000450565b500290565b600082620005bd57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620005d857620005d862000450565b500190565b600060208284031215620005f057600080fd5b81516001600160a01b03811681146200057657600080fd5b60805160a0516123586200064a600039600081816106e40152818161149b0152818161182401528181611b4d0152611b810152600061192f01526123586000f3fe60806040526004361061027f5760003560e01c8063715018a61161014f578063b6a5d7de116100c1578063f0b37c041161007a578063f0b37c041461081c578063f2fde38b1461083c578063f7f7331b1461085c578063f887ea401461087c578063fe9fbb801461089c578063ffb54a99146108bc57600080fd5b8063b6a5d7de14610726578063bd9ab53714610746578063c867d60b14610766578063dd62ed3e14610796578063df20fd49146107dc578063e96fada2146107fc57600080fd5b8063893d20e811610113578063893d20e81461063c5780638b42507f1461065a57806395d89b411461068a57806398118cb4146106bc578063a8aa1b31146106d2578063a9059cbb1461070657600080fd5b8063715018a6146105a35780637460234b146105b857806377b54bad146105f057806378109e54146106105780637d1db4a51461062657600080fd5b80632b112e49116101f3578063571ac8b0116101ac578063571ac8b0146104df5780635d098b38146104ff5780636b67c4df1461051f5780636ce46bc3146105355780636ddd17131461055557806370a082311461057657600080fd5b80632b112e491461040f5780632c28f579146104245780632f54bf6e14610439578063313ce567146104685780633f4218e01461048f5780634be9d869146104bf57600080fd5b8063095ea7b311610245578063095ea7b31461035e578063180b0d7e1461038e57806318160ddd146103a45780631da1db5e146103b95780631df4ccfc146103d957806323b872dd146103ef57600080fd5b80621086831461028b578062bff446146102ad5780630445b667146102cd57806306fdde03146102f657806309302dc61461033e57600080fd5b3661028657005b600080fd5b34801561029757600080fd5b506102ab6102a6366004611e28565b6108dd565b005b3480156102b957600080fd5b506102ab6102c8366004611e28565b610980565b3480156102d957600080fd5b506102e360125481565b6040519081526020015b60405180910390f35b34801561030257600080fd5b506103316040518060400160405280600f81526020016e54616c65204f662048616368696b6f60881b81525081565b6040516102ed9190611eae565b34801561034a57600080fd5b506102ab610359366004611f03565b610a14565b34801561036a57600080fd5b5061037e610379366004611f31565b610ad2565b60405190151581526020016102ed565b34801561039a57600080fd5b506102e36103e881565b3480156103b057600080fd5b506102e3610b3f565b3480156103c557600080fd5b506102ab6103d4366004611f03565b610b5b565b3480156103e557600080fd5b506102e3600b5481565b3480156103fb57600080fd5b5061037e61040a366004611f5d565b610bce565b34801561041b57600080fd5b506102e3610c90565b34801561043057600080fd5b506102ab610d16565b34801561044557600080fd5b5061037e610454366004611f9e565b6000546001600160a01b0391821691161490565b34801561047457600080fd5b5061047d600981565b60405160ff90911681526020016102ed565b34801561049b57600080fd5b5061037e6104aa366004611f9e565b60066020526000908152604090205460ff1681565b3480156104cb57600080fd5b506102ab6104da366004611e28565b610d55565b3480156104eb57600080fd5b5061037e6104fa366004611f9e565b610de9565b34801561050b57600080fd5b506102ab61051a366004611f9e565b610df7565b34801561052b57600080fd5b506102e3600a5481565b34801561054157600080fd5b506102ab610550366004611fbb565b610e43565b34801561056157600080fd5b5060115461037e90600160a81b900460ff1681565b34801561058257600080fd5b506102e3610591366004611f9e565b60046020526000908152604090205481565b3480156105af57600080fd5b506102ab610e79565b3480156105c457600080fd5b506010546105d8906001600160a01b031681565b6040516001600160a01b0390911681526020016102ed565b3480156105fc57600080fd5b5061037e61060b366004611f31565b610f05565b34801561061c57600080fd5b506102e360035481565b34801561063257600080fd5b506102e360025481565b34801561064857600080fd5b506000546001600160a01b03166105d8565b34801561066657600080fd5b5061037e610675366004611f9e565b60076020526000908152604090205460ff1681565b34801561069657600080fd5b506103316040518060400160405280600681526020016574484143484960d01b81525081565b3480156106c857600080fd5b506102e360095481565b3480156106de57600080fd5b506105d87f000000000000000000000000000000000000000000000000000000000000000081565b34801561071257600080fd5b5061037e610721366004611f31565b611014565b34801561073257600080fd5b506102ab610741366004611f9e565b611021565b34801561075257600080fd5b506102ab610761366004611f03565b611072565b34801561077257600080fd5b5061037e610781366004611f9e565b60086020526000908152604090205460ff1681565b3480156107a257600080fd5b506102e36107b1366004611fe7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156107e857600080fd5b506102ab6107f7366004612020565b611136565b34801561080857600080fd5b50600f546105d8906001600160a01b031681565b34801561082857600080fd5b506102ab610837366004611f9e565b611182565b34801561084857600080fd5b506102ab610857366004611f9e565b61122b565b34801561086857600080fd5b506102ab61087736600461203e565b6112d7565b34801561088857600080fd5b506011546105d8906001600160a01b031681565b3480156108a857600080fd5b5061037e6108b7366004611f9e565b61131c565b3480156108c857600080fd5b5060115461037e90600160a01b900460ff1681565b6108e63361131c565b61090b5760405162461bcd60e51b815260040161090290612060565b60405180910390fd5b60005b8281101561097a57816008600086868581811061092d5761092d612085565b90506020020160208101906109429190611f9e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610973816120b1565b905061090e565b50505050565b6109893361131c565b6109a55760405162461bcd60e51b815260040161090290612060565b60005b8281101561097a5781600660008686858181106109c7576109c7612085565b90506020020160208101906109dc9190611f9e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610a0d816120b1565b90506109a8565b6000546001600160a01b03163314610a3e5760405162461bcd60e51b8152600401610902906120ca565b6005811015610a9b5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b6064820152608401610902565b6103e881610aab6009600a6121ce565b610ab890624c4b406121dd565b610ac291906121dd565b610acc91906121fc565b60035550565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b2d9086815260200190565b60405180910390a35060015b92915050565b610b4b6009600a6121ce565b610b5890624c4b406121dd565b81565b6000546001600160a01b03163314610b855760405162461bcd60e51b8152600401610902906120ca565b4760006064610b9484846121dd565b610b9e91906121fc565b604051909150339082156108fc029083906000818181858888f1935050505015801561097a573d6000803e3d6000fd5b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610c7b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600582528381203382529091529190912054610c5691849061133a565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610c86848484611374565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54909190610cf06009600a6121ce565b610cfd90624c4b406121dd565b610d07919061221e565b610d11919061221e565b905090565b6000546001600160a01b03163314610d405760405162461bcd60e51b8152600401610902906120ca565b6011805460ff60a01b1916600160a01b179055565b610d5e3361131c565b610d7a5760405162461bcd60e51b815260040161090290612060565b60005b8281101561097a578160076000868685818110610d9c57610d9c612085565b9050602002016020810190610db19190611f9e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610de2816120b1565b9050610d7d565b6000610b3982600019610ad2565b6000546001600160a01b03163314610e215760405162461bcd60e51b8152600401610902906120ca565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b610e4c3361131c565b610e685760405162461bcd60e51b815260040161090290612060565b600c91909155600d91909155600e55565b6000546001600160a01b03163314610ea35760405162461bcd60e51b8152600401610902906120ca565b600080546001600160a01b03168152600160209081526040808320805460ff1916905582546001600160a01b0319168355519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a1565b600080546001600160a01b03163314610f305760405162461bcd60e51b8152600401610902906120ca565b81600003610fa3576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612235565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c89919061224e565b6000610c89338484611374565b6000546001600160a01b0316331461104b5760405162461bcd60e51b8152600401610902906120ca565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b0316331461109c5760405162461bcd60e51b8152600401610902906120ca565b60058110156110ff5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610902565b6103e88161110f6009600a6121ce565b61111c90624c4b406121dd565b61112691906121dd565b61113091906121fc565b60025550565b6000546001600160a01b031633146111605760405162461bcd60e51b8152600401610902906120ca565b60118054921515600160a81b0260ff60a81b1990931692909217909155601255565b6000546001600160a01b031633146111ac5760405162461bcd60e51b8152600401610902906120ca565b6000546001600160a01b039081169082160361120a5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610902565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146112555760405162461bcd60e51b8152600401610902906120ca565b600080546001600160a01b039081168252600160208181526040808520805460ff1990811690915585546001600160a01b03191687861690811787558652818620805490911690931790925592549051911681527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6000546001600160a01b031633146113015760405162461bcd60e51b8152600401610902906120ca565b6009829055600a819055611315818361226b565b600b555050565b6001600160a01b031660009081526001602052604090205460ff1690565b6000818484111561135e5760405162461bcd60e51b81526004016109029190611eae565b50600061136b848661221e565b95945050505050565b60135460009060ff16156113945761138d848484611731565b9050610c89565b6001600160a01b03841660009081526001602052604090205460ff161580156113d657506001600160a01b03831660009081526001602052604090205460ff16155b1561142b57601154600160a01b900460ff1661142b5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610902565b6001600160a01b03841660009081526001602052604090205460ff1615801561146d57506001600160a01b03841660009081526008602052604090205460ff16155b801561149257506001600160a01b03831660009081526008602052604090205460ff16155b80156114d057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561154a576003546001600160a01b0384166000908152600460205260409020546114fc90849061226b565b111561154a5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610902565b6002548211158061157357506001600160a01b03841660009081526007602052604090205460ff165b8061159657506001600160a01b03831660009081526007602052604090205460ff165b6115da5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610902565b6115e2611817565b156115ef576115ef61188a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526004909152919091205461164191849061133a565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff168061168e57506001600160a01b03841660009081526006602052604090205460ff165b6116a25761169d858486611b25565b6116a4565b825b6001600160a01b0385166000908152600460205260409020549091506116ca9082611c84565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061171e9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260049091529182205461178291849061133a565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546117b19083611c84565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118059086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611855575060135460ff16155b801561186a5750601154600160a81b900460ff165b8015610d1157505060125430600090815260046020526040902054101590565b6013805460ff19166001179055600b5460006118a78260026121dd565b6009546012546118b791906121dd565b6118c191906121fc565b90506000816012546118d3919061221e565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061190d5761190d612085565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061196157611961612085565b6001600160a01b03928316602091820292909201015260115460405163791ac94760e01b815291169063791ac947906119a7908590600090869030904290600401612283565b600060405180830381600087803b1580156119c157600080fd5b505af11580156119d5573d6000803e3d6000fd5b50506009544792506119ea91506002906121fc565b6119f4908661221e565b94506000611a038660026121dd565b600954611a1090846121dd565b611a1a91906121fc565b9050600086600a5484611a2d91906121dd565b611a3791906121fc565b600f546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611a72573d6000803e3d6000fd5b508515611b125760115460105460405163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015611ae9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b0e91906122f4565b5050505b50506013805460ff191690555050505050565b6000821580611b345750600b54155b15611b40575081610c89565b600e546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603611b7f5750600c54611bbd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611bbd5750600d545b6000611bf4611bcf6103e860646121dd565b611bee84611be8600b548a611ce390919063ffffffff16565b90611ce3565b90611d65565b90508015611c705730600090815260046020526040902054611c169082611c84565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c679085815260200190565b60405180910390a35b611c7a8582611da7565b9695505050505050565b600080611c91838561226b565b905083811015610c895760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610902565b600082600003611cf557506000610b39565b6000611d0183856121dd565b905082611d0e85836121fc565b14610c895760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610902565b6000610c8983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611de9565b6000610c8983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133a565b60008183611e0a5760405162461bcd60e51b81526004016109029190611eae565b50600061136b84866121fc565b8015158114611e2557600080fd5b50565b600080600060408486031215611e3d57600080fd5b833567ffffffffffffffff80821115611e5557600080fd5b818601915086601f830112611e6957600080fd5b813581811115611e7857600080fd5b8760208260051b8501011115611e8d57600080fd5b60209283019550935050840135611ea381611e17565b809150509250925092565b600060208083528351808285015260005b81811015611edb57858101830151858201604001528201611ebf565b81811115611eed576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215611f1557600080fd5b5035919050565b6001600160a01b0381168114611e2557600080fd5b60008060408385031215611f4457600080fd5b8235611f4f81611f1c565b946020939093013593505050565b600080600060608486031215611f7257600080fd5b8335611f7d81611f1c565b92506020840135611f8d81611f1c565b929592945050506040919091013590565b600060208284031215611fb057600080fd5b8135610c8981611f1c565b600080600060608486031215611fd057600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611ffa57600080fd5b823561200581611f1c565b9150602083013561201581611f1c565b809150509250929050565b6000806040838503121561203357600080fd5b8235611f4f81611e17565b6000806040838503121561205157600080fd5b50508035926020909101359150565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016120c3576120c361209b565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b8085111561212557816000190482111561210b5761210b61209b565b8085161561211857918102915b93841c93908002906120ef565b509250929050565b60008261213c57506001610b39565b8161214957506000610b39565b816001811461215f576002811461216957612185565b6001915050610b39565b60ff84111561217a5761217a61209b565b50506001821b610b39565b5060208310610133831016604e8410600b84101617156121a8575081810a610b39565b6121b283836120ea565b80600019048211156121c6576121c661209b565b029392505050565b6000610c8960ff84168361212d565b60008160001904831182151516156121f7576121f761209b565b500290565b60008261221957634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156122305761223061209b565b500390565b60006020828403121561224757600080fd5b5051919050565b60006020828403121561226057600080fd5b8151610c8981611e17565b6000821982111561227e5761227e61209b565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122d35784516001600160a01b0316835293830193918301916001016122ae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561230957600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208d066e849377c3b44aae8d5e2e65c55923314ab5ddbcebac4d28f4c499ee7da164736f6c634300080e0033

Deployed Bytecode

0x60806040526004361061027f5760003560e01c8063715018a61161014f578063b6a5d7de116100c1578063f0b37c041161007a578063f0b37c041461081c578063f2fde38b1461083c578063f7f7331b1461085c578063f887ea401461087c578063fe9fbb801461089c578063ffb54a99146108bc57600080fd5b8063b6a5d7de14610726578063bd9ab53714610746578063c867d60b14610766578063dd62ed3e14610796578063df20fd49146107dc578063e96fada2146107fc57600080fd5b8063893d20e811610113578063893d20e81461063c5780638b42507f1461065a57806395d89b411461068a57806398118cb4146106bc578063a8aa1b31146106d2578063a9059cbb1461070657600080fd5b8063715018a6146105a35780637460234b146105b857806377b54bad146105f057806378109e54146106105780637d1db4a51461062657600080fd5b80632b112e49116101f3578063571ac8b0116101ac578063571ac8b0146104df5780635d098b38146104ff5780636b67c4df1461051f5780636ce46bc3146105355780636ddd17131461055557806370a082311461057657600080fd5b80632b112e491461040f5780632c28f579146104245780632f54bf6e14610439578063313ce567146104685780633f4218e01461048f5780634be9d869146104bf57600080fd5b8063095ea7b311610245578063095ea7b31461035e578063180b0d7e1461038e57806318160ddd146103a45780631da1db5e146103b95780631df4ccfc146103d957806323b872dd146103ef57600080fd5b80621086831461028b578062bff446146102ad5780630445b667146102cd57806306fdde03146102f657806309302dc61461033e57600080fd5b3661028657005b600080fd5b34801561029757600080fd5b506102ab6102a6366004611e28565b6108dd565b005b3480156102b957600080fd5b506102ab6102c8366004611e28565b610980565b3480156102d957600080fd5b506102e360125481565b6040519081526020015b60405180910390f35b34801561030257600080fd5b506103316040518060400160405280600f81526020016e54616c65204f662048616368696b6f60881b81525081565b6040516102ed9190611eae565b34801561034a57600080fd5b506102ab610359366004611f03565b610a14565b34801561036a57600080fd5b5061037e610379366004611f31565b610ad2565b60405190151581526020016102ed565b34801561039a57600080fd5b506102e36103e881565b3480156103b057600080fd5b506102e3610b3f565b3480156103c557600080fd5b506102ab6103d4366004611f03565b610b5b565b3480156103e557600080fd5b506102e3600b5481565b3480156103fb57600080fd5b5061037e61040a366004611f5d565b610bce565b34801561041b57600080fd5b506102e3610c90565b34801561043057600080fd5b506102ab610d16565b34801561044557600080fd5b5061037e610454366004611f9e565b6000546001600160a01b0391821691161490565b34801561047457600080fd5b5061047d600981565b60405160ff90911681526020016102ed565b34801561049b57600080fd5b5061037e6104aa366004611f9e565b60066020526000908152604090205460ff1681565b3480156104cb57600080fd5b506102ab6104da366004611e28565b610d55565b3480156104eb57600080fd5b5061037e6104fa366004611f9e565b610de9565b34801561050b57600080fd5b506102ab61051a366004611f9e565b610df7565b34801561052b57600080fd5b506102e3600a5481565b34801561054157600080fd5b506102ab610550366004611fbb565b610e43565b34801561056157600080fd5b5060115461037e90600160a81b900460ff1681565b34801561058257600080fd5b506102e3610591366004611f9e565b60046020526000908152604090205481565b3480156105af57600080fd5b506102ab610e79565b3480156105c457600080fd5b506010546105d8906001600160a01b031681565b6040516001600160a01b0390911681526020016102ed565b3480156105fc57600080fd5b5061037e61060b366004611f31565b610f05565b34801561061c57600080fd5b506102e360035481565b34801561063257600080fd5b506102e360025481565b34801561064857600080fd5b506000546001600160a01b03166105d8565b34801561066657600080fd5b5061037e610675366004611f9e565b60076020526000908152604090205460ff1681565b34801561069657600080fd5b506103316040518060400160405280600681526020016574484143484960d01b81525081565b3480156106c857600080fd5b506102e360095481565b3480156106de57600080fd5b506105d87f0000000000000000000000005ef60be2d6ef52239f691a5b165b25eddf3bd45a81565b34801561071257600080fd5b5061037e610721366004611f31565b611014565b34801561073257600080fd5b506102ab610741366004611f9e565b611021565b34801561075257600080fd5b506102ab610761366004611f03565b611072565b34801561077257600080fd5b5061037e610781366004611f9e565b60086020526000908152604090205460ff1681565b3480156107a257600080fd5b506102e36107b1366004611fe7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156107e857600080fd5b506102ab6107f7366004612020565b611136565b34801561080857600080fd5b50600f546105d8906001600160a01b031681565b34801561082857600080fd5b506102ab610837366004611f9e565b611182565b34801561084857600080fd5b506102ab610857366004611f9e565b61122b565b34801561086857600080fd5b506102ab61087736600461203e565b6112d7565b34801561088857600080fd5b506011546105d8906001600160a01b031681565b3480156108a857600080fd5b5061037e6108b7366004611f9e565b61131c565b3480156108c857600080fd5b5060115461037e90600160a01b900460ff1681565b6108e63361131c565b61090b5760405162461bcd60e51b815260040161090290612060565b60405180910390fd5b60005b8281101561097a57816008600086868581811061092d5761092d612085565b90506020020160208101906109429190611f9e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610973816120b1565b905061090e565b50505050565b6109893361131c565b6109a55760405162461bcd60e51b815260040161090290612060565b60005b8281101561097a5781600660008686858181106109c7576109c7612085565b90506020020160208101906109dc9190611f9e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610a0d816120b1565b90506109a8565b6000546001600160a01b03163314610a3e5760405162461bcd60e51b8152600401610902906120ca565b6005811015610a9b5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b6064820152608401610902565b6103e881610aab6009600a6121ce565b610ab890624c4b406121dd565b610ac291906121dd565b610acc91906121fc565b60035550565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b2d9086815260200190565b60405180910390a35060015b92915050565b610b4b6009600a6121ce565b610b5890624c4b406121dd565b81565b6000546001600160a01b03163314610b855760405162461bcd60e51b8152600401610902906120ca565b4760006064610b9484846121dd565b610b9e91906121fc565b604051909150339082156108fc029083906000818181858888f1935050505015801561097a573d6000803e3d6000fd5b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610c7b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600582528381203382529091529190912054610c5691849061133a565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610c86848484611374565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54909190610cf06009600a6121ce565b610cfd90624c4b406121dd565b610d07919061221e565b610d11919061221e565b905090565b6000546001600160a01b03163314610d405760405162461bcd60e51b8152600401610902906120ca565b6011805460ff60a01b1916600160a01b179055565b610d5e3361131c565b610d7a5760405162461bcd60e51b815260040161090290612060565b60005b8281101561097a578160076000868685818110610d9c57610d9c612085565b9050602002016020810190610db19190611f9e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610de2816120b1565b9050610d7d565b6000610b3982600019610ad2565b6000546001600160a01b03163314610e215760405162461bcd60e51b8152600401610902906120ca565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b610e4c3361131c565b610e685760405162461bcd60e51b815260040161090290612060565b600c91909155600d91909155600e55565b6000546001600160a01b03163314610ea35760405162461bcd60e51b8152600401610902906120ca565b600080546001600160a01b03168152600160209081526040808320805460ff1916905582546001600160a01b0319168355519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a1565b600080546001600160a01b03163314610f305760405162461bcd60e51b8152600401610902906120ca565b81600003610fa3576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190612235565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c89919061224e565b6000610c89338484611374565b6000546001600160a01b0316331461104b5760405162461bcd60e51b8152600401610902906120ca565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b0316331461109c5760405162461bcd60e51b8152600401610902906120ca565b60058110156110ff5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610902565b6103e88161110f6009600a6121ce565b61111c90624c4b406121dd565b61112691906121dd565b61113091906121fc565b60025550565b6000546001600160a01b031633146111605760405162461bcd60e51b8152600401610902906120ca565b60118054921515600160a81b0260ff60a81b1990931692909217909155601255565b6000546001600160a01b031633146111ac5760405162461bcd60e51b8152600401610902906120ca565b6000546001600160a01b039081169082160361120a5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610902565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146112555760405162461bcd60e51b8152600401610902906120ca565b600080546001600160a01b039081168252600160208181526040808520805460ff1990811690915585546001600160a01b03191687861690811787558652818620805490911690931790925592549051911681527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6000546001600160a01b031633146113015760405162461bcd60e51b8152600401610902906120ca565b6009829055600a819055611315818361226b565b600b555050565b6001600160a01b031660009081526001602052604090205460ff1690565b6000818484111561135e5760405162461bcd60e51b81526004016109029190611eae565b50600061136b848661221e565b95945050505050565b60135460009060ff16156113945761138d848484611731565b9050610c89565b6001600160a01b03841660009081526001602052604090205460ff161580156113d657506001600160a01b03831660009081526001602052604090205460ff16155b1561142b57601154600160a01b900460ff1661142b5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610902565b6001600160a01b03841660009081526001602052604090205460ff1615801561146d57506001600160a01b03841660009081526008602052604090205460ff16155b801561149257506001600160a01b03831660009081526008602052604090205460ff16155b80156114d057507f0000000000000000000000005ef60be2d6ef52239f691a5b165b25eddf3bd45a6001600160a01b0316836001600160a01b031614155b1561154a576003546001600160a01b0384166000908152600460205260409020546114fc90849061226b565b111561154a5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610902565b6002548211158061157357506001600160a01b03841660009081526007602052604090205460ff165b8061159657506001600160a01b03831660009081526007602052604090205460ff165b6115da5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610902565b6115e2611817565b156115ef576115ef61188a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526004909152919091205461164191849061133a565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff168061168e57506001600160a01b03841660009081526006602052604090205460ff165b6116a25761169d858486611b25565b6116a4565b825b6001600160a01b0385166000908152600460205260409020549091506116ca9082611c84565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061171e9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260049091529182205461178291849061133a565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546117b19083611c84565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118059086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f0000000000000000000000005ef60be2d6ef52239f691a5b165b25eddf3bd45a1614801590611855575060135460ff16155b801561186a5750601154600160a81b900460ff165b8015610d1157505060125430600090815260046020526040902054101590565b6013805460ff19166001179055600b5460006118a78260026121dd565b6009546012546118b791906121dd565b6118c191906121fc565b90506000816012546118d3919061221e565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061190d5761190d612085565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061196157611961612085565b6001600160a01b03928316602091820292909201015260115460405163791ac94760e01b815291169063791ac947906119a7908590600090869030904290600401612283565b600060405180830381600087803b1580156119c157600080fd5b505af11580156119d5573d6000803e3d6000fd5b50506009544792506119ea91506002906121fc565b6119f4908661221e565b94506000611a038660026121dd565b600954611a1090846121dd565b611a1a91906121fc565b9050600086600a5484611a2d91906121dd565b611a3791906121fc565b600f546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611a72573d6000803e3d6000fd5b508515611b125760115460105460405163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015611ae9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b0e91906122f4565b5050505b50506013805460ff191690555050505050565b6000821580611b345750600b54155b15611b40575081610c89565b600e546001600160a01b037f0000000000000000000000005ef60be2d6ef52239f691a5b165b25eddf3bd45a811690841603611b7f5750600c54611bbd565b7f0000000000000000000000005ef60be2d6ef52239f691a5b165b25eddf3bd45a6001600160a01b0316856001600160a01b031603611bbd5750600d545b6000611bf4611bcf6103e860646121dd565b611bee84611be8600b548a611ce390919063ffffffff16565b90611ce3565b90611d65565b90508015611c705730600090815260046020526040902054611c169082611c84565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c679085815260200190565b60405180910390a35b611c7a8582611da7565b9695505050505050565b600080611c91838561226b565b905083811015610c895760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610902565b600082600003611cf557506000610b39565b6000611d0183856121dd565b905082611d0e85836121fc565b14610c895760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610902565b6000610c8983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611de9565b6000610c8983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133a565b60008183611e0a5760405162461bcd60e51b81526004016109029190611eae565b50600061136b84866121fc565b8015158114611e2557600080fd5b50565b600080600060408486031215611e3d57600080fd5b833567ffffffffffffffff80821115611e5557600080fd5b818601915086601f830112611e6957600080fd5b813581811115611e7857600080fd5b8760208260051b8501011115611e8d57600080fd5b60209283019550935050840135611ea381611e17565b809150509250925092565b600060208083528351808285015260005b81811015611edb57858101830151858201604001528201611ebf565b81811115611eed576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215611f1557600080fd5b5035919050565b6001600160a01b0381168114611e2557600080fd5b60008060408385031215611f4457600080fd5b8235611f4f81611f1c565b946020939093013593505050565b600080600060608486031215611f7257600080fd5b8335611f7d81611f1c565b92506020840135611f8d81611f1c565b929592945050506040919091013590565b600060208284031215611fb057600080fd5b8135610c8981611f1c565b600080600060608486031215611fd057600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611ffa57600080fd5b823561200581611f1c565b9150602083013561201581611f1c565b809150509250929050565b6000806040838503121561203357600080fd5b8235611f4f81611e17565b6000806040838503121561205157600080fd5b50508035926020909101359150565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016120c3576120c361209b565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b8085111561212557816000190482111561210b5761210b61209b565b8085161561211857918102915b93841c93908002906120ef565b509250929050565b60008261213c57506001610b39565b8161214957506000610b39565b816001811461215f576002811461216957612185565b6001915050610b39565b60ff84111561217a5761217a61209b565b50506001821b610b39565b5060208310610133831016604e8410600b84101617156121a8575081810a610b39565b6121b283836120ea565b80600019048211156121c6576121c661209b565b029392505050565b6000610c8960ff84168361212d565b60008160001904831182151516156121f7576121f761209b565b500290565b60008261221957634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156122305761223061209b565b500390565b60006020828403121561224757600080fd5b5051919050565b60006020828403121561226057600080fd5b8151610c8981611e17565b6000821982111561227e5761227e61209b565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122d35784516001600160a01b0316835293830193918301916001016122ae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561230957600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208d066e849377c3b44aae8d5e2e65c55923314ab5ddbcebac4d28f4c499ee7da164736f6c634300080e0033

Deployed Bytecode Sourcemap

4014:9984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12861:229;;;;;;;;;;-1:-1:-1;12861:229:0;;;;;:::i;:::-;;:::i;:::-;;12411:213;;;;;;;;;;-1:-1:-1;12411:213:0;;;;;:::i;:::-;;:::i;5424:48::-;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;5424:48:0;;;;;;;;4276:47;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4276:47:0;;;;;;;;;;;;:::i;7611:261::-;;;;;;;;;;-1:-1:-1;7611:261:0;;;;;:::i;:::-;;:::i;6715:216::-;;;;;;;;;;-1:-1:-1;6715:216:0;;;;;:::i;:::-;;:::i;:::-;;;2482:14:1;;2475:22;2457:41;;2445:2;2430:18;6715:216:0;2317:187:1;5031:45:0;;;;;;;;;;;;5072:4;5031:45;;4420:62;;;;;;;;;;;;;:::i;10549:259::-;;;;;;;;;;-1:-1:-1;10549:259:0;;;;;:::i;:::-;;:::i;4971:53::-;;;;;;;;;;;;;;;;7233:370;;;;;;;;;;-1:-1:-1;7233:370:0;;;;;:::i;:::-;;:::i;13858:137::-;;;;;;;;;;;;;:::i;11108:74::-;;;;;;;;;;;;;:::i;2572:103::-;;;;;;;;;;-1:-1:-1;2572:103:0;;;;;:::i;:::-;2627:4;2662:5;-1:-1:-1;;;;;2651:16:0;;;2662:5;;2651:16;;2572:103;4377:34;;;;;;;;;;;;4410:1;4377:34;;;;;3394:4:1;3382:17;;;3364:36;;3352:2;3337:18;4377:34:0;3222:184:1;4726:44:0;;;;;;;;;;-1:-1:-1;4726:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12632:221;;;;;;;;;;-1:-1:-1;12632:221:0;;;;;:::i;:::-;;:::i;6939:122::-;;;;;;;;;;-1:-1:-1;6939:122:0;;;;;:::i;:::-;;:::i;13542:141::-;;;;;;;;;;-1:-1:-1;13542:141:0;;;;;:::i;:::-;;:::i;4932:32::-;;;;;;;;;;;;;;;;13098:199;;;;;;;;;;-1:-1:-1;13098:199:0;;;;;:::i;:::-;;:::i;5387:30::-;;;;;;;;;;-1:-1:-1;5387:30:0;;;;-1:-1:-1;;;5387:30:0;;;;;;4604:45;;;;;;;;;;-1:-1:-1;4604:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;3037:168;;;;;;;;;;;;;:::i;5240:29::-;;;;;;;;;;-1:-1:-1;5240:29:0;;;;-1:-1:-1;;;;;5240:29:0;;;;;;-1:-1:-1;;;;;3896:32:1;;;3878:51;;3866:2;3851:18;5240:29:0;3732:203:1;10816:284:0;;;;;;;;;;-1:-1:-1;10816:284:0;;;;;:::i;:::-;;:::i;4545:50::-;;;;;;;;;;;;;;;;4491:47;;;;;;;;;;;;;;;;6490:78;;;;;;;;;;-1:-1:-1;6542:7:0;6560:5;-1:-1:-1;;;;;6560:5:0;6490:78;;4777:48;;;;;;;;;;-1:-1:-1;4777:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4330:40;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4330:40:0;;;;;4893:32;;;;;;;;;;;;;;;;5309:29;;;;;;;;;;;;;;;7069:156;;;;;;;;;;-1:-1:-1;7069:156:0;;;;;:::i;:::-;;:::i;2299:96::-;;;;;;;;;;-1:-1:-1;2299:96:0;;;;;:::i;:::-;;:::i;7878:262::-;;;;;;;;;;-1:-1:-1;7878:262:0;;;;;:::i;:::-;;:::i;4832:52::-;;;;;;;;;;-1:-1:-1;4832:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6574:133;;;;;;;;;;-1:-1:-1;6574:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6676:19:0;;;6658:7;6676:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6574:133;13691:155;;;;;;;;;;-1:-1:-1;13691:155:0;;;;;:::i;:::-;;:::i;5198:35::-;;;;;;;;;;-1:-1:-1;5198:35:0;;;;-1:-1:-1;;;;;5198:35:0;;;2403:161;;;;;;;;;;-1:-1:-1;2403:161:0;;;;;:::i;:::-;;:::i;2798:231::-;;;;;;;;;;-1:-1:-1;2798:231:0;;;;;:::i;:::-;;:::i;13305:229::-;;;;;;;;;;-1:-1:-1;13305:229:0;;;;;:::i;:::-;;:::i;5278:24::-;;;;;;;;;;-1:-1:-1;5278:24:0;;;;-1:-1:-1;;;;;5278:24:0;;;2683:107;;;;;;;;;;-1:-1:-1;2683:107:0;;;;;:::i;:::-;;:::i;5347:31::-;;;;;;;;;;-1:-1:-1;5347:31:0;;;;-1:-1:-1;;;5347:31:0;;;;;;12861:229;2240:24;2253:10;2240:12;:24::i;:::-;2232:48;;;;-1:-1:-1;;;2232:48:0;;;;;;;:::i;:::-;;;;;;;;;12974:9:::1;12969:114;12987:20:::0;;::::1;12969:114;;;13065:6;13029:19;:33;13049:9;;13059:1;13049:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13029:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13029:33:0;:42;;-1:-1:-1;;13029:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13009:3:::1;::::0;::::1;:::i;:::-;;;12969:114;;;;12861:229:::0;;;:::o;12411:213::-;2240:24;2253:10;2240:12;:24::i;:::-;2232:48;;;;-1:-1:-1;;;2232:48:0;;;;;;;:::i;:::-;12516:9:::1;12511:106;12529:20:::0;;::::1;12511:106;;;12599:6;12571:11;:25;12583:9;;12593:1;12583:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12571:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12571:25:0;:34;;-1:-1:-1;;12571:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12551:3:::1;::::0;::::1;:::i;:::-;;;12511:106;;7611:261:::0;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;7747:1:::1;7720:23;:28;;7712:76;;;::::0;-1:-1:-1;;;7712:76:0;;6666:2:1;7712:76:0::1;::::0;::::1;6648:21:1::0;6705:2;6685:18;;;6678:30;6744:34;6724:18;;;6717:62;-1:-1:-1;;;6795:18:1;;;6788:34;6839:19;;7712:76:0::1;6464:400:1::0;7712:76:0::1;7860:4;7832:23:::0;4470:12:::1;4410:1;4470:2;:12;:::i;:::-;4458:24;::::0;:9:::1;:24;:::i;:::-;7818:37;;;;:::i;:::-;7817:47;;;;:::i;:::-;7799:15;:65:::0;-1:-1:-1;7611:261:0:o;6715:216::-;6819:10;6790:4;6807:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6807:32:0;;;;;;;;;;:41;;;6864:37;6790:4;;6807:32;;6864:37;;;;6842:6;1038:25:1;;1026:2;1011:18;;892:177;6864:37:0;;;;;;;;-1:-1:-1;6919:4:0;6715:216;;;;;:::o;4420:62::-;4470:12;4410:1;4470:2;:12;:::i;:::-;4458:24;;:9;:24;:::i;:::-;4420:62;:::o;10549:259::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;10652:21:::1;10632:17;10743:3;10710:28;10722:16:::0;10652:21;10710:28:::1;:::i;:::-;10708:38;;;;:::i;:::-;10757:43;::::0;10684:62;;-1:-1:-1;10765:10:0::1;::::0;10757:43;::::1;;;::::0;10684:62;;10757:43:::1;::::0;;;10684:62;10765:10;10757:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;7233:370:::0;-1:-1:-1;;;;;7353:19:0;;7333:4;7353:19;;;:11;:19;;;;;;;;7373:10;7353:31;;;;;;;;-1:-1:-1;;7353:52:0;7350:186;;7455:69;;;;;;;;;;;-1:-1:-1;;;7455:69:0;;;;;;;;-1:-1:-1;;;;;7455:19:0;;-1:-1:-1;7455:19:0;;;:11;:19;;;;;7475:10;7455:31;;;;;;;;;;:69;;7491:6;;7455:35;:69::i;:::-;-1:-1:-1;;;;;7421:19:0;;;;;;:11;:19;;;;;;;;7441:10;7421:31;;;;;;;:103;7350:186;7555:40;7569:6;7577:9;7588:6;7555:13;:40::i;:::-;7548:47;;7233:370;;;;;;:::o;13858:137::-;13971:9;:15;;;;4152:42;13911:7;13953:15;;;;;13911:7;;13971:15;4470:12;4410:1;4470:2;:12;:::i;:::-;4458:24;;:9;:24;:::i;:::-;13939:29;;;;:::i;:::-;:47;;;;:::i;:::-;13931:56;;13858:137;:::o;11108:74::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;11156:11:::1;:18:::0;;-1:-1:-1;;;;11156:18:0::1;-1:-1:-1::0;;;11156:18:0::1;::::0;;11108:74::o;12632:221::-;2240:24;2253:10;2240:12;:24::i;:::-;2232:48;;;;-1:-1:-1;;;2232:48:0;;;;;;;:::i;:::-;12741:9:::1;12736:110;12754:20:::0;;::::1;12736:110;;;12828:6;12796:15;:29;12812:9;;12822:1;12812:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12796:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12796:29:0;:38;;-1:-1:-1;;12796:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12776:3:::1;::::0;::::1;:::i;:::-;;;12736:110;;6939:122:::0;6994:4;7018:35;7026:7;-1:-1:-1;;7018:7:0;:35::i;13542:141::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;13631:20:::1;:44:::0;;-1:-1:-1;;;;;;13631:44:0::1;-1:-1:-1::0;;;;;13631:44:0;;;::::1;::::0;;;::::1;::::0;;13542:141::o;13098:199::-;2240:24;2253:10;2240:12;:24::i;:::-;2232:48;;;;-1:-1:-1;;;2232:48:0;;;;;;;:::i;:::-;13198:14:::1;:22:::0;;;;13231:13:::1;:20:::0;;;;13262:18:::1;:27:::0;13098:199::o;3037:168::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;3120:5:::1;3111::::0;;-1:-1:-1;;;;;3111:5:0::1;3096:21:::0;;:14:::1;:21;::::0;;;;;;;:29;;-1:-1:-1;;3096:29:0::1;::::0;;3136:18;;-1:-1:-1;;;;;;3136:18:0::1;::::0;;3170:27;3878:51:1;;;3170:27:0::1;::::0;3851:18:1;3170:27:0::1;;;;;;;3037:168::o:0;10816:284::-;10907:12;2662:5;;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;10935:6:::1;10945:1;10935:11:::0;10932:95:::1;;10971:44;::::0;-1:-1:-1;;;10971:44:0;;11009:4:::1;10971:44;::::0;::::1;3878:51:1::0;-1:-1:-1;;;;;10971:29:0;::::1;::::0;::::1;::::0;3851:18:1;;10971:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10962:53;;10932:95;11044:48;::::0;-1:-1:-1;;;11044:48:0;;11073:10:::1;11044:48;::::0;::::1;9140:51:1::0;9207:18;;;9200:34;;;-1:-1:-1;;;;;11044:28:0;::::1;::::0;::::1;::::0;9113:18:1;;11044:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7069:156::-:0;7149:4;7173:44;7187:10;7199:9;7210:6;7173:13;:44::i;2299:96::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2361:19:0::1;;::::0;;;2383:4:::1;2361:19;::::0;;;;;;;:26;;-1:-1:-1;;2361:26:0::1;::::0;;::::1;::::0;;2299:96::o;7878:262::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;8012:1:::1;7984:24;:29;;7976:82;;;::::0;-1:-1:-1;;;7976:82:0;;9697:2:1;7976:82:0::1;::::0;::::1;9679:21:1::0;9736:2;9716:18;;;9709:30;9775:34;9755:18;;;9748:62;-1:-1:-1;;;9826:18:1;;;9819:39;9875:19;;7976:82:0::1;9495:405:1::0;7976:82:0::1;8128:4;8099:24:::0;4470:12:::1;4410:1;4470:2;:12;:::i;:::-;4458:24;::::0;:9:::1;:24;:::i;:::-;8085:38;;;;:::i;:::-;8084:48;;;;:::i;:::-;8069:12;:63:::0;-1:-1:-1;7878:262:0:o;13691:155::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;13782:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;13782:22:0::1;-1:-1:-1::0;;;;13782:22:0;;::::1;::::0;;;::::1;::::0;;;13815:13:::1;:23:::0;13691:155::o;2403:161::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;2482:5:::1;::::0;-1:-1:-1;;;;;2482:5:0;;::::1;2475:12:::0;;::::1;::::0;2467:51:::1;;;::::0;-1:-1:-1;;;2467:51:0;;10107:2:1;2467:51:0::1;::::0;::::1;10089:21:1::0;10146:2;10126:18;;;10119:30;10185:28;10165:18;;;10158:56;10231:18;;2467:51:0::1;9905:350:1::0;2467:51:0::1;-1:-1:-1::0;;;;;2529:19:0::1;2551:5;2529:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2529:27:0::1;::::0;;2403:161::o;2798:231::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;2906:5:::1;2897::::0;;-1:-1:-1;;;;;2897:5:0;;::::1;2882:21:::0;;:14:::1;:21;::::0;;;;;;;:29;;-1:-1:-1;;2882:29:0;;::::1;::::0;;;2922:17;;-1:-1:-1;;;;;;2922:17:0::1;::::0;;::::1;::::0;;::::1;::::0;;2950:21;;;;;:28;;;;::::1;::::0;;::::1;::::0;;;3015:5;;2994:27;;3015:5;::::1;3878:51:1::0;;2994:27:0::1;::::0;3851:18:1;2994:27:0::1;;;;;;;2798:231:::0;:::o;13305:229::-;2627:4;2662:5;-1:-1:-1;;;;;2662:5:0;2158:10;2651:16;2142:38;;;;-1:-1:-1;;;2142:38:0;;;;;;;:::i;:::-;13408:12:::1;:28:::0;;;13447:12:::1;:28:::0;;;13499:27:::1;13462:13:::0;13423;13499:27:::1;:::i;:::-;13488:8;:38:::0;-1:-1:-1;;13305:229:0:o;2683:107::-;-1:-1:-1;;;;;2763:19:0;2739:4;2763:19;;;:14;:19;;;;;;;;;2683:107::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;8148:1115::-;8260:6;;8240:4;;8260:6;;8257:63;;;8276:41;8291:6;8299:9;8310:6;8276:14;:41::i;:::-;8269:48;;;;8257:63;-1:-1:-1;;;;;8336:22:0;;;;;;:14;:22;;;;;;;;8335:23;:53;;;;-1:-1:-1;;;;;;8363:25:0;;;;;;:14;:25;;;;;;;;8362:26;8335:53;8332:127;;;8412:11;;-1:-1:-1;;;8412:11:0;;;;8404:43;;;;-1:-1:-1;;;8404:43:0;;10595:2:1;8404:43:0;;;10577:21:1;10634:2;10614:18;;;10607:30;-1:-1:-1;;;10653:18:1;;;10646:50;10713:18;;8404:43:0;10393:344:1;8404:43:0;-1:-1:-1;;;;;8476:22:0;;;;;;:14;:22;;;;;;;;8475:23;:55;;;;-1:-1:-1;;;;;;8503:27:0;;;;;;:19;:27;;;;;;;;8502:28;8475:55;:90;;;;-1:-1:-1;;;;;;8535:30:0;;;;;;:19;:30;;;;;;;;8534:31;8475:90;:111;;;;;8582:4;-1:-1:-1;;;;;8569:17:0;:9;-1:-1:-1;;;;;8569:17:0;;;8475:111;8471:230;;;8646:15;;-1:-1:-1;;;;;8612:20:0;;;;;;:9;:20;;;;;;:29;;8635:6;;8612:29;:::i;:::-;8611:50;;8603:86;;;;-1:-1:-1;;;8603:86:0;;10944:2:1;8603:86:0;;;10926:21:1;10983:2;10963:18;;;10956:30;11022:26;11002:18;;;10995:54;11066:18;;8603:86:0;10742:348:1;8603:86:0;8736:12;;8726:6;:22;;8725:51;;;-1:-1:-1;;;;;;8753:23:0;;;;;;:15;:23;;;;;;;;8725:51;:81;;;-1:-1:-1;;;;;;8780:26:0;;;;;;:15;:26;;;;;;;;8725:81;8717:115;;;;-1:-1:-1;;;8717:115:0;;11297:2:1;8717:115:0;;;11279:21:1;11336:2;11316:18;;;11309:30;-1:-1:-1;;;11355:18:1;;;11348:51;11416:18;;8717:115:0;11095:345:1;8717:115:0;8848:16;:14;:16::i;:::-;8845:35;;;8867:10;:8;:10::i;:::-;8912:53;;;;;;;;;;;-1:-1:-1;;;8912:53:0;;;;;;;;-1:-1:-1;;;;;8912:17:0;;-1:-1:-1;8912:17:0;;;:9;:17;;;;;;;;:53;;8934:6;;8912:21;:53::i;:::-;-1:-1:-1;;;;;8892:17:0;;;;;;:9;:17;;;;;;;;:73;;;;9004:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;9027:22:0;;;;;;:11;:22;;;;;;;;9004:45;9003:93;;9062:34;9070:6;9078;9086:9;9062:7;:34::i;:::-;9003:93;;;9053:6;9003:93;-1:-1:-1;;;;;9132:20:0;;;;;;:9;:20;;;;;;8978:118;;-1:-1:-1;9132:40:0;;8978:118;9132:24;:40::i;:::-;-1:-1:-1;;;;;9109:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9190:43;;;;;;;;;;9218:14;1038:25:1;;1026:2;1011:18;;892:177;9190:43:0;;;;;;;;-1:-1:-1;9251:4:0;;8148:1115;-1:-1:-1;;;;8148:1115:0:o;9275:330::-;9405:53;;;;;;;;;;;-1:-1:-1;;;9405:53:0;;;;;;;;-1:-1:-1;;;;;9405:17:0;;9368:4;9405:17;;;:9;:17;;;;;;;:53;;9427:6;;9405:21;:53::i;:::-;-1:-1:-1;;;;;9385:17:0;;;;;;;:9;:17;;;;;;:73;;;;9492:20;;;;;;;:32;;9517:6;9492:24;:32::i;:::-;-1:-1:-1;;;;;9469:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9540:35;;;;;;;;;;9568:6;1038:25:1;;1026:2;1011:18;;892:177;9540:35:0;;;;;;;;-1:-1:-1;9593:4:0;9275:330;;;;;:::o;10344:197::-;10393:4;10417:10;-1:-1:-1;;;;;10431:4:0;10417:18;;;;;:38;;-1:-1:-1;10449:6:0;;;;10448:7;10417:38;:62;;;;-1:-1:-1;10468:11:0;;-1:-1:-1;;;10468:11:0;;;;10417:62;:116;;;;-1:-1:-1;;10520:13:0;;10510:4;10492:24;;;;:9;:24;;;;;;:41;;;10344:197::o;11190:1213::-;5519:6;:13;;-1:-1:-1;;5519:13:0;5528:4;5519:13;;;11263:8:::1;::::0;5519:6;11342:15:::1;11263:8:::0;11356:1:::1;11342:15;:::i;:::-;11327:12;;11311:13;;:28;;;;:::i;:::-;11310:48;;;;:::i;:::-;11284:74;;11369:20;11408:15;11392:13;;:31;;;;:::i;:::-;11460:16;::::0;;11474:1:::1;11460:16:::0;;;;;::::1;::::0;;11369:54;;-1:-1:-1;11436:21:0::1;::::0;11460:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11460:16:0::1;11436:40;;11505:4;11487;11492:1;11487:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;11487:23:0::1;;;-1:-1:-1::0;;;;;11487:23:0::1;;;::::0;::::1;11531:4;11521;11526:1;11521:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11521:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;11548:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;11548:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;11620:12;;11548:6:::1;::::0;11663:4;;11690::::1;::::0;11710:15:::1;::::0;11548:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11832:12:0::1;::::0;11769:21:::1;::::0;-1:-1:-1;11832:16:0::1;::::0;-1:-1:-1;11847:1:0::1;::::0;11832:16:::1;:::i;:::-;11817:32;::::0;:11;:32:::1;:::i;:::-;11803:46:::0;-1:-1:-1;11870:26:0::1;11929:15;11803:46:::0;11943:1:::1;11929:15;:::i;:::-;11912:12;::::0;11900:24:::1;::::0;:9;:24:::1;:::i;:::-;11899:46;;;;:::i;:::-;11870:75;;11956:26;12014:11;11998:12;;11986:9;:24;;;;:::i;:::-;11985:40;;;;:::i;:::-;12046:20;::::0;12038:58:::1;::::0;11956:69;;-1:-1:-1;;;;;;12046:20:0::1;::::0;12038:58;::::1;;;::::0;11956:69;;12046:20:::1;12038:58:::0;12046:20;12038:58;11956:69;12046:20;12038:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;12112:19:0;;12109:287:::1;;12147:6;::::0;12321:14:::1;::::0;12147:237:::1;::::0;-1:-1:-1;;;12147:237:0;;12223:4:::1;12147:237;::::0;::::1;12903:34:1::0;12953:18;;;12946:34;;;12147:6:0::1;12996:18:1::0;;;12989:34;;;13039:18;;;13032:34;-1:-1:-1;;;;;12321:14:0;;::::1;13082:19:1::0;;;13075:44;12354:15:0::1;13135:19:1::0;;;13128:35;12147:6:0;::::1;::::0;:22:::1;::::0;12177:18;;12837:19:1;;12147:237:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12109:287;-1:-1:-1::0;;5537:6:0;:14;;-1:-1:-1;;5537:14:0;;;-1:-1:-1;;;;;11190:1213:0:o;9613:723::-;9699:7;9722:11;;;:28;;-1:-1:-1;9737:8:0;;:13;9722:28;9719:72;;;-1:-1:-1;9773:6:0;9766:13;;9719:72;9824:18;;-1:-1:-1;;;;;9871:4:0;9858:17;;;;;;9855:154;;-1:-1:-1;9905:14:0;;9855:154;;;9950:4;-1:-1:-1;;;;;9940:14:0;:6;-1:-1:-1;;;;;9940:14:0;;9937:72;;-1:-1:-1;9984:13:0;;9937:72;10021:17;10041:62;10082:20;5072:4;10099:3;10082:20;:::i;:::-;10041:36;10066:10;10041:20;10052:8;;10041:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;10021:82;-1:-1:-1;10119:13:0;;10116:172;;10193:4;10175:24;;;;:9;:24;;;;;;:39;;10204:9;10175:28;:39::i;:::-;10166:4;10148:24;;;;:9;:24;;;;;;;:66;;;;10234:42;;-1:-1:-1;;;;;10234:42:0;;;;;;;10266:9;1038:25:1;;1026:2;1011:18;;892:177;10234:42:0;;;;;;;;10116:172;10307:21;:6;10318:9;10307:10;:21::i;:::-;10300:28;9613:723;-1:-1:-1;;;;;;9613: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;;13687:2:1;199:46:0;;;13669:21:1;13726:2;13706:18;;;13699:30;13765:29;13745:18;;;13738:57;13812:18;;199:46:0;13485: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;;14043:2:1;785:56:0;;;14025:21:1;14082:2;14062:18;;;14055:30;14121:34;14101:18;;;14094:62;-1:-1:-1;;;14172:18:1;;;14165:31;14213:19;;785:56:0;13841: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: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:597::-;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;;;1512:6;1509:1;1506:13;1503:91;;;1582:1;1577:2;1568:6;1557:9;1553:22;1549:31;1542:42;1503:91;-1:-1:-1;1655:2:1;1634:15;-1:-1:-1;;1630:29:1;1615:45;;;;1662:2;1611:54;;1074:597;-1:-1:-1;;;1074:597:1:o;1676:180::-;1735:6;1788:2;1776:9;1767:7;1763:23;1759:32;1756:52;;;1804:1;1801;1794:12;1756:52;-1:-1:-1;1827:23:1;;1676:180;-1:-1:-1;1676:180:1:o;1861:131::-;-1:-1:-1;;;;;1936:31:1;;1926:42;;1916:70;;1982:1;1979;1972:12;1997:315;2065:6;2073;2126:2;2114:9;2105:7;2101:23;2097:32;2094:52;;;2142:1;2139;2132:12;2094:52;2181:9;2168:23;2200:31;2225:5;2200:31;:::i;:::-;2250:5;2302:2;2287:18;;;;2274:32;;-1:-1:-1;;;1997:315:1:o;2509:456::-;2586:6;2594;2602;2655:2;2643:9;2634:7;2630:23;2626:32;2623:52;;;2671:1;2668;2661:12;2623:52;2710:9;2697:23;2729:31;2754:5;2729:31;:::i;:::-;2779:5;-1:-1:-1;2836:2:1;2821:18;;2808:32;2849:33;2808:32;2849:33;:::i;:::-;2509:456;;2901:7;;-1:-1:-1;;;2955:2:1;2940:18;;;;2927:32;;2509:456::o;2970:247::-;3029:6;3082:2;3070:9;3061:7;3057:23;3053:32;3050:52;;;3098:1;3095;3088:12;3050:52;3137:9;3124:23;3156:31;3181:5;3156:31;:::i;3411:316::-;3488:6;3496;3504;3557:2;3545:9;3536:7;3532:23;3528:32;3525:52;;;3573:1;3570;3563:12;3525:52;-1:-1:-1;;3596:23:1;;;3666:2;3651:18;;3638:32;;-1:-1:-1;3717:2:1;3702:18;;;3689:32;;3411:316;-1:-1:-1;3411:316:1:o;3940:388::-;4008:6;4016;4069:2;4057:9;4048:7;4044:23;4040:32;4037:52;;;4085:1;4082;4075:12;4037:52;4124:9;4111:23;4143:31;4168:5;4143:31;:::i;:::-;4193:5;-1:-1:-1;4250:2:1;4235:18;;4222:32;4263:33;4222:32;4263:33;:::i;:::-;4315:7;4305:17;;;3940:388;;;;;:::o;4333:309::-;4398:6;4406;4459:2;4447:9;4438:7;4434:23;4430:32;4427:52;;;4475:1;4472;4465:12;4427:52;4514:9;4501:23;4533:28;4555:5;4533:28;:::i;4907:248::-;4975:6;4983;5036:2;5024:9;5015:7;5011:23;5007:32;5004:52;;;5052:1;5049;5042:12;5004:52;-1:-1:-1;;5075:23:1;;;5145:2;5130:18;;;5117:32;;-1:-1:-1;4907:248:1:o;5386:335::-;5588:2;5570:21;;;5627:2;5607:18;;;5600:30;-1:-1:-1;;;5661:2:1;5646:18;;5639:41;5712:2;5697:18;;5386:335::o;5726:127::-;5787:10;5782:3;5778:20;5775:1;5768:31;5818:4;5815:1;5808:15;5842:4;5839:1;5832:15;5858:127;5919:10;5914:3;5910:20;5907:1;5900:31;5950:4;5947:1;5940:15;5974:4;5971:1;5964:15;5990:135;6029:3;6050:17;;;6047:43;;6070:18;;:::i;:::-;-1:-1:-1;6117:1:1;6106:13;;5990:135::o;6130:329::-;6332:2;6314:21;;;6371:1;6351:18;;;6344:29;-1:-1:-1;;;6404:2:1;6389:18;;6382:36;6450:2;6435:18;;6130:329::o;6869:422::-;6958:1;7001:5;6958:1;7015:270;7036:7;7026:8;7023:21;7015:270;;;7095:4;7091:1;7087:6;7083:17;7077:4;7074:27;7071:53;;;7104:18;;:::i;:::-;7154:7;7144:8;7140:22;7137:55;;;7174:16;;;;7137:55;7253:22;;;;7213:15;;;;7015:270;;;7019:3;6869:422;;;;;:::o;7296:806::-;7345:5;7375:8;7365:80;;-1:-1:-1;7416:1:1;7430:5;;7365:80;7464:4;7454:76;;-1:-1:-1;7501:1:1;7515:5;;7454:76;7546:4;7564:1;7559:59;;;;7632:1;7627:130;;;;7539:218;;7559:59;7589:1;7580:10;;7603:5;;;7627:130;7664:3;7654:8;7651:17;7648:43;;;7671:18;;:::i;:::-;-1:-1:-1;;7727:1:1;7713:16;;7742:5;;7539:218;;7841:2;7831:8;7828:16;7822:3;7816:4;7813:13;7809:36;7803:2;7793:8;7790:16;7785:2;7779:4;7776:12;7772:35;7769:77;7766:159;;;-1:-1:-1;7878:19:1;;;7910:5;;7766:159;7957:34;7982:8;7976:4;7957:34;:::i;:::-;8027:6;8023:1;8019:6;8015:19;8006:7;8003:32;8000:58;;;8038:18;;:::i;:::-;8076:20;;7296:806;-1:-1:-1;;;7296:806:1:o;8107:140::-;8165:5;8194:47;8235:4;8225:8;8221:19;8215:4;8194:47;:::i;8252:168::-;8292:7;8358:1;8354;8350:6;8346:14;8343:1;8340:21;8335:1;8328:9;8321:17;8317:45;8314:71;;;8365:18;;:::i;:::-;-1:-1:-1;8405:9:1;;8252:168::o;8425:217::-;8465:1;8491;8481:132;;8535:10;8530:3;8526:20;8523:1;8516:31;8570:4;8567:1;8560:15;8598:4;8595:1;8588:15;8481:132;-1:-1:-1;8627:9:1;;8425:217::o;8647:125::-;8687:4;8715:1;8712;8709:8;8706:34;;;8720:18;;:::i;:::-;-1:-1:-1;8757:9:1;;8647:125::o;8777:184::-;8847:6;8900:2;8888:9;8879:7;8875:23;8871:32;8868:52;;;8916:1;8913;8906:12;8868:52;-1:-1:-1;8939:16:1;;8777:184;-1:-1:-1;8777:184:1:o;9245:245::-;9312:6;9365:2;9353:9;9344:7;9340:23;9336:32;9333:52;;;9381:1;9378;9371:12;9333:52;9413:9;9407:16;9432:28;9454:5;9432:28;:::i;10260:128::-;10300:3;10331:1;10327:6;10324:1;10321:13;10318:39;;;10337:18;;:::i;:::-;-1:-1:-1;10373:9:1;;10260:128::o;11577:980::-;11839:4;11887:3;11876:9;11872:19;11918:6;11907:9;11900:25;11944:2;11982:6;11977:2;11966:9;11962:18;11955:34;12025:3;12020:2;12009:9;12005:18;11998:31;12049:6;12084;12078:13;12115:6;12107;12100:22;12153:3;12142:9;12138:19;12131:26;;12192:2;12184:6;12180:15;12166:29;;12213:1;12223:195;12237:6;12234:1;12231:13;12223:195;;;12302:13;;-1:-1:-1;;;;;12298:39:1;12286:52;;12393:15;;;;12358:12;;;;12334:1;12252:9;12223:195;;;-1:-1:-1;;;;;;;12474:32:1;;;;12469:2;12454:18;;12447:60;-1:-1:-1;;;12538:3:1;12523:19;12516:35;12435:3;11577:980;-1:-1:-1;;;11577:980:1:o;13174:306::-;13262:6;13270;13278;13331:2;13319:9;13310:7;13306:23;13302:32;13299:52;;;13347:1;13344;13337:12;13299:52;13376:9;13370:16;13360:26;;13426:2;13415:9;13411:18;13405:25;13395:35;;13470:2;13459:9;13455:18;13449:25;13439:35;;13174:306;;;;;:::o

Swarm Source

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