BNB Price: $613.17 (+2.59%)
 

Overview

Max Total Supply

6,437,041.205598BTT

Holders

6,489

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.594238130167158724 BTT

Value
$0.00
0xb212e30fafd788c06a5babb7c7b79541ab6f20de
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x6282B906...c618ffA3d
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Bretton

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion, None license
/**
 *Submitted for verification at BscScan.com on 2025-10-29
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

interface IERC20 {
    function decimals() external view returns (uint8);

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

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

    function totalSupply() external view returns (uint256);

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

interface ISwapRouter {
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

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

    function feeTo() external view returns (address);
}

interface ISwapPair {
    function getReserves()
    external
    view
    returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function totalSupply() external view returns (uint);

    function kLast() external view returns (uint);

    function sync() external;
}

abstract contract Ownable {
    address internal _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "!o");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "n0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IMintPool {
    function getShopFee(
        address to,
        uint256 amount
    ) external view returns (uint256);
    function onTokenTransfer(address from, address to, uint256 amount) external;

    function setDayPrice(uint256 day, uint256 price) external;
}

interface ISaller {
    function claimReward(address account) external;
}

abstract contract AbsToken is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public fundAddress;
    address public fund2Address;
    address public fund3Address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    mapping(address => bool) public _feeWhiteList;

    uint256 private _tTotal;

    ISwapRouter private immutable _swapRouter;
    mapping(address => bool) private _swapPairList;

    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);
    address private immutable _mainPair;
    mapping(address => uint256) private _lpAmount;
    mapping(address => bool) private _swapRouters;

    address private immutable _usdt;
    uint256 private constant _sellFundFee = 300;
    uint256 private constant _sellFund2Fee = 100;
//    uint256 private constant _sellFund3Fee = 100;
    uint256 private immutable _tokenUnit;
    uint256 private constant _priceLen = 30;
    uint256 public startTradeTime;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(
        address RouterAddress,
        address USDTAddress,
        string memory Name,
        string memory Symbol,
        uint8 Decimals,
        uint256 Total,
        address ReceiveAddress,
        address FundAddress,
        address Fund2Address,
        address Fund3Address
    ) {
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;
        _usdt = USDTAddress;

        _swapRouter = ISwapRouter(RouterAddress);
        require(address(this) > _usdt, "rq large usdt");

        _allowances[address(this)][address(_swapRouter)] = MAX;
        _swapRouters[address(_swapRouter)] = true;

        ISwapFactory swapFactory = ISwapFactory(_swapRouter.factory());
        _mainPair = swapFactory.createPair(address(this), _usdt);
        _swapPairList[_mainPair] = true;

        uint256 tokenUnit = 10 ** Decimals;
        uint256 total = Total * tokenUnit;
        _tTotal = total;

        _takeTransfer(address(0), ReceiveAddress, total);

        fundAddress = FundAddress;
        _feeWhiteList[FundAddress] = true;
        _feeWhiteList[ReceiveAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[msg.sender] = true;
        _feeWhiteList[address(0)] = true;
        _feeWhiteList[
        address(0x000000000000000000000000000000000000dEaD)
        ] = true;
        _lpAmount[FundAddress] = MAX / 10;

        fund2Address = Fund2Address;
        _feeWhiteList[Fund2Address] = true;

        fund3Address = Fund3Address;
        _feeWhiteList[Fund3Address] = true;
        _tokenUnit = tokenUnit;
    }

    function symbol() external view override returns (string memory) {
        return _symbol;
    }

    function name() external view override returns (string memory) {
        return _name;
    }

    function decimals() external view override returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        uint256 balance = _balances[account];
        return balance;
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        address from = msg.sender;
        if (!_swapPairList[recipient] && tx.origin == from) {
            require(0 == amount || from != recipient, "not self");
            checkAddLP();
            refreshDayPrice();
            IMintPool mintPool = IMintPool(_minter);
            uint256 shopFee = mintPool.getShopFee(recipient, amount);
            uint256 destoryFeeAmount = (shopFee * amount) / 10000;
            if (destoryFeeAmount > 0) {
                _standTransfer(from, address(0xdead), destoryFeeAmount);
            }
            _standTransfer(from, recipient, amount - destoryFeeAmount);
            if (0 == amount && from == recipient) {
                ISaller(_saller).claimReward(from);
            }
            mintPool.onTokenTransfer(from, recipient, amount);
        } else {
            _transfer(from, recipient, amount);
        }
        return true;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        checkAddLP();
        refreshDayPrice();
        uint256 balance = balanceOf(from);
        require(balance >= amount, "BNE");
        if (_minter == from || _minter == to) {
            _standTransfer(from, to, amount);
            return;
        }
        bool takeFee;

        if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
            if (address(_swapRouter) != from) {
                takeFee = true;
            }
        }

        address txOrigin = tx.origin;
        uint256 addLPLiquidity;
        addLPLiquidity = 0;
        if (to == _mainPair && _swapRouters[msg.sender] && txOrigin == from) {
            addLPLiquidity = _isAddLiquidity(amount);
            if (addLPLiquidity > 0) {
                _lastLPAddress = txOrigin;
                _lastLPAmount = addLPLiquidity;
                _lastLPBalance = IERC20(_mainPair).balanceOf(txOrigin);
                _lpAmount[txOrigin] += addLPLiquidity;
                takeFee = false;
            }
        }

        uint256 removeLPLiquidity;
        removeLPLiquidity = 0;
        if (from == _mainPair) {
            removeLPLiquidity = _isRemoveLiquidity(amount);
            if (removeLPLiquidity > 0) {
                _lpAmount[txOrigin] -= removeLPLiquidity;
                if (_feeWhiteList[txOrigin]) {
                    takeFee = false;
                }
            }
        }

        if (_mainPair != from && 0 == addLPLiquidity) {
            checkBurnLP();
        }

        _tokenTransfer(from, to, amount, takeFee, removeLPLiquidity);

        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                require((0 < startTradeTime));
            }
        } else {}
    }

    function _isAddLiquidity(
        uint256 amount
    ) internal view returns (uint256 liquidity) {
        (uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
        uint256 amountOther;
        if (rOther > 0 && rThis > 0) {
            amountOther = (amount * rOther) / rThis;
        }
        if (balanceOther > 0 && balanceOther >= rOther + amountOther) {
            (liquidity, ) = calLiquidity(
                _mainPair,
                balanceOther,
                amount,
                rOther,
                rThis
            );
        }
    }

    function _isRemoveLiquidity(
        uint256 amount
    ) internal view returns (uint256 liquidity) {
        (uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
        if (balanceOther < rOther) {
            liquidity =
                (amount * ISwapPair(_mainPair).totalSupply()) /
                (balanceOf(_mainPair) - amount);
        } else {
            uint256 amountOther;
            if (rOther > 0 && rThis > 0) {
                amountOther = (amount * rOther) / (rThis - amount);
                require(balanceOther >= amountOther + rOther);
            }
        }
    }

    function _getReserves()
    private
    view
    returns (uint256 rOther, uint256 rThis, uint256 balanceOther)
    {
        (rOther, rThis) = __getReserves();
        balanceOther = IERC20(_usdt).balanceOf(_mainPair);
    }

    function __getReserves()
    private
    view
    returns (uint256 rOther, uint256 rThis)
    {
        ISwapPair mainPair = ISwapPair(_mainPair);
        (uint r0, uint256 r1, ) = mainPair.getReserves();

        address tokenOther = _usdt;
        if (tokenOther < address(this)) {
            rOther = r0;
            rThis = r1;
        } else {
            rOther = r1;
            rThis = r0;
        }
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        uint256 removeLPLiquidity
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 fundAmount;
            uint256 fund2Amount;
            if (removeLPLiquidity > 0) {} else if (_swapPairList[recipient]) {

                fundAmount = (tAmount * _sellFundFee) / 10000;
                fund2Amount = (tAmount * _sellFund2Fee) / 10000;
            } else if (_swapPairList[sender]) {

            } else {}
            if (fundAmount > 0) {
                feeAmount += fundAmount;
                _takeTransfer(sender, fundAddress, fundAmount);
            }
            if (fund2Amount > 0) {
                feeAmount += fund2Amount;
                _takeTransfer(sender, fund2Address, fund2Amount);
            }
        }
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

    function startTrade() external onlyOwner {
        require(0 == startTradeTime, "trading");
        startTradeTime = block.timestamp;
    }

    function setFundAddress(address addr) external onlyOwner {
        fundAddress = addr;
        _feeWhiteList[addr] = true;
        _lpAmount[fundAddress] = MAX / 10;
    }

    function setFund2Address(address addr) external onlyOwner {
        fund2Address = addr;
        _feeWhiteList[addr] = true;
    }

    function setFund3Address(address addr) external onlyOwner {
        fund3Address = addr;
        _feeWhiteList[addr] = true;
    }

    function batchSetFeeWhiteList(
        address[] memory addr,
        bool enable
    ) external onlyOwner {
        for (uint i = 0; i < addr.length; i++) {
            _feeWhiteList[addr[i]] = enable;
        }
    }

    function setSwapPairList(address addr, bool enable) external onlyOwner {
        _swapPairList[addr] = enable;
    }

    function claimBalance(uint256 amount) external {
        payable(fundAddress).transfer(amount);
    }

    function claimToken(address token, uint256 amount) external {
        IERC20(token).transfer(fundAddress, amount);
    }

    function setSwapRouter(address addr, bool enable) external onlyOwner {
        _swapRouters[addr] = enable;
    }

    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }

    function calLiquidity(
        address lpPair,
        uint256 balanceA,
        uint256 amount,
        uint256 r0,
        uint256 r1
    ) private view returns (uint256 liquidity, uint256 feeToLiquidity) {
        uint256 pairTotalSupply = ISwapPair(lpPair).totalSupply();
        address feeTo = ISwapFactory(_swapRouter.factory()).feeTo();
        bool feeOn = feeTo != address(0);
        uint256 _kLast = ISwapPair(lpPair).kLast();
        if (feeOn) {
            if (_kLast != 0) {
                uint256 rootK = sqrt(r0 * r1);
                uint256 rootKLast = sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint256 numerator;
                    uint256 denominator;
                    if (
                        address(_swapRouter) ==
                        address(0x10ED43C718714eb63d5aA57B78B54704E256024E)
                    ) {

                        numerator = pairTotalSupply * (rootK - rootKLast) * 8;
                        denominator = rootK * 17 + (rootKLast * 8);
                    } else if (
                        address(_swapRouter) ==
                        address(0xD99D1c33F9fC3444f8101754aBC46c52416550D1)
                    ) {

                        numerator = pairTotalSupply * (rootK - rootKLast);
                        denominator = rootK * 3 + rootKLast;
                    } else if (
                        address(_swapRouter) ==
                        address(0xE9d6f80028671279a28790bb4007B10B0595Def1)
                    ) {

                        numerator = pairTotalSupply * (rootK - rootKLast) * 3;
                        denominator = rootK * 5 + rootKLast;
                    } else {

                        numerator = pairTotalSupply * (rootK - rootKLast);
                        denominator = rootK * 5 + rootKLast;
                    }
                    feeToLiquidity = numerator / denominator;
                    if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity;
                }
            }
        }
        uint256 amount0 = balanceA - r0;
        if (pairTotalSupply == 0) {
            liquidity = sqrt(amount0 * amount) - 1000;
        } else {
            liquidity = min(
                (amount0 * pairTotalSupply) / r0,
                (amount * pairTotalSupply) / r1
            );
        }
    }

    receive() external payable {}

    function checkAddLP() public {
        _checkAddLP();
    }

    address private _lastLPAddress;
    uint256 private _lastLPAmount;
    uint256 private _lastLPBalance;
    function _checkAddLP() private {
        address lastLPAddress = _lastLPAddress;
        if (address(0) != lastLPAddress) {
            _lastLPAddress = address(0);
            uint256 lpBalance = IERC20(_mainPair).balanceOf(lastLPAddress);
            uint256 lastLPBalance = _lastLPBalance;
            uint256 lastLPAmount = _lastLPAmount;
            if (
                lpBalance < lastLPBalance ||
                lpBalance - lastLPBalance + 10 < lastLPAmount
            ) {
                if (_lpAmount[lastLPAddress] > lastLPAmount) {
                    _lpAmount[lastLPAddress] -= lastLPAmount;
                } else {
                    _lpAmount[lastLPAddress] = 0;
                }
            }
        }
    }

    address public _minter;
    address public _saller;

    function setMinter(address minter) external onlyOwner {
        _minter = minter;
        IMintPool mintPool = IMintPool(_minter);
        uint256 day = getToDay();
        mintPool.setDayPrice(day, dayPrice[day]);
    }

    function setSaller(address saller) external onlyOwner {
        _saller = saller;
    }

    function mint(address to, uint256 amount) public {
        address caller = msg.sender;
        require(_minter == caller || _saller == caller, "!minter");
        _tTotal += amount;
        _takeTransfer(address(0), to, amount);
    }

    function tokenPrice() public view returns (uint256) {
        (uint256 reverseUsdt, uint256 reverseToken) = __getReserves();
        if (0 == reverseToken) {
            return 0;
        }
        return (_tokenUnit * reverseUsdt) / reverseToken;
    }

    mapping(uint256 => uint256) public dayPrice;
    uint256 public _lastUpdatePriceDay;
    mapping(uint256 => bool) public _isChecked;

    function refreshDayPrice() public {
        uint256 day = getToDay();
        if (0 == dayPrice[day]) {
            uint256 price = tokenPrice();
            if (price > 0) {
                IMintPool mintPool = IMintPool(_minter);
                dayPrice[day] = price;
                uint256 start = _lastUpdatePriceDay;
                _lastUpdatePriceDay = day;
                if (start > 0) {
                    uint256 lastPrice = dayPrice[start];
                    for (uint256 i = start + 1; i < day; ++i) {
                        if (0 == dayPrice[i]) {
                            dayPrice[i] = lastPrice;
                            mintPool.setDayPrice(i, lastPrice);
                        }
                    }
                }
                mintPool.setDayPrice(day, price);
            }
        }
    }

    uint256 private _marginTimes = 0;

    function _testAddDays(uint256 ds) public onlyOwner {
        uint256 ts = ds * 1 days;
        _marginTimes += ts;
    }

    function _testAddTimes(uint256 ts) public onlyOwner {
        _marginTimes += ts;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp + _marginTimes;
    }

    function getDay(uint256 ts) public pure returns (uint256) {
        return ts / 1 days;
    }

    function getToDay() public view returns (uint256) {
        return getDay(getTime());
    }

    function getAvgPrice() public view returns (uint256 avgPrice) {
        avgPrice = 0;
        uint256 startDay = getDay(startTradeTime);
        if (startDay > 0) {

            startDay += 1;
            uint256 endDay = getToDay();
            if (endDay >= startDay + _priceLen) {
                startDay = endDay - _priceLen;
                uint256 totalPrice;
                for (uint256 i = startDay; i < endDay; ++i) {
                    totalPrice += dayPrice[i];
                }
                avgPrice = totalPrice / _priceLen;
            }
        }
    }

    uint256 private constant _burnLPRate = 100;
    function checkBurnLP() public {
        refreshDayPrice();
        uint256 day = getToDay();
        if (!_isChecked[day]) {
            _isChecked[day] = true;
            uint256 avgPrice = getAvgPrice();
            if (avgPrice > dayPrice[day]) {
                uint256 poolBalance = balanceOf(_mainPair);
                uint256 rebaseAmount = (poolBalance * _burnLPRate) / 10000;
                if (rebaseAmount > poolBalance / 2) {
                    rebaseAmount = poolBalance / 2;
                }
                if (rebaseAmount > 0) {
                    _standTransfer(_mainPair, address(0xdead), rebaseAmount);
                    ISwapPair(_mainPair).sync();
                }
            }
        }
    }

    function _standTransfer(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        _takeTransfer(sender, recipient, tAmount);
    }

    function poolInfo(
        address account
    )
    public
    view
    returns (
        uint256 lpUsdt,
        uint256 lpToken,
        uint256 price,
        uint256 lpTotalSuplly,
        uint256 lpBalance
    )
    {
        (lpUsdt, lpToken) = __getReserves();
        price = tokenPrice();
        lpTotalSuplly = IERC20(_mainPair).totalSupply();
        lpBalance = IERC20(_mainPair).balanceOf(account);
    }

    function getEthAmount(
        uint256 tokenAmount
    ) public view returns (uint256 ethAmount) {
        address[] memory path = new address[](3);
        path[0] = _swapRouter.WETH();
        path[1] = _usdt;
        path[2] = address(this);
        ethAmount = _swapRouter.getAmountsIn(tokenAmount, path)[0];
    }
}

contract Bretton is AbsToken {
    constructor()
    AbsToken(

    address(0x10ED43C718714eb63d5aA57B78B54704E256024E),

    address(0x55d398326f99059fF775485246999027B3197955),

    unicode"Bretton",

    unicode"BTT",

    18,
    254168,

    address(0xa9ea103E8F2CEB7263705B3FA2CABB6a71c0828D),

    address(0xf1516F0CabA4fB209fDc0D4e08D9dB0F5EBc621B),

    address(0x275125407e0Eb28886B11ba7121B87EEaf0D444b),

    address(0x0eab539463D4226925f7B1B20301E69992B8459C)
    )
    {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_isChecked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastUpdatePriceDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ds","type":"uint256"}],"name":"_testAddDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ts","type":"uint256"}],"name":"_testAddTimes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkAddLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkBurnLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fund2Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fund3Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAvgPrice","outputs":[{"internalType":"uint256","name":"avgPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ts","type":"uint256"}],"name":"getDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"getEthAmount","outputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getToDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"poolInfo","outputs":[{"internalType":"uint256","name":"lpUsdt","type":"uint256"},{"internalType":"uint256","name":"lpToken","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"lpTotalSuplly","type":"uint256"},{"internalType":"uint256","name":"lpBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refreshDayPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFund2Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFund3Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"saller","type":"address"}],"name":"setSaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeTime","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":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

0x61010060405260006018553480156200001757600080fd5b506040805180820182526007815266213932ba3a37b760c91b60208083019190915282518084018452600381526210951560ea1b91810191909152600080546001600160a01b03191633908117825593517310ed43c718714eb63d5aa57b78b54704e256024e947355d398326f99059ff775485246999027b31979559493926012926203e0d89273a9ea103e8f2ceb7263705b3fa2cabb6a71c0828d9273f1516f0caba4fb209fdc0d4e08d9db0f5ebc621b9273275125407e0eb28886b11ba7121b87eeaf0d444b92730eab539463d4226925f7b1b20301e69992b8459c9290918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060066200012f89826200059a565b5060076200013e88826200059a565b506008805460ff191660ff88161790556001600160a01b0389811660c0819052908b166080523011620001a75760405162461bcd60e51b815260206004820152600d60248201526c1c9c481b185c99d9481d5cd91d609a1b604482015260640160405180910390fd5b3060009081526002602090815260408083206080516001600160a01b03168085529083528184206000199055600e8352818420805460ff19166001179055815163c45a015560e01b81529151909263c45a015592600480820193918290030181865afa1580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000242919062000666565b60c0516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291925082169063c9c65396906044016020604051808303816000875af115801562000297573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bd919062000666565b6001600160a01b031660a08190526000908152600b60205260408120805460ff19166001179055620002f188600a620007ad565b90506000620003018289620007be565b600a819055905062000316600088836200046d565b600380546001600160a01b0319166001600160a01b03888116918217909255600090815260096020526040808220805460ff199081166001908117909255938b1683528183208054851682179055308352818320805485168217905533835290822080548416821790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b805484168217905561dead9091527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037858054909216179055620003e7600a600019620007d8565b6001600160a01b039687166000908152600d602090815260408083209390935560048054988a166001600160a01b0319998a168117909155825260099052818120805460ff1990811660019081179092556005805498909a169790981687179098559485529093208054909416909417909255505060e052506200081195505050505050565b6001600160a01b03821660009081526001602052604090205462000493908290620007fb565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620004e89085815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200052057607f821691505b6020821081036200054157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200059557600081815260208120601f850160051c81016020861015620005705750805b601f850160051c820191505b8181101562000591578281556001016200057c565b5050505b505050565b81516001600160401b03811115620005b657620005b6620004f5565b620005ce81620005c784546200050b565b8462000547565b602080601f831160018114620006065760008415620005ed5750858301515b600019600386901b1c1916600185901b17855562000591565b600085815260208120601f198616915b82811015620006375788860151825594840194600190910190840162000616565b5085821015620006565787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200067957600080fd5b81516001600160a01b03811681146200069157600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006ef578160001904821115620006d357620006d362000698565b80851615620006e157918102915b93841c9390800290620006b3565b509250929050565b6000826200070857506001620007a7565b816200071757506000620007a7565b81600181146200073057600281146200073b576200075b565b6001915050620007a7565b60ff8411156200074f576200074f62000698565b50506001821b620007a7565b5060208310610133831016604e8410600b841016171562000780575081810a620007a7565b6200078c8383620006ae565b8060001904821115620007a357620007a362000698565b0290505b92915050565b60006200069160ff841683620006f7565b8082028115828204841417620007a757620007a762000698565b600082620007f657634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620007a757620007a762000698565b60805160a05160c05160e051613062620008e56000396000610e4f015260008181610fed015281816121b001526125b901526000818161118e0152818161120b0152818161123501528181611301015281816113a301528181611c5101528181611d0d01528181611db301528181611e5a01528181611f8b01528181612117015281816122a7015281816122fe01528181612344015261258b015260008181610f380152818161107801528181611c170152818161269a0152818161284f015281816128dc015261294301526130626000f3fe6080604052600436106102815760003560e01c80637ff9b5961161014f578063a9059cbb116100c1578063e9fad3961161007a578063e9fad396146107db578063f01e66ec146107fb578063f2fde38b14610810578063f57d293214610830578063f836089014610850578063fca3b5aa1461087057600080fd5b8063a9059cbb146106f5578063b2887bec14610715578063c04d579814610735578063d4e53e2214610755578063dd62ed3e14610775578063e82bef29146107bb57600080fd5b80639713ca6d116101135780639713ca6d1461062257806398010215146106375780639987e9b7146106575780639a7b5f111461066d5780639d218aa1146106b5578063a8424861146106d557600080fd5b80637ff9b5961461059a57806385dc3004146105af5780638da5cb5b146105cf5780638fc7a25d146105ed57806395d89b411461060d57600080fd5b80632425a01f116101f3578063557ed1ba116101ac578063557ed1ba146104e5578063578ec33f146104fa57806365c728401461051a5780636c5808011461053a57806370a082311461054f578063715018a61461058557600080fd5b80632425a01f1461041c578063313ce5671461043157806334dafe701461045357806340c10f19146104805780634ed0e2a1146104a05780634efc6432146104d057600080fd5b80631145be69116102455780631145be691461034f5780631698755f1461038757806318160ddd146103a75780632171dcc9146103bc57806322b71bab146103dc57806323b872dd146103fc57600080fd5b806301986fad1461028d57806306fdde03146102d2578063070c6d21146102f4578063086e68031461030b578063095ea7b31461032f57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102bd6102a8366004612b09565b60096020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156102de57600080fd5b506102e7610890565b6040516102c99190612b26565b34801561030057600080fd5b50610309610922565b005b34801561031757600080fd5b5061032160165481565b6040519081526020016102c9565b34801561033b57600080fd5b506102bd61034a366004612b74565b610aad565b34801561035b57600080fd5b5060145461036f906001600160a01b031681565b6040516001600160a01b0390911681526020016102c9565b34801561039357600080fd5b506103096103a2366004612b74565b610ac4565b3480156103b357600080fd5b50600a54610321565b3480156103c857600080fd5b506103096103d7366004612bb9565b610b40565b3480156103e857600080fd5b506103096103f7366004612bf2565b610b9e565b34801561040857600080fd5b506102bd610417366004612c0b565b610bf4565b34801561042857600080fd5b50610309610c8b565b34801561043d57600080fd5b5060085460405160ff90911681526020016102c9565b34801561045f57600080fd5b5061032161046e366004612bf2565b60156020526000908152604090205481565b34801561048c57600080fd5b5061030961049b366004612b74565b610c95565b3480156104ac57600080fd5b506102bd6104bb366004612bf2565b60176020526000908152604090205460ff1681565b3480156104dc57600080fd5b50610321610d17565b3480156104f157600080fd5b50610321610d29565b34801561050657600080fd5b5060135461036f906001600160a01b031681565b34801561052657600080fd5b50610321610535366004612bf2565b610d39565b34801561054657600080fd5b50610309610d48565b34801561055b57600080fd5b5061032161056a366004612b09565b6001600160a01b031660009081526001602052604090205490565b34801561059157600080fd5b50610309610db2565b3480156105a657600080fd5b50610321610e26565b3480156105bb57600080fd5b506103096105ca366004612b09565b610e84565b3480156105db57600080fd5b506000546001600160a01b031661036f565b3480156105f957600080fd5b50610321610608366004612bf2565b610f10565b34801561061957600080fd5b506102e7611118565b34801561062e57600080fd5b50610309611127565b34801561064357600080fd5b50610309610652366004612b09565b611294565b34801561066357600080fd5b50610321600f5481565b34801561067957600080fd5b5061068d610688366004612b09565b6112e0565b604080519586526020860194909452928401919091526060830152608082015260a0016102c9565b3480156106c157600080fd5b5060045461036f906001600160a01b031681565b3480156106e157600080fd5b506103096106f0366004612bb9565b61141b565b34801561070157600080fd5b506102bd610710366004612b74565b611470565b34801561072157600080fd5b50610309610730366004612cb7565b6116cd565b34801561074157600080fd5b5060055461036f906001600160a01b031681565b34801561076157600080fd5b50610309610770366004612b09565b61175e565b34801561078157600080fd5b50610321610790366004612d68565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156107c757600080fd5b5060035461036f906001600160a01b031681565b3480156107e757600080fd5b506103096107f6366004612bf2565b6117c2565b34801561080757600080fd5b506103216117fc565b34801561081c57600080fd5b5061030961082b366004612b09565b611896565b34801561083c57600080fd5b5061030961084b366004612b09565b611956565b34801561085c57600080fd5b5061030961086b366004612bf2565b6119ba565b34801561087c57600080fd5b5061030961088b366004612b09565b6119fe565b60606006805461089f90612d96565b80601f01602080910402602001604051908101604052809291908181526020018280546108cb90612d96565b80156109185780601f106108ed57610100808354040283529160200191610918565b820191906000526020600020905b8154815290600101906020018083116108fb57829003601f168201915b5050505050905090565b600061092c610d17565b60008181526015602052604081205491925003610aaa57600061094d610e26565b90508015610aa857601354600083815260156020526040902082905560168054908490556001600160a01b03909116908015610a44576000818152601560205260408120549061099e836001612de0565b90505b85811015610a41576000818152601560205260408120549003610a3157600081815260156020526040908190208390555163eada90d960e01b815260048101829052602481018390526001600160a01b0385169063eada90d990604401600060405180830381600087803b158015610a1857600080fd5b505af1158015610a2c573d6000803e3d6000fd5b505050505b610a3a81612df3565b90506109a1565b50505b60405163eada90d960e01b815260048101859052602481018490526001600160a01b0383169063eada90d990604401600060405180830381600087803b158015610a8d57600080fd5b505af1158015610aa1573d6000803e3d6000fd5b5050505050505b505b50565b6000610aba338484611aca565b5060015b92915050565b60035460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b9190612e0c565b505050565b6000546001600160a01b03163314610b735760405162461bcd60e51b8152600401610b6a90612e29565b60405180910390fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610bc85760405162461bcd60e51b8152600401610b6a90612e29565b6000610bd78262015180612e45565b90508060186000828254610beb9190612de0565b90915550505050565b6000610c01848484611b2c565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610c81576001600160a01b0384166000908152600260209081526040808320338452909152902054610c5c908390612e5c565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b610c93611f47565b565b60135433906001600160a01b0316811480610cbd57506014546001600160a01b038281169116145b610cf35760405162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b6044820152606401610b6a565b81600a6000828254610d059190612de0565b90915550610b3b905060008484612098565b6000610d24610535610d29565b905090565b600060185442610d249190612de0565b6000610abe6201518083612e6f565b6000546001600160a01b03163314610d725760405162461bcd60e51b8152600401610b6a90612e29565b600f5415610dac5760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b6044820152606401610b6a565b42600f55565b6000546001600160a01b03163314610ddc5760405162461bcd60e51b8152600401610b6a90612e29565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000806000610e33612110565b9150915080600003610e485760009250505090565b80610e73837f0000000000000000000000000000000000000000000000000000000000000000612e45565b610e7d9190612e6f565b9250505090565b6000546001600160a01b03163314610eae5760405162461bcd60e51b8152600401610b6a90612e29565b600380546001600160a01b0319166001600160a01b0383169081179091556000908152600960205260409020805460ff19166001179055610ef2600a600019612e6f565b6003546001600160a01b03166000908152600d602052604090205550565b60408051600380825260808201909252600091829190602082016060803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb89190612e91565b81600081518110610fcb57610fcb612eae565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061101f5761101f612eae565b60200260200101906001600160a01b031690816001600160a01b031681525050308160028151811061105357611053612eae565b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca74906110b19086908590600401612ec4565b600060405180830381865afa1580156110ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110f69190810190612f1b565b60008151811061110857611108612eae565b6020026020010151915050919050565b60606007805461089f90612d96565b61112f610922565b6000611139610d17565b60008181526017602052604090205490915060ff16610aaa576000818152601760205260408120805460ff191660011790556111736117fc565b600083815260156020526040902054909150811115610aa8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260016020526040812054906127106111d4606484612e45565b6111de9190612e6f565b90506111eb600283612e6f565b811115611200576111fd600283612e6f565b90505b801561128e576112337f000000000000000000000000000000000000000000000000000000000000000061dead836121fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a8d57600080fd5b50505050565b6000546001600160a01b031633146112be5760405162461bcd60e51b8152600401610b6a90612e29565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008060006112f0612110565b90955093506112fd610e26565b92507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113819190612fac565b6040516370a0823160e01b81526001600160a01b0388811660048301529193507f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190612fac565b905091939590929450565b6000546001600160a01b031633146114455760405162461bcd60e51b8152600401610b6a90612e29565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000908152600b6020526040812054339060ff161580156114a35750326001600160a01b038216145b156116c2578215806114c75750836001600160a01b0316816001600160a01b031614155b6114fe5760405162461bcd60e51b81526020600482015260086024820152673737ba1039b2b63360c11b6044820152606401610b6a565b611506610c8b565b61150e610922565b601354604051631b5cc7a760e01b81526001600160a01b03868116600483015260248201869052909116906000908290631b5cc7a790604401602060405180830381865afa158015611564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115889190612fac565b905060006127106115998784612e45565b6115a39190612e6f565b905080156115b8576115b88461dead836121fa565b6115cc84886115c7848a612e5c565b6121fa565b851580156115eb5750866001600160a01b0316846001600160a01b0316145b156116505760145460405163d279c19160e01b81526001600160a01b0386811660048301529091169063d279c19190602401600060405180830381600087803b15801561163757600080fd5b505af115801561164b573d6000803e3d6000fd5b505050505b60405163677ba3d360e01b81526001600160a01b03858116600483015288811660248301526044820188905284169063677ba3d390606401600060405180830381600087803b1580156116a257600080fd5b505af11580156116b6573d6000803e3d6000fd5b50505050505050610c81565b610c81818585611b2c565b6000546001600160a01b031633146116f75760405162461bcd60e51b8152600401610b6a90612e29565b60005b8251811015610b3b57816009600085848151811061171a5761171a612eae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061175681612df3565b9150506116fa565b6000546001600160a01b031633146117885760405162461bcd60e51b8152600401610b6a90612e29565b600580546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610aa8573d6000803e3d6000fd5b60008061180a600f54610d39565b905080156118925761181d600182612de0565b90506000611829610d17565b9050611836601e83612de0565b811061189057611847601e82612e5c565b91506000825b828110156118805760008181526015602052604090205461186e9083612de0565b915061187981612df3565b905061184d565b5061188c601e82612e6f565b9350505b505b5090565b6000546001600160a01b031633146118c05760405162461bcd60e51b8152600401610b6a90612e29565b6001600160a01b0381166118fb5760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610b6a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119805760405162461bcd60e51b8152600401610b6a90612e29565b600480546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b6000546001600160a01b031633146119e45760405162461bcd60e51b8152600401610b6a90612e29565b80601860008282546119f69190612de0565b909155505050565b6000546001600160a01b03163314611a285760405162461bcd60e51b8152600401610b6a90612e29565b601380546001600160a01b0319166001600160a01b0383169081179091556000611a50610d17565b6000818152601560205260409081902054905163eada90d960e01b81526004810183905260248101919091529091506001600160a01b0383169063eada90d990604401600060405180830381600087803b158015611aad57600080fd5b505af1158015611ac1573d6000803e3d6000fd5b50505050505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b611b34610c8b565b611b3c610922565b6001600160a01b03831660009081526001602052604090205481811015611b8b5760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610b6a565b6013546001600160a01b0385811691161480611bb457506013546001600160a01b038481169116145b15611bc45761128e8484846121fa565b6001600160a01b03841660009081526009602052604081205460ff16158015611c0657506001600160a01b03841660009081526009602052604090205460ff16155b15611c4857846001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c48575060015b600032905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316148015611c9f5750336000908152600e602052604090205460ff165b8015611cbc5750866001600160a01b0316826001600160a01b0316145b15611daf57611cca85612242565b90508015611daf57601080546001600160a01b0319166001600160a01b0384811691821790925560118390556040516370a0823160e01b815260048101919091527f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7a9190612fac565b6012556001600160a01b0382166000908152600d602052604081208054839290611da5908490612de0565b9091555060009350505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031603611e4e57611df3866122dc565b90508015611e4e576001600160a01b0383166000908152600d602052604081208054839290611e23908490612e5c565b90915550506001600160a01b03831660009081526009602052604090205460ff1615611e4e57600093505b876001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614158015611e8e575081155b15611e9b57611e9b611127565b611ea88888888785612433565b6001600160a01b0388166000908152600b602052604090205460ff1680611ee757506001600160a01b0387166000908152600b602052604090205460ff165b15610aa1576001600160a01b03881660009081526009602052604090205460ff16158015611f2e57506001600160a01b03871660009081526009602052604090205460ff16155b15611f4257600f54600010611f4257600080fd5b610aa1565b6010546001600160a01b03168015610aaa57601080546001600160a01b03191690556040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff89190612fac565b60125460115491925090818310806120235750806120168385612e5c565b61202190600a612de0565b105b1561128e576001600160a01b0384166000908152600d602052604090205481101561207b576001600160a01b0384166000908152600d602052604081208054839290612070908490612e5c565b9091555061128e9050565b5050506001600160a01b03166000908152600d6020526040812055565b6001600160a01b0382166000908152600160205260409020546120bc908290612de0565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b1f9085815260200190565b60008060007f00000000000000000000000000000000000000000000000000000000000000009050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219d9190612fdc565b506001600160701b0391821693501690507f0000000000000000000000000000000000000000000000000000000000000000306001600160a01b03821610156121eb578295508194506121f2565b8195508294505b505050509091565b6001600160a01b03831660009081526001602052604090205461221e908290612e5c565b6001600160a01b038416600090815260016020526040902055610b3b838383612098565b600080600080612250612567565b925092509250600080841180156122675750600083115b1561228457826122778588612e45565b6122819190612e6f565b90505b60008211801561229d57506122998185612de0565b8210155b156122d3576122cf7f00000000000000000000000000000000000000000000000000000000000000008388878761262d565b5094505b50505050919050565b6000806000806122ea612567565b925092509250828110156123df57846123387f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660009081526001602052604090205490565b6123429190612e5c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c49190612fac565b6123ce9087612e45565b6123d89190612e6f565b935061242b565b600080841180156123f05750600083115b156122d3576123ff8684612e5c565b6124098588612e45565b6124139190612e6f565b905061241f8482612de0565b8210156122d357600080fd5b505050919050565b6001600160a01b038516600090815260016020526040902054612457908490612e5c565b6001600160a01b038616600090815260016020526040812091909155821561254b57600080600084116124f2576001600160a01b0387166000908152600b602052604090205460ff16156124df576127106124b461012c88612e45565b6124be9190612e6f565b91506127106124ce606488612e45565b6124d89190612e6f565b90506124f2565b6001600160a01b038816600052600b6020525b811561251d576125028284612de0565b60035490935061251d9089906001600160a01b031684612098565b80156125485761252d8184612de0565b6004549093506125489089906001600160a01b031683612098565b50505b61255f868661255a8488612e5c565b612098565b505050505050565b6000806000612574612110565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529295509093507f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190612fac565b9050909192565b6000806000876001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190612fac565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271a9190612e91565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015612757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277b9190612e91565b90506000806001600160a01b0316826001600160a01b03161415905060008a6001600160a01b0316637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fb9190612fac565b905081156129f15780156129f157600061281d612818898b612e45565b612a6c565b9050600061282a83612a6c565b9050808211156129ee576000807310ed43c718714eb63d5aa57b78b54704e256024d197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316016128c4576128868385612e5c565b6128909089612e45565b61289b906008612e45565b91506128a8836008612e45565b6128b3856011612e45565b6128bd9190612de0565b90506129cc565b73d99d1c33f9fc3444f8101754abc46c52416550d0197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160161292b576129138385612e5c565b61291d9089612e45565b9150826128b3856003612e45565b73e9d6f80028671279a28790bb4007b10b0595def0197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160161299d5761297a8385612e5c565b6129849089612e45565b61298f906003612e45565b9150826128b3856005612e45565b6129a78385612e5c565b6129b19089612e45565b9150826129bf856005612e45565b6129c99190612de0565b90505b6129d68183612e6f565b985088156129eb576129e88989612de0565b97505b50505b50505b60006129fd898c612e5c565b905084600003612a28576103e8612a176128188c84612e45565b612a219190612e5c565b9650612a5d565b612a5a89612a368784612e45565b612a409190612e6f565b89612a4b888e612e45565b612a559190612e6f565b612adc565b96505b50505050509550959350505050565b60006003821115612acd5750806000612a86600283612e6f565b612a91906001612de0565b90505b81811015612ac757905080600281612aac8186612e6f565b612ab69190612de0565b612ac09190612e6f565b9050612a94565b50919050565b8115612ad7575060015b919050565b6000818310612aeb5781612aed565b825b9392505050565b6001600160a01b0381168114610aaa57600080fd5b600060208284031215612b1b57600080fd5b8135612aed81612af4565b600060208083528351808285015260005b81811015612b5357858101830151858201604001528201612b37565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612b8757600080fd5b8235612b9281612af4565b946020939093013593505050565b8015158114610aaa57600080fd5b8035612ad781612ba0565b60008060408385031215612bcc57600080fd5b8235612bd781612af4565b91506020830135612be781612ba0565b809150509250929050565b600060208284031215612c0457600080fd5b5035919050565b600080600060608486031215612c2057600080fd5b8335612c2b81612af4565b92506020840135612c3b81612af4565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612c8b57612c8b612c4c565b604052919050565b600067ffffffffffffffff821115612cad57612cad612c4c565b5060051b60200190565b60008060408385031215612cca57600080fd5b823567ffffffffffffffff811115612ce157600080fd5b8301601f81018513612cf257600080fd5b80356020612d07612d0283612c93565b612c62565b82815260059290921b83018101918181019088841115612d2657600080fd5b938201935b83851015612d4d578435612d3e81612af4565b82529382019390820190612d2b565b9550612d5c9050868201612bae565b93505050509250929050565b60008060408385031215612d7b57600080fd5b8235612d8681612af4565b91506020830135612be781612af4565b600181811c90821680612daa57607f821691505b602082108103612ac757634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610abe57610abe612dca565b600060018201612e0557612e05612dca565b5060010190565b600060208284031215612e1e57600080fd5b8151612aed81612ba0565b602080825260029082015261216f60f01b604082015260600190565b8082028115828204841417610abe57610abe612dca565b81810381811115610abe57610abe612dca565b600082612e8c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612ea357600080fd5b8151612aed81612af4565b634e487b7160e01b600052603260045260246000fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015612f0e5784516001600160a01b031683529383019391830191600101612ee9565b5090979650505050505050565b60006020808385031215612f2e57600080fd5b825167ffffffffffffffff811115612f4557600080fd5b8301601f81018513612f5657600080fd5b8051612f64612d0282612c93565b81815260059190911b82018301908381019087831115612f8357600080fd5b928401925b82841015612fa157835182529284019290840190612f88565b979650505050505050565b600060208284031215612fbe57600080fd5b5051919050565b80516001600160701b0381168114612ad757600080fd5b600080600060608486031215612ff157600080fd5b612ffa84612fc5565b925061300860208501612fc5565b9150604084015163ffffffff8116811461302157600080fd5b80915050925092509256fea2646970667358221220b2ace5ea86594024a2e0e7d002ed82cc0551b2c6eac51b8c1a650984581bd97c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80637ff9b5961161014f578063a9059cbb116100c1578063e9fad3961161007a578063e9fad396146107db578063f01e66ec146107fb578063f2fde38b14610810578063f57d293214610830578063f836089014610850578063fca3b5aa1461087057600080fd5b8063a9059cbb146106f5578063b2887bec14610715578063c04d579814610735578063d4e53e2214610755578063dd62ed3e14610775578063e82bef29146107bb57600080fd5b80639713ca6d116101135780639713ca6d1461062257806398010215146106375780639987e9b7146106575780639a7b5f111461066d5780639d218aa1146106b5578063a8424861146106d557600080fd5b80637ff9b5961461059a57806385dc3004146105af5780638da5cb5b146105cf5780638fc7a25d146105ed57806395d89b411461060d57600080fd5b80632425a01f116101f3578063557ed1ba116101ac578063557ed1ba146104e5578063578ec33f146104fa57806365c728401461051a5780636c5808011461053a57806370a082311461054f578063715018a61461058557600080fd5b80632425a01f1461041c578063313ce5671461043157806334dafe701461045357806340c10f19146104805780634ed0e2a1146104a05780634efc6432146104d057600080fd5b80631145be69116102455780631145be691461034f5780631698755f1461038757806318160ddd146103a75780632171dcc9146103bc57806322b71bab146103dc57806323b872dd146103fc57600080fd5b806301986fad1461028d57806306fdde03146102d2578063070c6d21146102f4578063086e68031461030b578063095ea7b31461032f57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102bd6102a8366004612b09565b60096020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156102de57600080fd5b506102e7610890565b6040516102c99190612b26565b34801561030057600080fd5b50610309610922565b005b34801561031757600080fd5b5061032160165481565b6040519081526020016102c9565b34801561033b57600080fd5b506102bd61034a366004612b74565b610aad565b34801561035b57600080fd5b5060145461036f906001600160a01b031681565b6040516001600160a01b0390911681526020016102c9565b34801561039357600080fd5b506103096103a2366004612b74565b610ac4565b3480156103b357600080fd5b50600a54610321565b3480156103c857600080fd5b506103096103d7366004612bb9565b610b40565b3480156103e857600080fd5b506103096103f7366004612bf2565b610b9e565b34801561040857600080fd5b506102bd610417366004612c0b565b610bf4565b34801561042857600080fd5b50610309610c8b565b34801561043d57600080fd5b5060085460405160ff90911681526020016102c9565b34801561045f57600080fd5b5061032161046e366004612bf2565b60156020526000908152604090205481565b34801561048c57600080fd5b5061030961049b366004612b74565b610c95565b3480156104ac57600080fd5b506102bd6104bb366004612bf2565b60176020526000908152604090205460ff1681565b3480156104dc57600080fd5b50610321610d17565b3480156104f157600080fd5b50610321610d29565b34801561050657600080fd5b5060135461036f906001600160a01b031681565b34801561052657600080fd5b50610321610535366004612bf2565b610d39565b34801561054657600080fd5b50610309610d48565b34801561055b57600080fd5b5061032161056a366004612b09565b6001600160a01b031660009081526001602052604090205490565b34801561059157600080fd5b50610309610db2565b3480156105a657600080fd5b50610321610e26565b3480156105bb57600080fd5b506103096105ca366004612b09565b610e84565b3480156105db57600080fd5b506000546001600160a01b031661036f565b3480156105f957600080fd5b50610321610608366004612bf2565b610f10565b34801561061957600080fd5b506102e7611118565b34801561062e57600080fd5b50610309611127565b34801561064357600080fd5b50610309610652366004612b09565b611294565b34801561066357600080fd5b50610321600f5481565b34801561067957600080fd5b5061068d610688366004612b09565b6112e0565b604080519586526020860194909452928401919091526060830152608082015260a0016102c9565b3480156106c157600080fd5b5060045461036f906001600160a01b031681565b3480156106e157600080fd5b506103096106f0366004612bb9565b61141b565b34801561070157600080fd5b506102bd610710366004612b74565b611470565b34801561072157600080fd5b50610309610730366004612cb7565b6116cd565b34801561074157600080fd5b5060055461036f906001600160a01b031681565b34801561076157600080fd5b50610309610770366004612b09565b61175e565b34801561078157600080fd5b50610321610790366004612d68565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156107c757600080fd5b5060035461036f906001600160a01b031681565b3480156107e757600080fd5b506103096107f6366004612bf2565b6117c2565b34801561080757600080fd5b506103216117fc565b34801561081c57600080fd5b5061030961082b366004612b09565b611896565b34801561083c57600080fd5b5061030961084b366004612b09565b611956565b34801561085c57600080fd5b5061030961086b366004612bf2565b6119ba565b34801561087c57600080fd5b5061030961088b366004612b09565b6119fe565b60606006805461089f90612d96565b80601f01602080910402602001604051908101604052809291908181526020018280546108cb90612d96565b80156109185780601f106108ed57610100808354040283529160200191610918565b820191906000526020600020905b8154815290600101906020018083116108fb57829003601f168201915b5050505050905090565b600061092c610d17565b60008181526015602052604081205491925003610aaa57600061094d610e26565b90508015610aa857601354600083815260156020526040902082905560168054908490556001600160a01b03909116908015610a44576000818152601560205260408120549061099e836001612de0565b90505b85811015610a41576000818152601560205260408120549003610a3157600081815260156020526040908190208390555163eada90d960e01b815260048101829052602481018390526001600160a01b0385169063eada90d990604401600060405180830381600087803b158015610a1857600080fd5b505af1158015610a2c573d6000803e3d6000fd5b505050505b610a3a81612df3565b90506109a1565b50505b60405163eada90d960e01b815260048101859052602481018490526001600160a01b0383169063eada90d990604401600060405180830381600087803b158015610a8d57600080fd5b505af1158015610aa1573d6000803e3d6000fd5b5050505050505b505b50565b6000610aba338484611aca565b5060015b92915050565b60035460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b9190612e0c565b505050565b6000546001600160a01b03163314610b735760405162461bcd60e51b8152600401610b6a90612e29565b60405180910390fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610bc85760405162461bcd60e51b8152600401610b6a90612e29565b6000610bd78262015180612e45565b90508060186000828254610beb9190612de0565b90915550505050565b6000610c01848484611b2c565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610c81576001600160a01b0384166000908152600260209081526040808320338452909152902054610c5c908390612e5c565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b610c93611f47565b565b60135433906001600160a01b0316811480610cbd57506014546001600160a01b038281169116145b610cf35760405162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b6044820152606401610b6a565b81600a6000828254610d059190612de0565b90915550610b3b905060008484612098565b6000610d24610535610d29565b905090565b600060185442610d249190612de0565b6000610abe6201518083612e6f565b6000546001600160a01b03163314610d725760405162461bcd60e51b8152600401610b6a90612e29565b600f5415610dac5760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b6044820152606401610b6a565b42600f55565b6000546001600160a01b03163314610ddc5760405162461bcd60e51b8152600401610b6a90612e29565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000806000610e33612110565b9150915080600003610e485760009250505090565b80610e73837f0000000000000000000000000000000000000000000000000de0b6b3a7640000612e45565b610e7d9190612e6f565b9250505090565b6000546001600160a01b03163314610eae5760405162461bcd60e51b8152600401610b6a90612e29565b600380546001600160a01b0319166001600160a01b0383169081179091556000908152600960205260409020805460ff19166001179055610ef2600a600019612e6f565b6003546001600160a01b03166000908152600d602052604090205550565b60408051600380825260808201909252600091829190602082016060803683370190505090507f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb89190612e91565b81600081518110610fcb57610fcb612eae565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000055d398326f99059ff775485246999027b31979558160018151811061101f5761101f612eae565b60200260200101906001600160a01b031690816001600160a01b031681525050308160028151811061105357611053612eae565b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e90911690631f00ca74906110b19086908590600401612ec4565b600060405180830381865afa1580156110ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110f69190810190612f1b565b60008151811061110857611108612eae565b6020026020010151915050919050565b60606007805461089f90612d96565b61112f610922565b6000611139610d17565b60008181526017602052604090205490915060ff16610aaa576000818152601760205260408120805460ff191660011790556111736117fc565b600083815260156020526040902054909150811115610aa8577f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd66001600160a01b0316600090815260016020526040812054906127106111d4606484612e45565b6111de9190612e6f565b90506111eb600283612e6f565b811115611200576111fd600283612e6f565b90505b801561128e576112337f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd661dead836121fa565b7f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd66001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a8d57600080fd5b50505050565b6000546001600160a01b031633146112be5760405162461bcd60e51b8152600401610b6a90612e29565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008060006112f0612110565b90955093506112fd610e26565b92507f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd66001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113819190612fac565b6040516370a0823160e01b81526001600160a01b0388811660048301529193507f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd6909116906370a0823190602401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190612fac565b905091939590929450565b6000546001600160a01b031633146114455760405162461bcd60e51b8152600401610b6a90612e29565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000908152600b6020526040812054339060ff161580156114a35750326001600160a01b038216145b156116c2578215806114c75750836001600160a01b0316816001600160a01b031614155b6114fe5760405162461bcd60e51b81526020600482015260086024820152673737ba1039b2b63360c11b6044820152606401610b6a565b611506610c8b565b61150e610922565b601354604051631b5cc7a760e01b81526001600160a01b03868116600483015260248201869052909116906000908290631b5cc7a790604401602060405180830381865afa158015611564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115889190612fac565b905060006127106115998784612e45565b6115a39190612e6f565b905080156115b8576115b88461dead836121fa565b6115cc84886115c7848a612e5c565b6121fa565b851580156115eb5750866001600160a01b0316846001600160a01b0316145b156116505760145460405163d279c19160e01b81526001600160a01b0386811660048301529091169063d279c19190602401600060405180830381600087803b15801561163757600080fd5b505af115801561164b573d6000803e3d6000fd5b505050505b60405163677ba3d360e01b81526001600160a01b03858116600483015288811660248301526044820188905284169063677ba3d390606401600060405180830381600087803b1580156116a257600080fd5b505af11580156116b6573d6000803e3d6000fd5b50505050505050610c81565b610c81818585611b2c565b6000546001600160a01b031633146116f75760405162461bcd60e51b8152600401610b6a90612e29565b60005b8251811015610b3b57816009600085848151811061171a5761171a612eae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061175681612df3565b9150506116fa565b6000546001600160a01b031633146117885760405162461bcd60e51b8152600401610b6a90612e29565b600580546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610aa8573d6000803e3d6000fd5b60008061180a600f54610d39565b905080156118925761181d600182612de0565b90506000611829610d17565b9050611836601e83612de0565b811061189057611847601e82612e5c565b91506000825b828110156118805760008181526015602052604090205461186e9083612de0565b915061187981612df3565b905061184d565b5061188c601e82612e6f565b9350505b505b5090565b6000546001600160a01b031633146118c05760405162461bcd60e51b8152600401610b6a90612e29565b6001600160a01b0381166118fb5760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610b6a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119805760405162461bcd60e51b8152600401610b6a90612e29565b600480546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b6000546001600160a01b031633146119e45760405162461bcd60e51b8152600401610b6a90612e29565b80601860008282546119f69190612de0565b909155505050565b6000546001600160a01b03163314611a285760405162461bcd60e51b8152600401610b6a90612e29565b601380546001600160a01b0319166001600160a01b0383169081179091556000611a50610d17565b6000818152601560205260409081902054905163eada90d960e01b81526004810183905260248101919091529091506001600160a01b0383169063eada90d990604401600060405180830381600087803b158015611aad57600080fd5b505af1158015611ac1573d6000803e3d6000fd5b50505050505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b611b34610c8b565b611b3c610922565b6001600160a01b03831660009081526001602052604090205481811015611b8b5760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610b6a565b6013546001600160a01b0385811691161480611bb457506013546001600160a01b038481169116145b15611bc45761128e8484846121fa565b6001600160a01b03841660009081526009602052604081205460ff16158015611c0657506001600160a01b03841660009081526009602052604090205460ff16155b15611c4857846001600160a01b03167f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b031614611c48575060015b600032905060007f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd66001600160a01b0316866001600160a01b0316148015611c9f5750336000908152600e602052604090205460ff165b8015611cbc5750866001600160a01b0316826001600160a01b0316145b15611daf57611cca85612242565b90508015611daf57601080546001600160a01b0319166001600160a01b0384811691821790925560118390556040516370a0823160e01b815260048101919091527f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd6909116906370a0823190602401602060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7a9190612fac565b6012556001600160a01b0382166000908152600d602052604081208054839290611da5908490612de0565b9091555060009350505b60007f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd66001600160a01b0316886001600160a01b031603611e4e57611df3866122dc565b90508015611e4e576001600160a01b0383166000908152600d602052604081208054839290611e23908490612e5c565b90915550506001600160a01b03831660009081526009602052604090205460ff1615611e4e57600093505b876001600160a01b03167f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd66001600160a01b031614158015611e8e575081155b15611e9b57611e9b611127565b611ea88888888785612433565b6001600160a01b0388166000908152600b602052604090205460ff1680611ee757506001600160a01b0387166000908152600b602052604090205460ff165b15610aa1576001600160a01b03881660009081526009602052604090205460ff16158015611f2e57506001600160a01b03871660009081526009602052604090205460ff16155b15611f4257600f54600010611f4257600080fd5b610aa1565b6010546001600160a01b03168015610aaa57601080546001600160a01b03191690556040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd6909116906370a0823190602401602060405180830381865afa158015611fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff89190612fac565b60125460115491925090818310806120235750806120168385612e5c565b61202190600a612de0565b105b1561128e576001600160a01b0384166000908152600d602052604090205481101561207b576001600160a01b0384166000908152600d602052604081208054839290612070908490612e5c565b9091555061128e9050565b5050506001600160a01b03166000908152600d6020526040812055565b6001600160a01b0382166000908152600160205260409020546120bc908290612de0565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b1f9085815260200190565b60008060007f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd69050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219d9190612fdc565b506001600160701b0391821693501690507f00000000000000000000000055d398326f99059ff775485246999027b3197955306001600160a01b03821610156121eb578295508194506121f2565b8195508294505b505050509091565b6001600160a01b03831660009081526001602052604090205461221e908290612e5c565b6001600160a01b038416600090815260016020526040902055610b3b838383612098565b600080600080612250612567565b925092509250600080841180156122675750600083115b1561228457826122778588612e45565b6122819190612e6f565b90505b60008211801561229d57506122998185612de0565b8210155b156122d3576122cf7f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd68388878761262d565b5094505b50505050919050565b6000806000806122ea612567565b925092509250828110156123df57846123387f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd66001600160a01b031660009081526001602052604090205490565b6123429190612e5c565b7f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd66001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c49190612fac565b6123ce9087612e45565b6123d89190612e6f565b935061242b565b600080841180156123f05750600083115b156122d3576123ff8684612e5c565b6124098588612e45565b6124139190612e6f565b905061241f8482612de0565b8210156122d357600080fd5b505050919050565b6001600160a01b038516600090815260016020526040902054612457908490612e5c565b6001600160a01b038616600090815260016020526040812091909155821561254b57600080600084116124f2576001600160a01b0387166000908152600b602052604090205460ff16156124df576127106124b461012c88612e45565b6124be9190612e6f565b91506127106124ce606488612e45565b6124d89190612e6f565b90506124f2565b6001600160a01b038816600052600b6020525b811561251d576125028284612de0565b60035490935061251d9089906001600160a01b031684612098565b80156125485761252d8184612de0565b6004549093506125489089906001600160a01b031683612098565b50505b61255f868661255a8488612e5c565b612098565b505050505050565b6000806000612574612110565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000003ca1392e4a95aa0f83e97458ab4495a58ca91bd6811660048301529295509093507f00000000000000000000000055d398326f99059ff775485246999027b3197955909116906370a0823190602401602060405180830381865afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190612fac565b9050909192565b6000806000876001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190612fac565b905060007f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271a9190612e91565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015612757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277b9190612e91565b90506000806001600160a01b0316826001600160a01b03161415905060008a6001600160a01b0316637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fb9190612fac565b905081156129f15780156129f157600061281d612818898b612e45565b612a6c565b9050600061282a83612a6c565b9050808211156129ee576000807310ed43c718714eb63d5aa57b78b54704e256024d197f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0316016128c4576128868385612e5c565b6128909089612e45565b61289b906008612e45565b91506128a8836008612e45565b6128b3856011612e45565b6128bd9190612de0565b90506129cc565b73d99d1c33f9fc3444f8101754abc46c52416550d0197f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b03160161292b576129138385612e5c565b61291d9089612e45565b9150826128b3856003612e45565b73e9d6f80028671279a28790bb4007b10b0595def0197f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b03160161299d5761297a8385612e5c565b6129849089612e45565b61298f906003612e45565b9150826128b3856005612e45565b6129a78385612e5c565b6129b19089612e45565b9150826129bf856005612e45565b6129c99190612de0565b90505b6129d68183612e6f565b985088156129eb576129e88989612de0565b97505b50505b50505b60006129fd898c612e5c565b905084600003612a28576103e8612a176128188c84612e45565b612a219190612e5c565b9650612a5d565b612a5a89612a368784612e45565b612a409190612e6f565b89612a4b888e612e45565b612a559190612e6f565b612adc565b96505b50505050509550959350505050565b60006003821115612acd5750806000612a86600283612e6f565b612a91906001612de0565b90505b81811015612ac757905080600281612aac8186612e6f565b612ab69190612de0565b612ac09190612e6f565b9050612a94565b50919050565b8115612ad7575060015b919050565b6000818310612aeb5781612aed565b825b9392505050565b6001600160a01b0381168114610aaa57600080fd5b600060208284031215612b1b57600080fd5b8135612aed81612af4565b600060208083528351808285015260005b81811015612b5357858101830151858201604001528201612b37565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612b8757600080fd5b8235612b9281612af4565b946020939093013593505050565b8015158114610aaa57600080fd5b8035612ad781612ba0565b60008060408385031215612bcc57600080fd5b8235612bd781612af4565b91506020830135612be781612ba0565b809150509250929050565b600060208284031215612c0457600080fd5b5035919050565b600080600060608486031215612c2057600080fd5b8335612c2b81612af4565b92506020840135612c3b81612af4565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612c8b57612c8b612c4c565b604052919050565b600067ffffffffffffffff821115612cad57612cad612c4c565b5060051b60200190565b60008060408385031215612cca57600080fd5b823567ffffffffffffffff811115612ce157600080fd5b8301601f81018513612cf257600080fd5b80356020612d07612d0283612c93565b612c62565b82815260059290921b83018101918181019088841115612d2657600080fd5b938201935b83851015612d4d578435612d3e81612af4565b82529382019390820190612d2b565b9550612d5c9050868201612bae565b93505050509250929050565b60008060408385031215612d7b57600080fd5b8235612d8681612af4565b91506020830135612be781612af4565b600181811c90821680612daa57607f821691505b602082108103612ac757634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610abe57610abe612dca565b600060018201612e0557612e05612dca565b5060010190565b600060208284031215612e1e57600080fd5b8151612aed81612ba0565b602080825260029082015261216f60f01b604082015260600190565b8082028115828204841417610abe57610abe612dca565b81810381811115610abe57610abe612dca565b600082612e8c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612ea357600080fd5b8151612aed81612af4565b634e487b7160e01b600052603260045260246000fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015612f0e5784516001600160a01b031683529383019391830191600101612ee9565b5090979650505050505050565b60006020808385031215612f2e57600080fd5b825167ffffffffffffffff811115612f4557600080fd5b8301601f81018513612f5657600080fd5b8051612f64612d0282612c93565b81815260059190911b82018301908381019087831115612f8357600080fd5b928401925b82841015612fa157835182529284019290840190612f88565b979650505050505050565b600060208284031215612fbe57600080fd5b5051919050565b80516001600160701b0381168114612ad757600080fd5b600080600060608486031215612ff157600080fd5b612ffa84612fc5565b925061300860208501612fc5565b9150604084015163ffffffff8116811461302157600080fd5b80915050925092509256fea2646970667358221220b2ace5ea86594024a2e0e7d002ed82cc0551b2c6eac51b8c1a650984581bd97c64736f6c63430008130033

Deployed Bytecode Sourcemap

23637:511:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3475:45;;;;;;;;;;-1:-1:-1;3475:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;3475:45:0;;;;;;;;6060:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19772:852::-;;;;;;;;;;;;;:::i;:::-;;19680:34;;;;;;;;;;;;;;;;;;;1293:25:1;;;1281:2;1266:18;19680:34:0;1147:177:1;7738:184:0;;;;;;;;;;-1:-1:-1;7738:184:0;;;;;:::i;:::-;;:::i;18754:22::-;;;;;;;;;;-1:-1:-1;18754:22:0;;;;-1:-1:-1;;;;;18754:22:0;;;;;;-1:-1:-1;;;;;1813:32:1;;;1795:51;;1783:2;1768:18;18754:22:0;1649:203:1;14674:122:0;;;;;;;;;;-1:-1:-1;14674:122:0;;;;;:::i;:::-;;:::i;6264:95::-;;;;;;;;;;-1:-1:-1;6344:7:0;;6264:95;;14804:115;;;;;;;;;;-1:-1:-1;14804:115:0;;;;;:::i;:::-;;:::i;20673:123::-;;;;;;;;;;-1:-1:-1;20673:123:0;;;;;:::i;:::-;;:::i;7930:404::-;;;;;;;;;;-1:-1:-1;7930:404:0;;;;;:::i;:::-;;:::i;17790:61::-;;;;;;;;;;;;;:::i;6162:94::-;;;;;;;;;;-1:-1:-1;6239:9:0;;6162:94;;6239:9;;;;3288:36:1;;3276:2;3261:18;6162:94:0;3146:184:1;19630:43:0;;;;;;;;;;-1:-1:-1;19630:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;19115:240;;;;;;;;;;-1:-1:-1;19115:240:0;;;;;:::i;:::-;;:::i;19721:42::-;;;;;;;;;;-1:-1:-1;19721:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21117:93;;;;;;;;;;;;;:::i;20901:105::-;;;;;;;;;;;;;:::i;18725:22::-;;;;;;;;;;-1:-1:-1;18725:22:0;;;;-1:-1:-1;;;;;18725:22:0;;;21014:95;;;;;;;;;;-1:-1:-1;21014:95:0;;;;;:::i;:::-;;:::i;13589:142::-;;;;;;;;;;;;;:::i;6367:155::-;;;;;;;;;;-1:-1:-1;6367:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;6471:18:0;6433:7;6471:18;;;:9;:18;;;;;;;6367:155;2366:148;;;;;;;;;;;;;:::i;19363:259::-;;;;;;;;;;;;;:::i;13739:175::-;;;;;;;;;;-1:-1:-1;13739:175:0;;;;;:::i;:::-;;:::i;2184:79::-;;;;;;;;;;-1:-1:-1;2222:7:0;2249:6;-1:-1:-1;;;;;2249:6:0;2184:79;;23304:326;;;;;;;;;;-1:-1:-1;23304:326:0;;;;;:::i;:::-;;:::i;5954:98::-;;;;;;;;;;;;;:::i;21865:743::-;;;;;;;;;;;;;:::i;19018:89::-;;;;;;;;;;-1:-1:-1;19018:89:0;;;;;:::i;:::-;;:::i;4170:29::-;;;;;;;;;;;;;;;;22860:436;;;;;;;;;;-1:-1:-1;22860:436:0;;;;;:::i;:::-;;:::i;:::-;;;;3594:25:1;;;3650:2;3635:18;;3628:34;;;;3678:18;;;3671:34;;;;3736:2;3721:18;;3714:34;3779:3;3764:19;;3757:35;3581:3;3566:19;22860:436:0;3335:463:1;3317:27:0;;;;;;;;;;-1:-1:-1;3317:27:0;;;;-1:-1:-1;;;;;3317:27:0;;;14437:118;;;;;;;;;;-1:-1:-1;14437:118:0;;;;;:::i;:::-;;:::i;6530:1024::-;;;;;;;;;;-1:-1:-1;6530:1024:0;;;;;:::i;:::-;;:::i;14204:225::-;;;;;;;;;;-1:-1:-1;14204:225:0;;;;;:::i;:::-;;:::i;3351:27::-;;;;;;;;;;-1:-1:-1;3351:27:0;;;;-1:-1:-1;;;;;3351:27:0;;;14063:133;;;;;;;;;;-1:-1:-1;14063:133:0;;;;;:::i;:::-;;:::i;7562:168::-;;;;;;;;;;-1:-1:-1;7562:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7695:18:0;;;7668:7;7695:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7562:168;3284:26;;;;;;;;;;-1:-1:-1;3284:26:0;;;;-1:-1:-1;;;;;3284:26:0;;;14563:103;;;;;;;;;;-1:-1:-1;14563:103:0;;;;;:::i;:::-;;:::i;21218:590::-;;;;;;;;;;;;;:::i;2522:208::-;;;;;;;;;;-1:-1:-1;2522:208:0;;;;;:::i;:::-;;:::i;13922:133::-;;;;;;;;;;-1:-1:-1;13922:133:0;;;;;:::i;:::-;;:::i;20804:89::-;;;;;;;;;;-1:-1:-1;20804:89:0;;;;;:::i;:::-;;:::i;18785:225::-;;;;;;;;;;-1:-1:-1;18785:225:0;;;;;:::i;:::-;;:::i;6060:94::-;6108:13;6141:5;6134:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6060:94;:::o;19772:852::-;19817:11;19831:10;:8;:10::i;:::-;19861:13;;;;:8;:13;;;;;;19817:24;;-1:-1:-1;19856:18:0;19852:765;;19891:13;19907:12;:10;:12::i;:::-;19891:28;-1:-1:-1;19938:9:0;;19934:672;;19999:7;;19968:18;20026:13;;;:8;:13;;;;;:21;;;20082:19;;;20120:25;;;;-1:-1:-1;;;;;19999:7:0;;;;20168:9;;20164:376;;20202:17;20222:15;;;:8;:15;;;;;;;20277:9;20231:5;20285:1;20277:9;:::i;:::-;20265:21;;20260:261;20292:3;20288:1;:7;20260:261;;;20338:11;;;;:8;:11;;;;;;20333:16;;20329:169;;20382:11;;;;:8;:11;;;;;;;:23;;;20436:34;-1:-1:-1;;;20436:34:0;;;;;6658:25:1;;;6699:18;;;6692:34;;;-1:-1:-1;;;;;20436:20:0;;;;;6631:18:1;;20436:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20329:169;20297:3;;;:::i;:::-;;;20260:261;;;;20179:361;20164:376;20558:32;;-1:-1:-1;;;20558:32:0;;;;;6658:25:1;;;6699:18;;;6692:34;;;-1:-1:-1;;;;;20558:20:0;;;;;6631:18:1;;20558:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19949:657;;19934:672;19876:741;19852:765;19806:818;19772:852::o;7738:184::-;7838:4;7855:37;7864:10;7876:7;7885:6;7855:8;:37::i;:::-;-1:-1:-1;7910:4:0;7738:184;;;;;:::o;14674:122::-;14768:11;;14745:43;;-1:-1:-1;;;14745:43:0;;-1:-1:-1;;;;;14768:11:0;;;14745:43;;;7051:51:1;7118:18;;;7111:34;;;14745:22:0;;;;;;7024:18:1;;14745:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14674:122;;:::o;14804:115::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14884:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:27;;-1:-1:-1;;14884:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14804:115::o;20673:123::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;20735:10:::1;20748:11;:2:::0;20753:6:::1;20748:11;:::i;:::-;20735:24;;20786:2;20770:12;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;20673:123:0:o;7930:404::-;8062:4;8079:36;8089:6;8097:9;8108:6;8079:9;:36::i;:::-;-1:-1:-1;;;;;8130:19:0;;3732:1;8130:19;;;:11;:19;;;;;;;;8150:10;8130:31;;;;;;;;-1:-1:-1;;8130:38:0;8126:179;;-1:-1:-1;;;;;8236:19:0;;;;;;:11;:19;;;;;;;;8256:10;8236:31;;;;;;;;:57;;8287:6;;8236:57;:::i;:::-;-1:-1:-1;;;;;8185:19:0;;;;;;:11;:19;;;;;;;;8205:10;8185:31;;;;;;;:108;8126:179;-1:-1:-1;8322:4:0;7930:404;;;;;:::o;17790:61::-;17830:13;:11;:13::i;:::-;17790:61::o;19115:240::-;19221:7;;19192:10;;-1:-1:-1;;;;;19221:7:0;:17;;;:38;;-1:-1:-1;19242:7:0;;-1:-1:-1;;;;;19242:17:0;;;:7;;:17;19221:38;19213:58;;;;-1:-1:-1;;;19213:58:0;;8244:2:1;19213:58:0;;;8226:21:1;8283:1;8263:18;;;8256:29;-1:-1:-1;;;8301:18:1;;;8294:37;8348:18;;19213:58:0;8042:330:1;19213:58:0;19293:6;19282:7;;:17;;;;;;;:::i;:::-;;;;-1:-1:-1;19310:37:0;;-1:-1:-1;19332:1:0;19336:2;19340:6;19310:13;:37::i;21117:93::-;21158:7;21185:17;21192:9;:7;:9::i;21185:17::-;21178:24;;21117:93;:::o;20901:105::-;20941:7;20986:12;;20968:15;:30;;;;:::i;21014:95::-;21063:7;21090:11;21095:6;21090:2;:11;:::i;13589:142::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;13654:14:::1;::::0;13649:19;13641:39:::1;;;::::0;-1:-1:-1;;;13641:39:0;;8801:2:1;13641:39:0::1;::::0;::::1;8783:21:1::0;8840:1;8820:18;;;8813:29;-1:-1:-1;;;8858:18:1;;;8851:37;8905:18;;13641:39:0::1;8599:330:1::0;13641:39:0::1;13708:15;13691:14;:32:::0;13589:142::o;2366:148::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;2473:1:::1;2457:6:::0;;2436:40:::1;::::0;-1:-1:-1;;;;;2457:6:0;;::::1;::::0;2436:40:::1;::::0;2473:1;;2436:40:::1;2504:1;2487:19:::0;;-1:-1:-1;;;;;;2487:19:0::1;::::0;;2366:148::o;19363:259::-;19406:7;19427:19;19448:20;19472:15;:13;:15::i;:::-;19426:61;;;;19507:12;19502:1;:17;19498:58;;19543:1;19536:8;;;;19363:259;:::o;19498:58::-;19602:12;19574:24;19587:11;19574:10;:24;:::i;:::-;19573:41;;;;:::i;:::-;19566:48;;;;19363:259;:::o;13739:175::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;13807:11:::1;:18:::0;;-1:-1:-1;;;;;;13807:18:0::1;-1:-1:-1::0;;;;;13807:18:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13836:19:0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;13836:26:0::1;-1:-1:-1::0;13836:26:0::1;::::0;;13898:8:::1;13904:2;-1:-1:-1::0;;13898:8:0::1;:::i;:::-;13883:11;::::0;-1:-1:-1;;;;;13883:11:0::1;13873:22;::::0;;;:9:::1;:22;::::0;;;;:33;-1:-1:-1;13739:175:0:o;23304:326::-;23438:16;;;23452:1;23438:16;;;;;;;;;23384:17;;;;23438:16;;;;;;;;;;;-1:-1:-1;23438:16:0;23414:40;;23475:11;-1:-1:-1;;;;;23475:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23465:4;23470:1;23465:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;23465:28:0;;;-1:-1:-1;;;;;23465:28:0;;;;;23514:5;23504:4;23509:1;23504:7;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;23504:15:0;;;-1:-1:-1;;;;;23504:15:0;;;;;23548:4;23530;23535:1;23530:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23530:23:0;;;:7;;;;;;;;;:23;23576:43;;-1:-1:-1;;;23576:43:0;;:11;:24;;;;;;:43;;23601:11;;23614:4;;23576:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23576:43:0;;;;;;;;;;;;:::i;:::-;23620:1;23576:46;;;;;;;;:::i;:::-;;;;;;;23564:58;;23403:227;23304:326;;;:::o;5954:98::-;6004:13;6037:7;6030:14;;;;;:::i;21865:743::-;21906:17;:15;:17::i;:::-;21934:11;21948:10;:8;:10::i;:::-;21974:15;;;;:10;:15;;;;;;21934:24;;-1:-1:-1;21974:15:0;;21969:632;;22006:15;;;;:10;:15;;;;;:22;;-1:-1:-1;;22006:22:0;22024:4;22006:22;;;22062:13;:11;:13::i;:::-;22105;;;;:8;:13;;;;;;22043:32;;-1:-1:-1;22094:24:0;;22090:500;;;22171:9;-1:-1:-1;;;;;6471:18:0;22139:19;6471:18;;;:9;:18;;;;;;;22253:5;22224:25;21855:3;6471:18;22224:25;:::i;:::-;22223:35;;;;:::i;:::-;22200:58;-1:-1:-1;22296:15:0;22310:1;22296:11;:15;:::i;:::-;22281:12;:30;22277:109;;;22351:15;22365:1;22351:11;:15;:::i;:::-;22336:30;;22277:109;22408:16;;22404:171;;22449:56;22464:9;22483:6;22492:12;22449:14;:56::i;:::-;22538:9;-1:-1:-1;;;;;22528:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22404:171;22120:470;;21991:610;21895:713;21865:743::o;19018:89::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;19083:7:::1;:16:::0;;-1:-1:-1;;;;;;19083:16:0::1;-1:-1:-1::0;;;;;19083:16:0;;;::::1;::::0;;;::::1;::::0;;19018:89::o;22860:436::-;22957:14;22982:15;23008:13;23032:21;23064:17;23125:15;:13;:15::i;:::-;23105:35;;-1:-1:-1;23105:35:0;-1:-1:-1;23159:12:0;:10;:12::i;:::-;23151:20;;23205:9;-1:-1:-1;;;;;23198:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23252:36;;-1:-1:-1;;;23252:36:0;;-1:-1:-1;;;;;1813:32:1;;;23252:36:0;;;1795:51:1;23182:47:0;;-1:-1:-1;23259:9:0;23252:27;;;;;;1768:18:1;;23252:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23240:48;;22860:436;;;;;;;:::o;14437:118::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14519:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;14519:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14437:118::o;6530:1024::-;-1:-1:-1;;;;;6691:24:0;;6633:4;6691:24;;;:13;:24;;;;;;6665:10;;6691:24;;6690:25;:46;;;;-1:-1:-1;6719:9:0;-1:-1:-1;;;;;6719:17:0;;;6690:46;6686:839;;;6761:11;;;:32;;;6784:9;-1:-1:-1;;;;;6776:17:0;:4;-1:-1:-1;;;;;6776:17:0;;;6761:32;6753:53;;;;-1:-1:-1;;;6753:53:0;;11333:2:1;6753:53:0;;;11315:21:1;11372:1;11352:18;;;11345:29;-1:-1:-1;;;11390:18:1;;;11383:38;11438:18;;6753:53:0;11131:331:1;6753:53:0;6821:12;:10;:12::i;:::-;6848:17;:15;:17::i;:::-;6911:7;;6952:38;;-1:-1:-1;;;6952:38:0;;-1:-1:-1;;;;;7069:32:1;;;6952:38:0;;;7051:51:1;7118:18;;;7111:34;;;6911:7:0;;;;6880:18;;6911:7;;6952:19;;7024:18:1;;6952:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6934:56;-1:-1:-1;7005:24:0;7053:5;7033:16;7043:6;6934:56;7033:16;:::i;:::-;7032:26;;;;:::i;:::-;7005:53;-1:-1:-1;7077:20:0;;7073:116;;7118:55;7133:4;7147:6;7156:16;7118:14;:55::i;:::-;7203:58;7218:4;7224:9;7235:25;7244:16;7235:6;:25;:::i;:::-;7203:14;:58::i;:::-;7280:11;;:32;;;;;7303:9;-1:-1:-1;;;;;7295:17:0;:4;-1:-1:-1;;;;;7295:17:0;;7280:32;7276:107;;;7341:7;;7333:34;;-1:-1:-1;;;7333:34:0;;-1:-1:-1;;;;;1813:32:1;;;7333:34:0;;;1795:51:1;7341:7:0;;;;7333:28;;1768:18:1;;7333:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7276:107;7397:49;;-1:-1:-1;;;7397:49:0;;-1:-1:-1;;;;;11725:15:1;;;7397:49:0;;;11707:34:1;11777:15;;;11757:18;;;11750:43;11809:18;;;11802:34;;;7397:24:0;;;;;11642:18:1;;7397:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:720;;;6686:839;;;7479:34;7489:4;7495:9;7506:6;7479:9;:34::i;14204:225::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;14330:6:::1;14325:97;14346:4;:11;14342:1;:15;14325:97;;;14404:6;14379:13;:22;14393:4;14398:1;14393:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14379:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14379:22:0;:31;;-1:-1:-1;;14379:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14359:3;::::1;::::0;::::1;:::i;:::-;;;;14325:97;;14063:133:::0;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;14132:12:::1;:19:::0;;-1:-1:-1;;;;;14132:19:0;;::::1;-1:-1:-1::0;;;;;;14132:19:0;;::::1;::::0;::::1;::::0;;:12:::1;14162:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;14162:26:0::1;14132:19:::0;14162:26:::1;::::0;;14063:133::o;14563:103::-;14629:11;;14621:37;;-1:-1:-1;;;;;14629:11:0;;;;14621:37;;;;;14651:6;;14629:11;14621:37;14629:11;14621:37;14651:6;14629:11;14621:37;;;;;;;;;;;;;;;;;;;21218:590;21262:16;21314;21333:22;21340:14;;21333:6;:22::i;:::-;21314:41;-1:-1:-1;21370:12:0;;21366:435;;21401:13;21413:1;21401:13;;:::i;:::-;;;21429:14;21446:10;:8;:10::i;:::-;21429:27;-1:-1:-1;21485:20:0;4161:2;21485:8;:20;:::i;:::-;21475:6;:30;21471:319;;21537:18;4161:2;21537:6;:18;:::i;:::-;21526:29;-1:-1:-1;21574:18:0;21526:29;21611:112;21642:6;21638:1;:10;21611:112;;;21692:11;;;;:8;:11;;;;;;21678:25;;;;:::i;:::-;;-1:-1:-1;21650:3:0;;;:::i;:::-;;;21611:112;;;-1:-1:-1;21752:22:0;4161:2;21752:10;:22;:::i;:::-;21741:33;;21507:283;21471:319;21384:417;21366:435;21280:528;21218:590;:::o;2522:208::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2611:22:0;::::1;2603:37;;;::::0;-1:-1:-1;;;2603:37:0;;12049:2:1;2603:37:0::1;::::0;::::1;12031:21:1::0;12088:1;12068:18;;;12061:29;-1:-1:-1;;;12106:18:1;;;12099:32;12148:18;;2603:37:0::1;11847:325:1::0;2603:37:0::1;2677:6;::::0;;2656:38:::1;::::0;-1:-1:-1;;;;;2656:38:0;;::::1;::::0;2677:6;::::1;::::0;2656:38:::1;::::0;::::1;2705:6;:17:::0;;-1:-1:-1;;;;;;2705:17:0::1;-1:-1:-1::0;;;;;2705:17:0;;;::::1;::::0;;;::::1;::::0;;2522:208::o;13922:133::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;13991:12:::1;:19:::0;;-1:-1:-1;;;;;13991:19:0;;::::1;-1:-1:-1::0;;;;;;13991:19:0;;::::1;::::0;::::1;::::0;;:12:::1;14021:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;14021:26:0::1;13991:19:::0;14021:26:::1;::::0;;13922:133::o;20804:89::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;20883:2:::1;20867:12;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;20804:89:0:o;18785:225::-;2311:6;;-1:-1:-1;;;;;2311:6:0;2321:10;2311:20;2303:35;;;;-1:-1:-1;;;2303:35:0;;;;;;;:::i;:::-;18850:7:::1;:16:::0;;-1:-1:-1;;;;;;18850:16:0::1;-1:-1:-1::0;;;;;18850:16:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;18941:10:0::1;:8;:10::i;:::-;18988:13;::::0;;;:8:::1;:13;::::0;;;;;;;18962:40;;-1:-1:-1;;;18962:40:0;;::::1;::::0;::::1;6658:25:1::0;;;6699:18;;;6692:34;;;;18988:13:0;;-1:-1:-1;;;;;;18962:20:0;::::1;::::0;::::1;::::0;6631:18:1;;18962:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18839:171;;18785:225:::0;:::o;8342:177::-;-1:-1:-1;;;;;8427:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8479:32;;1293:25:1;;;8479:32:0;;1266:18:1;8479:32:0;;;;;;;;8342:177;;;:::o;8527:1867::-;8607:12;:10;:12::i;:::-;8630:17;:15;:17::i;:::-;-1:-1:-1;;;;;6471:18:0;;8658:15;6471:18;;;:9;:18;;;;;;8710:17;;;;8702:33;;;;-1:-1:-1;;;8702:33:0;;12379:2:1;8702:33:0;;;12361:21:1;12418:1;12398:18;;;12391:29;-1:-1:-1;;;12436:18:1;;;12429:33;12479:18;;8702:33:0;12177:326:1;8702:33:0;8750:7;;-1:-1:-1;;;;;8750:15:0;;;:7;;:15;;:32;;-1:-1:-1;8769:7:0;;-1:-1:-1;;;;;8769:13:0;;;:7;;:13;8750:32;8746:118;;;8799:32;8814:4;8820:2;8824:6;8799:14;:32::i;8746:118::-;-1:-1:-1;;;;;8904:19:0;;8874:12;8904:19;;;:13;:19;;;;;;;;8903:20;:42;;;;-1:-1:-1;;;;;;8928:17:0;;;;;;:13;:17;;;;;;;;8927:18;8903:42;8899:157;;;8990:4;-1:-1:-1;;;;;8966:28:0;8974:11;-1:-1:-1;;;;;8966:28:0;;8962:83;;-1:-1:-1;9025:4:0;8962:83;9068:16;9087:9;9068:28;;9107:22;9179:9;-1:-1:-1;;;;;9173:15:0;:2;-1:-1:-1;;;;;9173:15:0;;:43;;;;-1:-1:-1;9205:10:0;9192:24;;;;:12;:24;;;;;;;;9173:43;:63;;;;;9232:4;-1:-1:-1;;;;;9220:16:0;:8;-1:-1:-1;;;;;9220:16:0;;9173:63;9169:446;;;9270:23;9286:6;9270:15;:23::i;:::-;9253:40;-1:-1:-1;9312:18:0;;9308:296;;9351:14;:25;;-1:-1:-1;;;;;;9351:25:0;-1:-1:-1;;;;;9351:25:0;;;;;;;;;9395:13;:30;;;9461:37;;-1:-1:-1;;;9461:37:0;;;;;1795:51:1;;;;9468:9:0;9461:27;;;;;;1768:18:1;;9461:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9444:14;:54;-1:-1:-1;;;;;9517:19:0;;;;;;:9;:19;;;;;:37;;9540:14;;9517:19;:37;;9540:14;;9517:37;:::i;:::-;;;;-1:-1:-1;9583:5:0;;-1:-1:-1;;9308:296:0;9627:25;9707:9;-1:-1:-1;;;;;9699:17:0;:4;-1:-1:-1;;;;;9699:17:0;;9695:317;;9753:26;9772:6;9753:18;:26::i;:::-;9733:46;-1:-1:-1;9798:21:0;;9794:207;;-1:-1:-1;;;;;9840:19:0;;;;;;:9;:19;;;;;:40;;9863:17;;9840:19;:40;;9863:17;;9840:40;:::i;:::-;;;;-1:-1:-1;;;;;;;9903:23:0;;;;;;:13;:23;;;;;;;;9899:87;;;9961:5;9951:15;;9899:87;10041:4;-1:-1:-1;;;;;10028:17:0;:9;-1:-1:-1;;;;;10028:17:0;;;:40;;;;-1:-1:-1;10049:19:0;;10028:40;10024:86;;;10085:13;:11;:13::i;:::-;10122:60;10137:4;10143:2;10147:6;10155:7;10164:17;10122:14;:60::i;:::-;-1:-1:-1;;;;;10199:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;10222:17:0;;;;;;:13;:17;;;;;;;;10199:40;10195:192;;;-1:-1:-1;;;;;10261:19:0;;;;;;:13;:19;;;;;;;;10260:20;:42;;;;-1:-1:-1;;;;;;10285:17:0;;;;;;:13;:17;;;;;;;;10284:18;10260:42;10256:112;;;10336:14;;10332:1;:18;10323:29;;;;;;10195:192;;17969:748;18035:14;;-1:-1:-1;;;;;18035:14:0;18064:27;;18060:650;;18108:14;:27;;-1:-1:-1;;;;;;18108:27:0;;;18170:42;;-1:-1:-1;;;18170:42:0;;-1:-1:-1;;;;;1813:32:1;;;18170:42:0;;;1795:51:1;-1:-1:-1;;18177:9:0;18170:27;;;;;;1768:18:1;;18170:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18251:14;;18303:13;;18150:62;;-1:-1:-1;18251:14:0;18353:25;;;;:91;;-1:-1:-1;18432:12:0;18399:25;18411:13;18399:9;:25;:::i;:::-;:30;;18427:2;18399:30;:::i;:::-;:45;18353:91;18331:368;;;-1:-1:-1;;;;;18483:24:0;;;;;;:9;:24;;;;;;:39;-1:-1:-1;18479:205:0;;;-1:-1:-1;;;;;18547:24:0;;;;;;:9;:24;;;;;:40;;18575:12;;18547:24;:40;;18575:12;;18547:40;:::i;:::-;;;;-1:-1:-1;18479:205:0;;-1:-1:-1;18479:205:0;;-1:-1:-1;;;;;;;;18636:24:0;18663:1;18636:24;;;:9;:24;;;;;:28;17969:748::o;13368:213::-;-1:-1:-1;;;;;13505:13:0;;;;;;:9;:13;;;;;;:23;;13521:7;;13505:23;:::i;:::-;-1:-1:-1;;;;;13489:13:0;;;;;;;:9;:13;;;;;;;:39;;;;13544:29;;;;;;;;;;13565:7;1293:25:1;;1281:2;1266:18;;1147:177;11879:430:0;11941:14;11957:13;11988:18;12019:9;11988:41;;12041:7;12050:10;12066:8;-1:-1:-1;;;;;12066:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;12040:48:0;;;;-1:-1:-1;12040:48:0;;-1:-1:-1;12122:5:0;12163:4;-1:-1:-1;;;;;12142:26:0;;;12138:164;;;12194:2;12185:11;;12219:2;12211:10;;12138:164;;;12263:2;12254:11;;12288:2;12280:10;;12138:164;11977:332;;;;11879:430;;:::o;22616:236::-;-1:-1:-1;;;;;22765:17:0;;;;;;:9;:17;;;;;;:27;;22785:7;;22765:27;:::i;:::-;-1:-1:-1;;;;;22745:17:0;;;;;;:9;:17;;;;;:47;22803:41;22755:6;22825:9;22836:7;22803:13;:41::i;10402:598::-;10482:17;10513:14;10529:13;10544:20;10568:14;:12;:14::i;:::-;10512:70;;;;;;10593:19;10636:1;10627:6;:10;:23;;;;;10649:1;10641:5;:9;10627:23;10623:95;;;10701:5;10682:15;10691:6;10682;:15;:::i;:::-;10681:25;;;;:::i;:::-;10667:39;;10623:95;10747:1;10732:12;:16;:56;;;;-1:-1:-1;10768:20:0;10777:11;10768:6;:20;:::i;:::-;10752:12;:36;;10732:56;10728:265;;;10821:160;10852:9;10880:12;10911:6;10936;10961:5;10821:12;:160::i;:::-;-1:-1:-1;10805:176:0;-1:-1:-1;10728:265:0;10501:499;;;;10402:598;;;:::o;11008:624::-;11091:17;11122:14;11138:13;11153:20;11177:14;:12;:14::i;:::-;11121:70;;;;;;11221:6;11206:12;:21;11202:423;;;11362:6;11339:20;11349:9;-1:-1:-1;;;;;6471:18:0;6433:7;6471:18;;;:9;:18;;;;;;;6367:155;11339:20;:29;;;;:::i;:::-;11293:9;-1:-1:-1;;;;;11283:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11274:43;;:6;:43;:::i;:::-;11273:96;;;;:::i;:::-;11244:125;;11202:423;;;11402:19;11449:1;11440:6;:10;:23;;;;;11462:1;11454:5;:9;11440:23;11436:178;;;11519:14;11527:6;11519:5;:14;:::i;:::-;11499:15;11508:6;11499;:15;:::i;:::-;11498:36;;;;:::i;:::-;11484:50;-1:-1:-1;11577:20:0;11591:6;11484:50;11577:20;:::i;:::-;11561:12;:36;;11553:45;;;;;11202:423;11110:522;;;11008:624;;;:::o;12317:1043::-;-1:-1:-1;;;;;12525:17:0;;;;;;:9;:17;;;;;;:27;;12545:7;;12525:27;:::i;:::-;-1:-1:-1;;;;;12505:17:0;;;;;;:9;:17;;;;;:47;;;;12593:696;;;;12621:18;12654:19;12712:1;12692:17;:21;12688:272;;-1:-1:-1;;;;;12727:24:0;;;;;;:13;:24;;;;;;;;12723:237;;;12814:5;12788:22;3967:3;12788:7;:22;:::i;:::-;12787:32;;;;:::i;:::-;12774:45;-1:-1:-1;12880:5:0;12853:23;4018:3;12853:7;:23;:::i;:::-;12852:33;;;;:::i;:::-;12838:47;;12723:237;;;-1:-1:-1;;;;;12911:21:0;;;;:13;:21;;12907:53;12978:14;;12974:143;;13013:23;13026:10;13013:23;;:::i;:::-;13077:11;;13013:23;;-1:-1:-1;13055:46:0;;13069:6;;-1:-1:-1;;;;;13077:11:0;13090:10;13055:13;:46::i;:::-;13135:15;;13131:147;;13171:24;13184:11;13171:24;;:::i;:::-;13236:12;;13171:24;;-1:-1:-1;13214:48:0;;13228:6;;-1:-1:-1;;;;;13236:12:0;13250:11;13214:13;:48::i;:::-;12606:683;;12593:696;13299:53;13313:6;13321:9;13332:19;13342:9;13332:7;:19;:::i;:::-;13299:13;:53::i;:::-;12494:866;12317:1043;;;;;:::o;11640:231::-;11701:14;11717:13;11732:20;11788:15;:13;:15::i;:::-;11829:34;;-1:-1:-1;;;11829:34:0;;-1:-1:-1;;;;;11853:9:0;1813:32:1;;11829:34:0;;;1795:51:1;11770:33:0;;-1:-1:-1;11770:33:0;;-1:-1:-1;11836:5:0;11829:23;;;;;;1768:18:1;;11829:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11814:49;;11640:231;;;:::o;15342:2403::-;15512:17;15531:22;15566:23;15602:6;-1:-1:-1;;;;;15592:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15566:57;;15634:13;15663:11;-1:-1:-1;;;;;15663:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15650:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15634:59;;15704:10;15734:1;-1:-1:-1;;;;;15717:19:0;:5;-1:-1:-1;;;;;15717:19:0;;;15704:32;;15747:14;15774:6;-1:-1:-1;;;;;15764:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15747:42;;15804:5;15800:1628;;;15830:11;;15826:1591;;15862:13;15878;15883:7;15888:2;15883;:7;:::i;:::-;15878:4;:13::i;:::-;15862:29;;15910:17;15930:12;15935:6;15930:4;:12::i;:::-;15910:32;;15973:9;15965:5;:17;15961:1441;;;16007:17;;-1:-1:-1;;16127:11:0;-1:-1:-1;;;;;16119:100:0;;16089:1151;;16303:17;16311:9;16303:5;:17;:::i;:::-;16284:37;;:15;:37;:::i;:::-;:41;;16324:1;16284:41;:::i;:::-;16272:53;-1:-1:-1;16380:13:0;:9;16392:1;16380:13;:::i;:::-;16366:10;:5;16374:2;16366:10;:::i;:::-;:28;;;;:::i;:::-;16352:42;;16089:1151;;;-1:-1:-1;;16462:11:0;-1:-1:-1;;;;;16454:100:0;;16424:816;;16638:17;16646:9;16638:5;:17;:::i;:::-;16619:37;;:15;:37;:::i;:::-;16607:49;-1:-1:-1;16709:9:0;16697;:5;16705:1;16697:9;:::i;16424:816::-;-1:-1:-1;;16786:11:0;-1:-1:-1;;;;;16778:100:0;;16748:492;;16962:17;16970:9;16962:5;:17;:::i;:::-;16943:37;;:15;:37;:::i;:::-;:41;;16983:1;16943:41;:::i;:::-;16931:53;-1:-1:-1;17037:9:0;17025;:5;17033:1;17025:9;:::i;16748:492::-;17136:17;17144:9;17136:5;:17;:::i;:::-;17117:37;;:15;:37;:::i;:::-;17105:49;-1:-1:-1;17207:9:0;17195;:5;17203:1;17195:9;:::i;:::-;:21;;;;:::i;:::-;17181:35;;16748:492;17279:23;17291:11;17279:9;:23;:::i;:::-;17262:40;-1:-1:-1;17329:18:0;;17325:57;;17349:33;17368:14;17349:33;;:::i;:::-;;;17325:57;15984:1418;;15961:1441;15843:1574;;15826:1591;17438:15;17456:13;17467:2;17456:8;:13;:::i;:::-;17438:31;;17484:15;17503:1;17484:20;17480:258;;17558:4;17533:22;17538:16;17548:6;17538:7;:16;:::i;17533:22::-;:29;;;;:::i;:::-;17521:41;;17480:258;;;17607:119;17659:2;17630:25;17640:15;17630:7;:25;:::i;:::-;17629:32;;;;:::i;:::-;17709:2;17681:24;17690:15;17681:6;:24;:::i;:::-;17680:31;;;;:::i;:::-;17607:3;:119::i;:::-;17595:131;;17480:258;15555:2190;;;;;15342:2403;;;;;;;;:::o;15031:303::-;15076:6;15103:1;15099;:5;15095:232;;;-1:-1:-1;15125:1:0;15141:6;15150:5;15154:1;15125;15150:5;:::i;:::-;:9;;15158:1;15150:9;:::i;:::-;15141:18;;15174:92;15185:1;15181;:5;15174:92;;;15211:1;-1:-1:-1;15211:1:0;15249;15211;15236:5;15211:1;15236;:5;:::i;:::-;:9;;;;:::i;:::-;15235:15;;;;:::i;:::-;15231:19;;15174:92;;;15106:171;15031:303;;;:::o;15095:232::-;15287:6;;15283:44;;-1:-1:-1;15314:1:0;15283:44;15031:303;;;:::o;14927:96::-;14979:6;15006:1;15002;:5;:13;;15014:1;15002:13;;;15010:1;15002:13;14998:17;14927:96;-1:-1:-1;;;14927:96:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;594:548::-;706:4;735:2;764;753:9;746:21;796:6;790:13;839:6;834:2;823:9;819:18;812:34;864:1;874:140;888:6;885:1;882:13;874:140;;;983:14;;;979:23;;973:30;949:17;;;968:2;945:26;938:66;903:10;;874:140;;;878:3;1063:1;1058:2;1049:6;1038:9;1034:22;1030:31;1023:42;1133:2;1126;1122:7;1117:2;1109:6;1105:15;1101:29;1090:9;1086:45;1082:54;1074:62;;;;594:548;;;;:::o;1329:315::-;1397:6;1405;1458:2;1446:9;1437:7;1433:23;1429:32;1426:52;;;1474:1;1471;1464:12;1426:52;1513:9;1500:23;1532:31;1557:5;1532:31;:::i;:::-;1582:5;1634:2;1619:18;;;;1606:32;;-1:-1:-1;;;1329:315:1:o;1857:118::-;1943:5;1936:13;1929:21;1922:5;1919:32;1909:60;;1965:1;1962;1955:12;1980:128;2045:20;;2074:28;2045:20;2074:28;:::i;2113:382::-;2178:6;2186;2239:2;2227:9;2218:7;2214:23;2210:32;2207:52;;;2255:1;2252;2245:12;2207:52;2294:9;2281:23;2313:31;2338:5;2313:31;:::i;:::-;2363:5;-1:-1:-1;2420:2:1;2405:18;;2392:32;2433:30;2392:32;2433:30;:::i;:::-;2482:7;2472:17;;;2113:382;;;;;:::o;2500:180::-;2559:6;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;;2500:180;-1:-1:-1;2500:180:1:o;2685:456::-;2762:6;2770;2778;2831:2;2819:9;2810:7;2806:23;2802:32;2799:52;;;2847:1;2844;2837:12;2799:52;2886:9;2873:23;2905:31;2930:5;2905:31;:::i;:::-;2955:5;-1:-1:-1;3012:2:1;2997:18;;2984:32;3025:33;2984:32;3025:33;:::i;:::-;2685:456;;3077:7;;-1:-1:-1;;;3131:2:1;3116:18;;;;3103:32;;2685:456::o;3803:127::-;3864:10;3859:3;3855:20;3852:1;3845:31;3895:4;3892:1;3885:15;3919:4;3916:1;3909:15;3935:275;4006:2;4000:9;4071:2;4052:13;;-1:-1:-1;;4048:27:1;4036:40;;4106:18;4091:34;;4127:22;;;4088:62;4085:88;;;4153:18;;:::i;:::-;4189:2;4182:22;3935:275;;-1:-1:-1;3935:275:1:o;4215:183::-;4275:4;4308:18;4300:6;4297:30;4294:56;;;4330:18;;:::i;:::-;-1:-1:-1;4375:1:1;4371:14;4387:4;4367:25;;4215:183::o;4403:1036::-;4493:6;4501;4554:2;4542:9;4533:7;4529:23;4525:32;4522:52;;;4570:1;4567;4560:12;4522:52;4610:9;4597:23;4643:18;4635:6;4632:30;4629:50;;;4675:1;4672;4665:12;4629:50;4698:22;;4751:4;4743:13;;4739:27;-1:-1:-1;4729:55:1;;4780:1;4777;4770:12;4729:55;4816:2;4803:16;4838:4;4862:60;4878:43;4918:2;4878:43;:::i;:::-;4862:60;:::i;:::-;4956:15;;;5038:1;5034:10;;;;5026:19;;5022:28;;;4987:12;;;;5062:19;;;5059:39;;;5094:1;5091;5084:12;5059:39;5118:11;;;;5138:217;5154:6;5149:3;5146:15;5138:217;;;5234:3;5221:17;5251:31;5276:5;5251:31;:::i;:::-;5295:18;;5171:12;;;;5333;;;;5138:217;;;5374:5;-1:-1:-1;5398:35:1;;-1:-1:-1;5414:18:1;;;5398:35;:::i;:::-;5388:45;;;;;4403:1036;;;;;:::o;5444:388::-;5512:6;5520;5573:2;5561:9;5552:7;5548:23;5544:32;5541:52;;;5589:1;5586;5579:12;5541:52;5628:9;5615:23;5647:31;5672:5;5647:31;:::i;:::-;5697:5;-1:-1:-1;5754:2:1;5739:18;;5726:32;5767:33;5726:32;5767:33;:::i;5837:380::-;5916:1;5912:12;;;;5959;;;5980:61;;6034:4;6026:6;6022:17;6012:27;;5980:61;6087:2;6079:6;6076:14;6056:18;6053:38;6050:161;;6133:10;6128:3;6124:20;6121:1;6114:31;6168:4;6165:1;6158:15;6196:4;6193:1;6186:15;6222:127;6283:10;6278:3;6274:20;6271:1;6264:31;6314:4;6311:1;6304:15;6338:4;6335:1;6328:15;6354:125;6419:9;;;6440:10;;;6437:36;;;6453:18;;:::i;6737:135::-;6776:3;6797:17;;;6794:43;;6817:18;;:::i;:::-;-1:-1:-1;6864:1:1;6853:13;;6737:135::o;7156:245::-;7223:6;7276:2;7264:9;7255:7;7251:23;7247:32;7244:52;;;7292:1;7289;7282:12;7244:52;7324:9;7318:16;7343:28;7365:5;7343:28;:::i;7406:325::-;7608:2;7590:21;;;7647:1;7627:18;;;7620:29;-1:-1:-1;;;7680:2:1;7665:18;;7658:32;7722:2;7707:18;;7406:325::o;7736:168::-;7809:9;;;7840;;7857:15;;;7851:22;;7837:37;7827:71;;7878:18;;:::i;7909:128::-;7976:9;;;7997:11;;;7994:37;;;8011:18;;:::i;8377:217::-;8417:1;8443;8433:132;;8487:10;8482:3;8478:20;8475:1;8468:31;8522:4;8519:1;8512:15;8550:4;8547:1;8540:15;8433:132;-1:-1:-1;8579:9:1;;8377:217::o;8934:251::-;9004:6;9057:2;9045:9;9036:7;9032:23;9028:32;9025:52;;;9073:1;9070;9063:12;9025:52;9105:9;9099:16;9124:31;9149:5;9124:31;:::i;9190:127::-;9251:10;9246:3;9242:20;9239:1;9232:31;9282:4;9279:1;9272:15;9306:4;9303:1;9296:15;9322:729;9492:4;9540:2;9529:9;9525:18;9570:6;9559:9;9552:25;9596:2;9634;9629;9618:9;9614:18;9607:30;9657:6;9692;9686:13;9723:6;9715;9708:22;9761:2;9750:9;9746:18;9739:25;;9799:2;9791:6;9787:15;9773:29;;9820:1;9830:195;9844:6;9841:1;9838:13;9830:195;;;9909:13;;-1:-1:-1;;;;;9905:39:1;9893:52;;10000:15;;;;9965:12;;;;9941:1;9859:9;9830:195;;;-1:-1:-1;10042:3:1;;9322:729;-1:-1:-1;;;;;;;9322:729:1:o;10056:881::-;10151:6;10182:2;10225;10213:9;10204:7;10200:23;10196:32;10193:52;;;10241:1;10238;10231:12;10193:52;10274:9;10268:16;10307:18;10299:6;10296:30;10293:50;;;10339:1;10336;10329:12;10293:50;10362:22;;10415:4;10407:13;;10403:27;-1:-1:-1;10393:55:1;;10444:1;10441;10434:12;10393:55;10473:2;10467:9;10496:60;10512:43;10552:2;10512:43;:::i;10496:60::-;10590:15;;;10672:1;10668:10;;;;10660:19;;10656:28;;;10621:12;;;;10696:19;;;10693:39;;;10728:1;10725;10718:12;10693:39;10752:11;;;;10772:135;10788:6;10783:3;10780:15;10772:135;;;10854:10;;10842:23;;10805:12;;;;10885;;;;10772:135;;;10926:5;10056:881;-1:-1:-1;;;;;;;10056:881:1:o;10942:184::-;11012:6;11065:2;11053:9;11044:7;11040:23;11036:32;11033:52;;;11081:1;11078;11071:12;11033:52;-1:-1:-1;11104:16:1;;10942:184;-1:-1:-1;10942:184:1:o;12508:188::-;12587:13;;-1:-1:-1;;;;;12629:42:1;;12619:53;;12609:81;;12686:1;12683;12676:12;12701:450;12788:6;12796;12804;12857:2;12845:9;12836:7;12832:23;12828:32;12825:52;;;12873:1;12870;12863:12;12825:52;12896:40;12926:9;12896:40;:::i;:::-;12886:50;;12955:49;13000:2;12989:9;12985:18;12955:49;:::i;:::-;12945:59;;13047:2;13036:9;13032:18;13026:25;13091:10;13084:5;13080:22;13073:5;13070:33;13060:61;;13117:1;13114;13107:12;13060:61;13140:5;13130:15;;;12701:450;;;;;:::o

Swarm Source

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