FTM Testnet

Token

Aretis Creces Protocol (ARIS)
ERC-20

Overview

Max Total Supply

9,000,000 ARIS

Holders

3

Market

Fully Diluted Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
398.20525055 ARIS
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Aretis

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at testnet.ftmscan.com on 2022-06-25
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.7.4;

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IPancakeSwapPair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IPancakeSwapRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

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

interface IPancakeSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

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

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

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

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

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

interface IArisDAO {
    function getRelations(address _address) external view returns (address[10] memory);

    function setDaoReward(uint256 _amount) external;
}

interface IRouter {
    function swapBack() external;

    function addLiquidity(uint256 autoLiquidityAmount) external;
}

contract Aretis is ERC20Detailed, Ownable {
    using SafeMath for uint256;
    using SafeMathInt for int256;

    event LogRebase(uint256 indexed epoch, uint256 totalSupply);
    event LogRefferal(address indexed from, address indexed to, uint256 amount);

    string public _name = 'Aretis Creces Protocol';
    string public _symbol = 'ARIS';
    uint8 public _decimals = 8;

    mapping(address => bool) _isFeeExempt;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    uint256 public constant DECIMALS = 8;
    uint256 public constant MAX_UINT256 = ~uint256(0);
    uint8 public constant RATE_DECIMALS = 8;

    uint256 public liquidityFee = 20; //2%  only for buy
    uint256 public treasuryFee = 50; //5% only for sell
    uint256 public antiRiskFundFee = 30; //3% only for sell
    uint256 public daoFee = 60; //6% only for sell
    uint256 public firePitFee = 20; //2% only for sell
    uint256 public inviteFee = 100; //10% only for buy
    uint256 public feeDenominator = 1000;
    uint256 public totalInviteAmount = 0;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    address public autoLiquidityReceiver;
    address public treasuryReceiver;
    address public firePit;
    bool public swapEnabled = true;
    IPancakeSwapRouter public router;
    address public pair;
    address public usdtAddress;
    bool inSwap = false;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    uint256 private TOTAL_GONS;

    uint256 private constant MAX_SUPPLY = ~uint128(0) / 1e14;

    bool public _autoRebase;
    bool public _autoSwapBack;
    bool public _autoAddLiquidity;
    uint256 public _lastRebasedTime;
    uint256 public _lastAddLiquidityTime;
    uint256 public _totalSupply;
    uint256 private _gonsPerFragment;
    uint256 public pairBalance;
    mapping(address => uint256) private _gonBalances;
    mapping(address => mapping(address => uint256)) private _allowedFragments;
    mapping(address => bool) public blacklist;
    address public arisDaoAddress;
    uint256 public startTradingTime;
    uint256 public autoLiquidityInterval;

    constructor(
        address _swapRouter,
        address _usdt,
        address _autoLiquidityReceiver,
        address _firePit,
        uint256 _initSupply,
        uint256 _startTradingTime,
        address _DAO
    ) ERC20Detailed(_name, _symbol, uint8(DECIMALS)) Ownable() {
        require(_swapRouter != address(0), 'invalid swap router address');
        usdtAddress = _usdt;
        router = IPancakeSwapRouter(_swapRouter);
        pair = IPancakeSwapFactory(router.factory()).createPair(usdtAddress, address(this));
        require(_initSupply > 0, 'invalid init supply');
        _totalSupply = _initSupply * 10**DECIMALS;
        TOTAL_GONS = MAX_UINT256 / 1e10 - ((MAX_UINT256 / 1e10) % _totalSupply);
        autoLiquidityReceiver = _autoLiquidityReceiver;
        firePit = _firePit;
        arisDaoAddress = _DAO;
        _gonBalances[msg.sender] = TOTAL_GONS;
        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);
        _autoRebase = true;
        _autoSwapBack = true;
        _autoAddLiquidity = true;
        _isFeeExempt[msg.sender] = true;
        _isFeeExempt[address(this)] = true;
        _isFeeExempt[arisDaoAddress] = true;
        setStartTradingTime(_startTradingTime);
        autoLiquidityInterval = 10 minutes;

        emit Transfer(address(0x0), msg.sender, _totalSupply);
    }

    function manualRebase() external {
        require(shouldRebase(), 'rebase not required');
        rebase();
    }

    function rebase() internal {
        if (inSwap) return;
        uint256 rebaseRate = 15012;
        uint256 deltaTime = block.timestamp - _lastRebasedTime;
        uint256 times = deltaTime.div(10 minutes);
        uint256 epoch = times.mul(10);

        for (uint256 i = 0; i < times; i++) {
            _totalSupply = _totalSupply.mul((10**RATE_DECIMALS).add(rebaseRate)).div(10**RATE_DECIMALS);
        }

        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);
        _lastRebasedTime = _lastRebasedTime.add(times.mul(10 minutes));

        emit LogRebase(epoch, _totalSupply);
    }

    function setStartTradingTime(uint256 _time) public onlyOwner {
        startTradingTime = _time;
        if (_time > 0) {
            _lastAddLiquidityTime = _time;
            if (_lastRebasedTime == 0) {
                _lastRebasedTime = _time;
            }
        }
    }

    function transfer(address to, uint256 value) external override validRecipient(to) returns (bool) {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        if (_allowedFragments[from][msg.sender] != uint256(-1)) {
            _allowedFragments[from][msg.sender] = _allowedFragments[from][msg.sender].sub(
                value,
                'Insufficient Allowance'
            );
        }
        _transferFrom(from, to, value);
        return true;
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        uint256 gonAmount = amount.mul(_gonsPerFragment);
        if (from == pair) {
            pairBalance = pairBalance.sub(amount);
        } else {
            _gonBalances[from] = _gonBalances[from].sub(gonAmount);
        }
        if (to == pair) {
            pairBalance = pairBalance.add(amount);
        } else {
            _gonBalances[to] = _gonBalances[to].add(gonAmount);
        }
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(!blacklist[sender] && !blacklist[recipient], 'in-blacklist');

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (shouldRebase()) {
            rebase();
        }

        if (shouldAddLiquidity()) {
            addLiquidity();
        }

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

        uint256 gonAmount = amount.mul(_gonsPerFragment);
        if (recipient == pair && _isFeeExempt[sender] == false && _isFeeExempt[recipient] == false) {
            //only can sell 99% of balance
            if (gonAmount >= _gonBalances[sender].div(1000).mul(999)) {
                gonAmount = _gonBalances[sender].div(1000).mul(999);
            }
            //require(gonAmount<=_gonBalances[sender].mul(99).div(100),"only can sell 99% of balance");
        }
        if (sender == pair) {
            pairBalance = pairBalance.sub(amount);
        } else {
            _gonBalances[sender] = _gonBalances[sender].sub(gonAmount);
        }
        uint256 gonAmountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, gonAmount)
            : gonAmount;

        if (recipient == pair) {
            pairBalance = pairBalance.add(gonAmountReceived.div(_gonsPerFragment));
        } else {
            _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived);
        }

        emit Transfer(sender, recipient, gonAmountReceived.div(_gonsPerFragment));
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 gonAmount
    ) internal returns (uint256) {
        uint256 _totalFee = 0;
        uint256 _treasuryFee = treasuryFee;
        uint256 _robotsFee = 550;
        //sell token or transfer token
        if (sender != pair) {
            _totalFee = firePitFee.add(treasuryFee).add(daoFee).add(antiRiskFundFee); //when sell token .
            _gonBalances[firePit] = _gonBalances[firePit].add(gonAmount.div(feeDenominator).mul(firePitFee));
            _gonBalances[treasuryReceiver] = _gonBalances[treasuryReceiver].add(
                gonAmount.div(feeDenominator).mul(_treasuryFee.add(antiRiskFundFee))
            );
            _gonBalances[arisDaoAddress] = _gonBalances[arisDaoAddress].add(gonAmount.div(feeDenominator).mul(daoFee));
            IArisDAO(arisDaoAddress).setDaoReward(gonAmount.div(_gonsPerFragment).mul(daoFee).div(feeDenominator));
        }
        if (sender == pair) {
            //when buy token
            _totalFee = inviteFee.add(liquidityFee);
            _gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(
                gonAmount.div(feeDenominator).mul(liquidityFee)
            );
        }
        if (recipient == pair || sender == pair) {
            //sell token
            require(startTradingTime > 0 && block.timestamp >= startTradingTime, 'can not trade now!');
            if (block.timestamp <= startTradingTime + 6) {
                _totalFee = _totalFee.add(_robotsFee);
                _gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(
                    gonAmount.div(feeDenominator).mul(_robotsFee)
                );
            }
        }
        uint256 feeAmount = gonAmount.div(feeDenominator).mul(_totalFee);

        emit Transfer(sender, address(this), feeAmount.div(_gonsPerFragment));
        if (sender == pair) {
            totalInviteAmount = totalInviteAmount.add(
                gonAmount.div(_gonsPerFragment).mul(inviteFee).div(feeDenominator)
            );
            address[10] memory _parents = IArisDAO(arisDaoAddress).getRelations(recipient);
            for (uint8 i = 0; i < _parents.length; i++) {
                uint256 _parentFee = gonAmount.mul(5).div(1000);
                if (i == 0) {
                    _parentFee = gonAmount.mul(4).div(100);
                }
                if (i == 1) {
                    _parentFee = gonAmount.mul(2).div(100);
                }
                _gonBalances[_parents[i]] = _gonBalances[_parents[i]].add(_parentFee);
                emit LogRefferal(recipient, _parents[i], _parentFee.div(_gonsPerFragment));
                emit Transfer(recipient, _parents[i], _parentFee.div(_gonsPerFragment));
            }
        }

        return gonAmount.sub(feeAmount);
    }

    function addLiquidity() internal swapping {
        uint256 autoLiquidityAmount = _gonBalances[autoLiquidityReceiver].div(_gonsPerFragment);
        if (treasuryReceiver != address(0) && autoLiquidityAmount > 0) {
            _gonBalances[treasuryReceiver] = _gonBalances[treasuryReceiver].add(_gonBalances[autoLiquidityReceiver]);
            _gonBalances[autoLiquidityReceiver] = 0;

            IRouter(treasuryReceiver).addLiquidity(autoLiquidityAmount);
            _lastAddLiquidityTime = block.timestamp;
        }
    }

    function swapBack() internal swapping {
        if (treasuryReceiver != address(0)) {
            IRouter(treasuryReceiver).swapBack();
        }
    }

    function shouldTakeFee(address from, address to) internal view returns (bool) {
        return
            // (pair == from || pair == to) &&
            !_isFeeExempt[from] && !_isFeeExempt[to];
    }

    function shouldRebase() internal view returns (bool) {
        return
            _autoRebase &&
            (_totalSupply < MAX_SUPPLY) &&
            msg.sender != pair &&
            !inSwap &&
            block.timestamp >= (_lastRebasedTime + 10 minutes);
    }

    function shouldAddLiquidity() internal view returns (bool) {
        return
            _autoAddLiquidity &&
            !inSwap &&
            msg.sender != pair &&
            _lastAddLiquidityTime > 0 &&
            block.timestamp >= (_lastAddLiquidityTime + autoLiquidityInterval);
    }

    function shouldSwapBack() internal view returns (bool) {
        return _autoSwapBack && !inSwap && msg.sender != pair;
    }

    function setAutoRebase(bool _flag) external onlyOwner {
        if (_flag) {
            _autoRebase = _flag;
            _lastRebasedTime = block.timestamp;
        } else {
            _autoRebase = _flag;
        }
    }

    function setAutoSwapBack(bool _flag) external onlyOwner {
        _autoSwapBack = _flag;
    }

    function setAutoLiquidityInterval(uint256 _minutes) external onlyOwner {
        require(_minutes > 0, 'invalid time');
        autoLiquidityInterval = _minutes * 1 minutes;
    }

    function setAutoAddLiquidity(bool _flag) external onlyOwner {
        if (_flag) {
            _autoAddLiquidity = _flag;
            _lastAddLiquidityTime = block.timestamp;
        } else {
            _autoAddLiquidity = _flag;
        }
    }

    function setArisDaoAddress(address _address) external onlyOwner {
        require(_address != address(0), 'invalid address');

        arisDaoAddress = _address;
        _isFeeExempt[arisDaoAddress] = true;
    }

    function setArisTreasuryAddress(address _address) external onlyOwner {
        require(_address != address(0), 'invalid address');
        treasuryReceiver = _address;
        _isFeeExempt[treasuryReceiver] = true;
        _allowedFragments[treasuryReceiver][address(router)] = uint256(-1);
    }

    function allowance(address owner_, address spender) external view override returns (uint256) {
        return _allowedFragments[owner_][spender];
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        uint256 oldValue = _allowedFragments[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedFragments[msg.sender][spender] = 0;
        } else {
            _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }

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

    function checkFeeExempt(address _addr) external view returns (bool) {
        return _isFeeExempt[_addr];
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div(_gonsPerFragment);
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function manualSync() external {
        IPancakeSwapPair(pair).sync();
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _firePit) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        firePit = _firePit;
    }

    function setWhitelist(address[] memory _addrs) external onlyOwner {
        for (uint256 i = 0; i < _addrs.length; i++) {
            _isFeeExempt[_addrs[i]] = true;
        }
    }

    function setBlacklist(address _address, bool _flag) external onlyOwner {
        blacklist[_address] = _flag;
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address who) external view override returns (uint256) {
        if (who == pair) {
            return pairBalance;
        } else {
            return _gonBalances[who].div(_gonsPerFragment);
        }
    }

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_usdt","type":"address"},{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_firePit","type":"address"},{"internalType":"uint256","name":"_initSupply","type":"uint256"},{"internalType":"uint256","name":"_startTradingTime","type":"uint256"},{"internalType":"address","name":"_DAO","type":"address"}],"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":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","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":"amount","type":"uint256"}],"name":"LogRefferal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","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":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoSwapBack","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastAddLiquidityTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastRebasedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiRiskFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"arisDaoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePit","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePitFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inviteFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setArisDaoAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setArisTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minutes","type":"uint256"}],"name":"setAutoLiquidityInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_firePit","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setStartTradingTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addrs","type":"address[]"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalInviteAmount","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

Contract Creation Code

60806040526040518060400160405280601681526020017f417265746973204372656365732050726f746f636f6c00000000000000000000815250600390805190602001906200005192919062000c94565b506040518060400160405280600481526020017f4152495300000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000c94565b506008600560006101000a81548160ff021916908360ff16021790555060146007556032600855601e600955603c600a556014600b556064600c556103e8600d556000600e5561dead600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff0219169083151502179055506000601660146101000a81548160ff021916908315150217905550348015620001ad57600080fd5b5060405162005a4938038062005a49833981810160405260e0811015620001d357600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620002ba5780601f106200028e57610100808354040283529160200191620002ba565b820191906000526020600020905b8154815290600101906020018083116200029c57829003601f168201915b505050505060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620003595780601f106200032d5761010080835404028352916020019162000359565b820191906000526020600020905b8154815290600101906020018083116200033b57829003601f168201915b5050505050600882600090805190602001906200037892919062000c94565b5081600190805190602001906200039192919062000c94565b5080600260006101000a81548160ff021916908360ff16021790555050505033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141562000495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f696e76616c6964207377617020726f757465722061646472657373000000000081525060200191505060405180910390fd5b85601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200058057600080fd5b505afa15801562000595573d6000803e3d6000fd5b505050506040513d6020811015620005ac57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200066657600080fd5b505af11580156200067b573d6000803e3d6000fd5b505050506040513d60208110156200069257600080fd5b8101908080519060200190929190505050601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600083116200075a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420696e697420737570706c790000000000000000000000000081525060200191505060405180910390fd5b6008600a0a8302601b81905550601b546402540be400600019816200077b57fe5b04816200078457fe5b066402540be400600019816200079657fe5b040360178190555084601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601754601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620008c5601b5460175462000ad560201b62002a561790919060201c565b601c819055506001601860006101000a81548160ff0219169083151502179055506001601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a578262000b2760201b60201c565b6102586023819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b546040518082815260200191505060405180910390a35050505050505062000d4a565b600062000b1f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b7160201b60201c565b905092915050565b62000b3762000c3c60201b60201c565b62000b4157600080fd5b80602281905550600081111562000b6e5780601a819055506000601954141562000b6d57806019819055505b5b50565b6000808311829062000c21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000be557808201518184015260208101905062000bc8565b50505050905090810190601f16801562000c135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000c2e57fe5b049050809150509392505050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000ccc576000855562000d18565b82601f1062000ce757805160ff191683800117855562000d18565b8280016001018555821562000d18579182015b8281111562000d1757825182559160200191906001019062000cfa565b5b50905062000d27919062000d2b565b5090565b5b8082111562000d4657600081600090555060010162000d2c565b5090565b614cef8062000d5a6000396000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c806383b4ac68116101f4578063afb9cf6d1161011a578063d4399790116100ad578063f42176481161007c578063f421764814611010578063f887ea40146110c8578063f9d16a0d146110fc578063f9f92be41461112a576103ba565b8063d439979014610eca578063dd62ed3e14610f24578063e15beb8014610f9c578063f2fde38b14610fcc576103ba565b8063ca33e64c116100e9578063ca33e64c14610dc5578063cc32d17614610df9578063cfbac92f14610e17578063d28d885214610e47576103ba565b8063afb9cf6d14610ce6578063b09f126614610d06578063b38a436014610d89578063bf8c37d414610da7576103ba565b80639b2912cc11610192578063a6cf729311610161578063a6cf729314610bec578063a841a6b214610c0a578063a8aa1b3114610c4e578063a9059cbb14610c82576103ba565b80639b2912cc14610ae85780639c426ced14610b06578063a457c2d714610b24578063a4b45c0014610b88576103ba565b80638f32d59b116101ce5780638f32d59b146109f357806395d89b4114610a1357806398118cb414610a965780639ab4a44514610ab4576103ba565b806383b4ac68146109815780638c75ae07146109a15780638da5cb5b146109bf576103ba565b806332424aa3116102e457806361a9d1b11161027757806370ee73951161024657806370ee73951461092f578063715018a61461094f578063753d02a11461095957806376f1a40114610963576103ba565b806361a9d1b11461088d5780636912652c146108975780636ddd1713146108b757806370a08231146108d7576103ba565b80633eaaf86b116102b35780633eaaf86b146107ea57806349d98142146108085780634bc6dd181461083c5780635a604c521461086c576103ba565b806332424aa31461072957806332b756831461074a57806333a581d2146107685780633950935114610786576103ba565b806323b185151161035c5780632b112e491161032b5780632b112e49146106985780632cdc6e0d146106b65780632e0f2625146106ea578063313ce56714610708576103ba565b806323b185151461058457806323b872dd146105b2578063284dda31146106365780632957b8391461067a576103ba565b8063095ea7b311610398578063095ea7b314610494578063153b0d1e146104f8578063180b0d7e1461054857806318160ddd14610566576103ba565b80630671c5be146103bf57806306fdde03146103dd57806308b1fd8f14610460575b600080fd5b6103c7611184565b6040518082815260200191505060405180910390f35b6103e561118a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042557808201518184015260208101905061040a565b50505050905090810190601f1680156104525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61046861122c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e0600480360360408110156104aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611252565b60405180821515815260200191505060405180910390f35b6105466004803603604081101561050e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611344565b005b6105506113b0565b6040518082815260200191505060405180910390f35b61056e6113b6565b6040518082815260200191505060405180910390f35b6105b06004803603602081101561059a57600080fd5b81019080803590602001909291905050506113c0565b005b61061e600480360360608110156105c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113ff565b60405180821515815260200191505060405180910390f35b6106786004803603602081101561064c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061163e565b005b6106826117b0565b6040518082815260200191505060405180910390f35b6106a06117b6565b6040518082815260200191505060405180910390f35b6106be6118ba565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106f26118e0565b6040518082815260200191505060405180910390f35b6107106118e5565b604051808260ff16815260200191505060405180910390f35b6107316118fc565b604051808260ff16815260200191505060405180910390f35b61075261190f565b6040518082815260200191505060405180910390f35b610770611915565b6040518082815260200191505060405180910390f35b6107d26004803603604081101561079c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061191b565b60405180821515815260200191505060405180910390f35b6107f2611b17565b6040518082815260200191505060405180910390f35b610810611b1d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61086a6004803603602081101561085257600080fd5b81019080803515159060200190929190505050611b43565b005b610874611b71565b604051808260ff16815260200191505060405180910390f35b610895611b76565b005b61089f611bfa565b60405180821515815260200191505060405180910390f35b6108bf611c0d565b60405180821515815260200191505060405180910390f35b610919600480360360208110156108ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c20565b6040518082815260200191505060405180910390f35b610937611cde565b60405180821515815260200191505060405180910390f35b610957611cf1565b005b610961611dab565b005b61096b611e2f565b6040518082815260200191505060405180910390f35b610989611e35565b60405180821515815260200191505060405180910390f35b6109a9611e4d565b6040518082815260200191505060405180910390f35b6109c7611e53565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109fb611e7d565b60405180821515815260200191505060405180910390f35b610a1b611ed5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a5b578082015181840152602081019050610a40565b50505050905090810190601f168015610a885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a9e611f77565b6040518082815260200191505060405180910390f35b610abc611f7d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610af0611fa3565b6040518082815260200191505060405180910390f35b610b0e611fa9565b6040518082815260200191505060405180910390f35b610b7060048036036040811015610b3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611faf565b60405180821515815260200191505060405180910390f35b610bea60048036036040811015610b9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061223f565b005b610bf46122d6565b6040518082815260200191505060405180910390f35b610c4c60048036036020811015610c2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122dc565b005b610c56612533565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cce60048036036040811015610c9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612559565b60405180821515815260200191505060405180910390f35b610cee6125ad565b60405180821515815260200191505060405180910390f35b610d0e6125c0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d4e578082015181840152602081019050610d33565b50505050905090810190601f168015610d7b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d9161265e565b6040518082815260200191505060405180910390f35b610daf612664565b6040518082815260200191505060405180910390f35b610dcd61266a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e01612690565b6040518082815260200191505060405180910390f35b610e4560048036036020811015610e2d57600080fd5b81019080803515159060200190929190505050612696565b005b610e4f6126f1565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e8f578082015181840152602081019050610e74565b50505050905090810190601f168015610ebc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f0c60048036036020811015610ee057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061278f565b60405180821515815260200191505060405180910390f35b610f8660048036036040811015610f3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127e5565b6040518082815260200191505060405180910390f35b610fca60048036036020811015610fb257600080fd5b8101908080351515906020019092919050505061286c565b005b61100e60048036036020811015610fe257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128c7565b005b6110c66004803603602081101561102657600080fd5b810190808035906020019064010000000081111561104357600080fd5b82018360208201111561105557600080fd5b8035906020019184602083028401116401000000008311171561107757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506128e4565b005b6110d061297d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6111286004803603602081101561111257600080fd5b81019080803590602001909291905050506129a3565b005b61116c6004803603602081101561114057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a37565b60405180821515815260200191505060405180910390f35b60235481565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112225780601f106111f757610100808354040283529160200191611222565b820191906000526020600020905b81548152906001019060200180831161120557829003601f168201915b5050505050905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b61134c611e7d565b61135557600080fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6000601b54905090565b6113c8611e7d565b6113d157600080fd5b8060228190555060008111156113fc5780601a81905550600060195414156113fb57806019819055505b5b50565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561143c57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611626576115a5836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa09092919063ffffffff16565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611631858585612b60565b5060019150509392505050565b611646611e7d565b61164f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b80602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a5481565b60006118b5601c546118a7601e6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611899601e6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546017546131b990919063ffffffff16565b6131b990919063ffffffff16565b612a5690919063ffffffff16565b905090565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881565b6000600260009054906101000a900460ff16905090565b600560009054906101000a900460ff1681565b60195481565b60001981565b60006119ac82601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b601b5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b4b611e7d565b611b5457600080fd5b80601860016101000a81548160ff02191690831515021790555050565b600881565b611b7e61328b565b611bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f726562617365206e6f742072657175697265640000000000000000000000000081525060200191505060405180910390fd5b611bf8613369565b565b601860029054906101000a900460ff1681565b601360149054906101000a900460ff1681565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c8257601d549050611cd9565b611cd6601c54601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b90505b919050565b601860019054906101000a900460ff1681565b611cf9611e7d565b611d0257600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b50505050565b60225481565b6000601660149054906101000a900460ff1615905090565b60095481565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f6d5780601f10611f4257610100808354040283529160200191611f6d565b820191906000526020600020905b815481529060010190602001808311611f5057829003601f168201915b5050505050905090565b60075481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b600e5481565b600080601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083106120bf576000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612153565b6120d283826131b990919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b612247611e7d565b61225057600080fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600b5481565b6122e4611e7d565b6122ed57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561259657600080fd5b6125a1338585612b60565b50600191505092915050565b601860009054906101000a900460ff1681565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126565780601f1061262b57610100808354040283529160200191612656565b820191906000526020600020905b81548152906001019060200180831161263957829003601f168201915b505050505081565b600c5481565b601d5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b61269e611e7d565b6126a757600080fd5b80156126d35780601860026101000a81548160ff02191690831515021790555042601a819055506126ee565b80601860026101000a81548160ff0219169083151502179055505b50565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127875780601f1061275c57610100808354040283529160200191612787565b820191906000526020600020905b81548152906001019060200180831161276a57829003601f168201915b505050505081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612874611e7d565b61287d57600080fd5b80156128a95780601860006101000a81548160ff021916908315150217905550426019819055506128c4565b80601860006101000a81548160ff0219169083151502179055505b50565b6128cf611e7d565b6128d857600080fd5b6128e1816134b7565b50565b6128ec611e7d565b6128f557600080fd5b60005b81518110156129795760016006600084848151811061291357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506128f8565b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129ab611e7d565b6129b457600080fd5b60008111612a2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e76616c69642074696d65000000000000000000000000000000000000000081525060200191505060405180910390fd5b603c810260238190555050565b602080528060005260406000206000915054906101000a900460ff1681565b6000612a9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135b1565b905092915050565b6000838311158290612b4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b12578082015181840152602081019050612af7565b50505050905090810190601f168015612b3f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c065750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e2d626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601660149054906101000a900460ff1615612c9f57612c98848484613677565b90506131b2565b612ca761328b565b15612cb557612cb4613369565b5b612cbd6138b5565b15612ccb57612cca61395f565b5b612cd3613cac565b15612ce157612ce0613d36565b5b6000612cf8601c5484613e4790919063ffffffff16565b9050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612da7575060001515600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612e03575060001515600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612ee257612e706103e7612e626103e8601e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b613e4790919063ffffffff16565b8110612ee157612ede6103e7612ed06103e8601e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b613e4790919063ffffffff16565b90505b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612f5857612f4d83601d546131b990919063ffffffff16565b601d81905550612fee565b612faa81601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b990919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000612ffa8686613ecd565b6130045781613010565b61300f868684613f7b565b5b9050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561309c57613091613080601c5483612a5690919063ffffffff16565b601d5461320390919063ffffffff16565b601d81905550613132565b6130ee81601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613196601c5485612a5690919063ffffffff16565b6040518082815260200191505060405180910390a36001925050505b9392505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612aa0565b905092915050565b600080828401905083811015613281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000601860009054906101000a900460ff1680156132df5750655af3107a40006000196fffffffffffffffffffffffffffffffff16816132c757fe5b046fffffffffffffffffffffffffffffffff16601b54105b80156133395750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156133525750601660149054906101000a900460ff16155b80156133645750610258601954014210155b905090565b601660149054906101000a900460ff1615613383576134b5565b6000613aa4905060006019544203905060006133aa61025883612a5690919063ffffffff16565b905060006133c2600a83613e4790919063ffffffff16565b905060005b8281101561342957613416600860ff16600a0a6134086133f788600860ff16600a0a61320390919063ffffffff16565b601b54613e4790919063ffffffff16565b612a5690919063ffffffff16565b601b8190555080806001019150506133c7565b50613441601b54601754612a5690919063ffffffff16565b601c8190555061347061345f61025884613e4790919063ffffffff16565b60195461320390919063ffffffff16565b601981905550807f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601b546040518082815260200191505060405180910390a2505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134f157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829061365d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613622578082015181840152602081019050613607565b50505050905090810190601f16801561364f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161366957fe5b049050809150509392505050565b60008061368f601c5484613e4790919063ffffffff16565b9050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613707576136fc83601d546131b990919063ffffffff16565b601d8190555061379d565b61375981601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b990919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156138135761380883601d5461320390919063ffffffff16565b601d819055506138a9565b61386581601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60019150509392505050565b6000601860029054906101000a900460ff1680156138e05750601660149054906101000a900460ff16155b801561393a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b801561394857506000601a54115b801561395a5750602354601a54014210155b905090565b6001601660146101000a81548160ff02191690831515021790555060006139f2601c54601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613a535750600081115b15613c8e57613b2d601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351c6590a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613c6e57600080fd5b505af1158015613c82573d6000803e3d6000fd5b5050505042601a819055505b506000601660146101000a81548160ff021916908315150217905550565b6000601860019054906101000a900460ff168015613cd75750601660149054906101000a900460ff16155b8015613d315750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b905090565b6001601660146101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e2a57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ac5eeee6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e1157600080fd5b505af1158015613e25573d6000803e3d6000fd5b505050505b6000601660146101000a81548160ff021916908315150217905550565b600080831415613e5a5760009050613ec7565b6000828402905082848281613e6b57fe5b0414613ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614c996021913960400191505060405180910390fd5b809150505b92915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f735750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600090506000600854905060006102269050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461440557614024600954614016600a54614008600854600b5461320390919063ffffffff16565b61320390919063ffffffff16565b61320390919063ffffffff16565b92506140c2614052600b54614044600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141d56141656141426009548561320390919063ffffffff16565b614157600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142d6614266600a54614258600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f21105b06143b6600d546143a8600a5461439a601c548c612a5690919063ffffffff16565b613e4790919063ffffffff16565b612a5690919063ffffffff16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156143ec57600080fd5b505af1158015614400573d6000803e3d6000fd5b505050505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561457657614472600754600c5461320390919063ffffffff16565b92506145106144a0600754614492600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061461f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b156147cc57600060225411801561463857506022544210155b6146aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e206e6f74207472616465206e6f7721000000000000000000000000000081525060200191505060405180910390fd5b60066022540142116147cb576146c9818461320390919063ffffffff16565b92506147656146f5826146e7600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b60006147f5846147e7600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b90503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61485b601c5485612a5690919063ffffffff16565b6040518082815260200191505060405180910390a3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415614c7857614917614906600d546148f8600c546148ea601c548c612a5690919063ffffffff16565b613e4790919063ffffffff16565b612a5690919063ffffffff16565b600e5461320390919063ffffffff16565b600e819055506000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c5c6425896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506101406040518083038186803b1580156149a957600080fd5b505afa1580156149bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101408110156149e357600080fd5b8101908091905050905060005b600a8160ff161015614c75576000614a266103e8614a1860058c613e4790919063ffffffff16565b612a5690919063ffffffff16565b905060008260ff161415614a5e57614a5b6064614a4d60048c613e4790919063ffffffff16565b612a5690919063ffffffff16565b90505b60018260ff161415614a9457614a916064614a8360028c613e4790919063ffffffff16565b612a5690919063ffffffff16565b90505b614af981601e6000868660ff16600a8110614aab57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000858560ff16600a8110614b0c57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828260ff16600a8110614b5e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f3f55f24e2841e2fc4b59aa760304e5f0c009e13416f1f0fed15edee5553f8578614bc6601c5485612a5690919063ffffffff16565b6040518082815260200191505060405180910390a3828260ff16600a8110614bea57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614c52601c5485612a5690919063ffffffff16565b6040518082815260200191505060405180910390a35080806001019150506149f0565b50505b614c8b81876131b990919063ffffffff16565b945050505050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220bf6dee1e238191f78171325204ea9f35f7deb302d1e5decaa5dc51b39494c32164736f6c63430007060033000000000000000000000000d38eff163a0786ae3d2c608158ba275877754fe1000000000000000000000000ccf3579cbfb3d27640320a7bba186687ef9fe02400000000000000000000000064d25c5a2129ed5a98474f2cc77596332f9187ad000000000000000000000000cfd1e1e31d0a400a2f56efa784576d0bdbb191f000000000000000000000000000000000000000000000000000000000008954400000000000000000000000000000000000000000000000000000000062b6b1dc0000000000000000000000009b1e27c44f332c398e4e76f99e7a76c384ba0612

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103ba5760003560e01c806383b4ac68116101f4578063afb9cf6d1161011a578063d4399790116100ad578063f42176481161007c578063f421764814611010578063f887ea40146110c8578063f9d16a0d146110fc578063f9f92be41461112a576103ba565b8063d439979014610eca578063dd62ed3e14610f24578063e15beb8014610f9c578063f2fde38b14610fcc576103ba565b8063ca33e64c116100e9578063ca33e64c14610dc5578063cc32d17614610df9578063cfbac92f14610e17578063d28d885214610e47576103ba565b8063afb9cf6d14610ce6578063b09f126614610d06578063b38a436014610d89578063bf8c37d414610da7576103ba565b80639b2912cc11610192578063a6cf729311610161578063a6cf729314610bec578063a841a6b214610c0a578063a8aa1b3114610c4e578063a9059cbb14610c82576103ba565b80639b2912cc14610ae85780639c426ced14610b06578063a457c2d714610b24578063a4b45c0014610b88576103ba565b80638f32d59b116101ce5780638f32d59b146109f357806395d89b4114610a1357806398118cb414610a965780639ab4a44514610ab4576103ba565b806383b4ac68146109815780638c75ae07146109a15780638da5cb5b146109bf576103ba565b806332424aa3116102e457806361a9d1b11161027757806370ee73951161024657806370ee73951461092f578063715018a61461094f578063753d02a11461095957806376f1a40114610963576103ba565b806361a9d1b11461088d5780636912652c146108975780636ddd1713146108b757806370a08231146108d7576103ba565b80633eaaf86b116102b35780633eaaf86b146107ea57806349d98142146108085780634bc6dd181461083c5780635a604c521461086c576103ba565b806332424aa31461072957806332b756831461074a57806333a581d2146107685780633950935114610786576103ba565b806323b185151161035c5780632b112e491161032b5780632b112e49146106985780632cdc6e0d146106b65780632e0f2625146106ea578063313ce56714610708576103ba565b806323b185151461058457806323b872dd146105b2578063284dda31146106365780632957b8391461067a576103ba565b8063095ea7b311610398578063095ea7b314610494578063153b0d1e146104f8578063180b0d7e1461054857806318160ddd14610566576103ba565b80630671c5be146103bf57806306fdde03146103dd57806308b1fd8f14610460575b600080fd5b6103c7611184565b6040518082815260200191505060405180910390f35b6103e561118a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042557808201518184015260208101905061040a565b50505050905090810190601f1680156104525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61046861122c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e0600480360360408110156104aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611252565b60405180821515815260200191505060405180910390f35b6105466004803603604081101561050e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611344565b005b6105506113b0565b6040518082815260200191505060405180910390f35b61056e6113b6565b6040518082815260200191505060405180910390f35b6105b06004803603602081101561059a57600080fd5b81019080803590602001909291905050506113c0565b005b61061e600480360360608110156105c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113ff565b60405180821515815260200191505060405180910390f35b6106786004803603602081101561064c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061163e565b005b6106826117b0565b6040518082815260200191505060405180910390f35b6106a06117b6565b6040518082815260200191505060405180910390f35b6106be6118ba565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106f26118e0565b6040518082815260200191505060405180910390f35b6107106118e5565b604051808260ff16815260200191505060405180910390f35b6107316118fc565b604051808260ff16815260200191505060405180910390f35b61075261190f565b6040518082815260200191505060405180910390f35b610770611915565b6040518082815260200191505060405180910390f35b6107d26004803603604081101561079c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061191b565b60405180821515815260200191505060405180910390f35b6107f2611b17565b6040518082815260200191505060405180910390f35b610810611b1d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61086a6004803603602081101561085257600080fd5b81019080803515159060200190929190505050611b43565b005b610874611b71565b604051808260ff16815260200191505060405180910390f35b610895611b76565b005b61089f611bfa565b60405180821515815260200191505060405180910390f35b6108bf611c0d565b60405180821515815260200191505060405180910390f35b610919600480360360208110156108ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c20565b6040518082815260200191505060405180910390f35b610937611cde565b60405180821515815260200191505060405180910390f35b610957611cf1565b005b610961611dab565b005b61096b611e2f565b6040518082815260200191505060405180910390f35b610989611e35565b60405180821515815260200191505060405180910390f35b6109a9611e4d565b6040518082815260200191505060405180910390f35b6109c7611e53565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109fb611e7d565b60405180821515815260200191505060405180910390f35b610a1b611ed5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a5b578082015181840152602081019050610a40565b50505050905090810190601f168015610a885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a9e611f77565b6040518082815260200191505060405180910390f35b610abc611f7d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610af0611fa3565b6040518082815260200191505060405180910390f35b610b0e611fa9565b6040518082815260200191505060405180910390f35b610b7060048036036040811015610b3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611faf565b60405180821515815260200191505060405180910390f35b610bea60048036036040811015610b9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061223f565b005b610bf46122d6565b6040518082815260200191505060405180910390f35b610c4c60048036036020811015610c2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122dc565b005b610c56612533565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cce60048036036040811015610c9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612559565b60405180821515815260200191505060405180910390f35b610cee6125ad565b60405180821515815260200191505060405180910390f35b610d0e6125c0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d4e578082015181840152602081019050610d33565b50505050905090810190601f168015610d7b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d9161265e565b6040518082815260200191505060405180910390f35b610daf612664565b6040518082815260200191505060405180910390f35b610dcd61266a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e01612690565b6040518082815260200191505060405180910390f35b610e4560048036036020811015610e2d57600080fd5b81019080803515159060200190929190505050612696565b005b610e4f6126f1565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e8f578082015181840152602081019050610e74565b50505050905090810190601f168015610ebc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f0c60048036036020811015610ee057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061278f565b60405180821515815260200191505060405180910390f35b610f8660048036036040811015610f3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127e5565b6040518082815260200191505060405180910390f35b610fca60048036036020811015610fb257600080fd5b8101908080351515906020019092919050505061286c565b005b61100e60048036036020811015610fe257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128c7565b005b6110c66004803603602081101561102657600080fd5b810190808035906020019064010000000081111561104357600080fd5b82018360208201111561105557600080fd5b8035906020019184602083028401116401000000008311171561107757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506128e4565b005b6110d061297d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6111286004803603602081101561111257600080fd5b81019080803590602001909291905050506129a3565b005b61116c6004803603602081101561114057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a37565b60405180821515815260200191505060405180910390f35b60235481565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112225780601f106111f757610100808354040283529160200191611222565b820191906000526020600020905b81548152906001019060200180831161120557829003601f168201915b5050505050905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b61134c611e7d565b61135557600080fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6000601b54905090565b6113c8611e7d565b6113d157600080fd5b8060228190555060008111156113fc5780601a81905550600060195414156113fb57806019819055505b5b50565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561143c57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611626576115a5836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa09092919063ffffffff16565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611631858585612b60565b5060019150509392505050565b611646611e7d565b61164f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b80602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a5481565b60006118b5601c546118a7601e6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611899601e6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546017546131b990919063ffffffff16565b6131b990919063ffffffff16565b612a5690919063ffffffff16565b905090565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881565b6000600260009054906101000a900460ff16905090565b600560009054906101000a900460ff1681565b60195481565b60001981565b60006119ac82601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b601b5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b4b611e7d565b611b5457600080fd5b80601860016101000a81548160ff02191690831515021790555050565b600881565b611b7e61328b565b611bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f726562617365206e6f742072657175697265640000000000000000000000000081525060200191505060405180910390fd5b611bf8613369565b565b601860029054906101000a900460ff1681565b601360149054906101000a900460ff1681565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c8257601d549050611cd9565b611cd6601c54601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b90505b919050565b601860019054906101000a900460ff1681565b611cf9611e7d565b611d0257600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b50505050565b60225481565b6000601660149054906101000a900460ff1615905090565b60095481565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f6d5780601f10611f4257610100808354040283529160200191611f6d565b820191906000526020600020905b815481529060010190602001808311611f5057829003601f168201915b5050505050905090565b60075481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b600e5481565b600080601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083106120bf576000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612153565b6120d283826131b990919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b612247611e7d565b61225057600080fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600b5481565b6122e4611e7d565b6122ed57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561259657600080fd5b6125a1338585612b60565b50600191505092915050565b601860009054906101000a900460ff1681565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126565780601f1061262b57610100808354040283529160200191612656565b820191906000526020600020905b81548152906001019060200180831161263957829003601f168201915b505050505081565b600c5481565b601d5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b61269e611e7d565b6126a757600080fd5b80156126d35780601860026101000a81548160ff02191690831515021790555042601a819055506126ee565b80601860026101000a81548160ff0219169083151502179055505b50565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127875780601f1061275c57610100808354040283529160200191612787565b820191906000526020600020905b81548152906001019060200180831161276a57829003601f168201915b505050505081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612874611e7d565b61287d57600080fd5b80156128a95780601860006101000a81548160ff021916908315150217905550426019819055506128c4565b80601860006101000a81548160ff0219169083151502179055505b50565b6128cf611e7d565b6128d857600080fd5b6128e1816134b7565b50565b6128ec611e7d565b6128f557600080fd5b60005b81518110156129795760016006600084848151811061291357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506128f8565b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129ab611e7d565b6129b457600080fd5b60008111612a2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e76616c69642074696d65000000000000000000000000000000000000000081525060200191505060405180910390fd5b603c810260238190555050565b602080528060005260406000206000915054906101000a900460ff1681565b6000612a9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135b1565b905092915050565b6000838311158290612b4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b12578082015181840152602081019050612af7565b50505050905090810190601f168015612b3f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c065750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e2d626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601660149054906101000a900460ff1615612c9f57612c98848484613677565b90506131b2565b612ca761328b565b15612cb557612cb4613369565b5b612cbd6138b5565b15612ccb57612cca61395f565b5b612cd3613cac565b15612ce157612ce0613d36565b5b6000612cf8601c5484613e4790919063ffffffff16565b9050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612da7575060001515600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612e03575060001515600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612ee257612e706103e7612e626103e8601e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b613e4790919063ffffffff16565b8110612ee157612ede6103e7612ed06103e8601e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b613e4790919063ffffffff16565b90505b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612f5857612f4d83601d546131b990919063ffffffff16565b601d81905550612fee565b612faa81601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b990919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000612ffa8686613ecd565b6130045781613010565b61300f868684613f7b565b5b9050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561309c57613091613080601c5483612a5690919063ffffffff16565b601d5461320390919063ffffffff16565b601d81905550613132565b6130ee81601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613196601c5485612a5690919063ffffffff16565b6040518082815260200191505060405180910390a36001925050505b9392505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612aa0565b905092915050565b600080828401905083811015613281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000601860009054906101000a900460ff1680156132df5750655af3107a40006000196fffffffffffffffffffffffffffffffff16816132c757fe5b046fffffffffffffffffffffffffffffffff16601b54105b80156133395750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156133525750601660149054906101000a900460ff16155b80156133645750610258601954014210155b905090565b601660149054906101000a900460ff1615613383576134b5565b6000613aa4905060006019544203905060006133aa61025883612a5690919063ffffffff16565b905060006133c2600a83613e4790919063ffffffff16565b905060005b8281101561342957613416600860ff16600a0a6134086133f788600860ff16600a0a61320390919063ffffffff16565b601b54613e4790919063ffffffff16565b612a5690919063ffffffff16565b601b8190555080806001019150506133c7565b50613441601b54601754612a5690919063ffffffff16565b601c8190555061347061345f61025884613e4790919063ffffffff16565b60195461320390919063ffffffff16565b601981905550807f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601b546040518082815260200191505060405180910390a2505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134f157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829061365d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613622578082015181840152602081019050613607565b50505050905090810190601f16801561364f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161366957fe5b049050809150509392505050565b60008061368f601c5484613e4790919063ffffffff16565b9050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613707576136fc83601d546131b990919063ffffffff16565b601d8190555061379d565b61375981601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b990919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156138135761380883601d5461320390919063ffffffff16565b601d819055506138a9565b61386581601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60019150509392505050565b6000601860029054906101000a900460ff1680156138e05750601660149054906101000a900460ff16155b801561393a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b801561394857506000601a54115b801561395a5750602354601a54014210155b905090565b6001601660146101000a81548160ff02191690831515021790555060006139f2601c54601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613a535750600081115b15613c8e57613b2d601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351c6590a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613c6e57600080fd5b505af1158015613c82573d6000803e3d6000fd5b5050505042601a819055505b506000601660146101000a81548160ff021916908315150217905550565b6000601860019054906101000a900460ff168015613cd75750601660149054906101000a900460ff16155b8015613d315750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b905090565b6001601660146101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e2a57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ac5eeee6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e1157600080fd5b505af1158015613e25573d6000803e3d6000fd5b505050505b6000601660146101000a81548160ff021916908315150217905550565b600080831415613e5a5760009050613ec7565b6000828402905082848281613e6b57fe5b0414613ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614c996021913960400191505060405180910390fd5b809150505b92915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f735750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600090506000600854905060006102269050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461440557614024600954614016600a54614008600854600b5461320390919063ffffffff16565b61320390919063ffffffff16565b61320390919063ffffffff16565b92506140c2614052600b54614044600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141d56141656141426009548561320390919063ffffffff16565b614157600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142d6614266600a54614258600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f21105b06143b6600d546143a8600a5461439a601c548c612a5690919063ffffffff16565b613e4790919063ffffffff16565b612a5690919063ffffffff16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156143ec57600080fd5b505af1158015614400573d6000803e3d6000fd5b505050505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561457657614472600754600c5461320390919063ffffffff16565b92506145106144a0600754614492600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061461f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b156147cc57600060225411801561463857506022544210155b6146aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e206e6f74207472616465206e6f7721000000000000000000000000000081525060200191505060405180910390fd5b60066022540142116147cb576146c9818461320390919063ffffffff16565b92506147656146f5826146e7600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b60006147f5846147e7600d5489612a5690919063ffffffff16565b613e4790919063ffffffff16565b90503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61485b601c5485612a5690919063ffffffff16565b6040518082815260200191505060405180910390a3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415614c7857614917614906600d546148f8600c546148ea601c548c612a5690919063ffffffff16565b613e4790919063ffffffff16565b612a5690919063ffffffff16565b600e5461320390919063ffffffff16565b600e819055506000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c5c6425896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506101406040518083038186803b1580156149a957600080fd5b505afa1580156149bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101408110156149e357600080fd5b8101908091905050905060005b600a8160ff161015614c75576000614a266103e8614a1860058c613e4790919063ffffffff16565b612a5690919063ffffffff16565b905060008260ff161415614a5e57614a5b6064614a4d60048c613e4790919063ffffffff16565b612a5690919063ffffffff16565b90505b60018260ff161415614a9457614a916064614a8360028c613e4790919063ffffffff16565b612a5690919063ffffffff16565b90505b614af981601e6000868660ff16600a8110614aab57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320390919063ffffffff16565b601e6000858560ff16600a8110614b0c57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828260ff16600a8110614b5e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f3f55f24e2841e2fc4b59aa760304e5f0c009e13416f1f0fed15edee5553f8578614bc6601c5485612a5690919063ffffffff16565b6040518082815260200191505060405180910390a3828260ff16600a8110614bea57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614c52601c5485612a5690919063ffffffff16565b6040518082815260200191505060405180910390a35080806001019150506149f0565b50505b614c8b81876131b990919063ffffffff16565b945050505050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220bf6dee1e238191f78171325204ea9f35f7deb302d1e5decaa5dc51b39494c32164736f6c63430007060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d38eff163a0786ae3d2c608158ba275877754fe1000000000000000000000000ccf3579cbfb3d27640320a7bba186687ef9fe02400000000000000000000000064d25c5a2129ed5a98474f2cc77596332f9187ad000000000000000000000000cfd1e1e31d0a400a2f56efa784576d0bdbb191f000000000000000000000000000000000000000000000000000000000008954400000000000000000000000000000000000000000000000000000000062b6b1dc0000000000000000000000009b1e27c44f332c398e4e76f99e7a76c384ba0612

-----Decoded View---------------
Arg [0] : _swapRouter (address): 0xd38eFF163A0786Ae3d2c608158Ba275877754FE1
Arg [1] : _usdt (address): 0xcCF3579CBfb3D27640320A7bbA186687Ef9fE024
Arg [2] : _autoLiquidityReceiver (address): 0x64d25c5a2129Ed5A98474F2cC77596332F9187Ad
Arg [3] : _firePit (address): 0xCFd1e1e31D0a400A2f56Efa784576D0Bdbb191f0
Arg [4] : _initSupply (uint256): 9000000
Arg [5] : _startTradingTime (uint256): 1656140252
Arg [6] : _DAO (address): 0x9B1e27c44f332c398E4e76f99E7a76C384Ba0612

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000d38eff163a0786ae3d2c608158ba275877754fe1
Arg [1] : 000000000000000000000000ccf3579cbfb3d27640320a7bba186687ef9fe024
Arg [2] : 00000000000000000000000064d25c5a2129ed5a98474f2cc77596332f9187ad
Arg [3] : 000000000000000000000000cfd1e1e31d0a400a2f56efa784576d0bdbb191f0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000895440
Arg [5] : 0000000000000000000000000000000000000000000000000000000062b6b1dc
Arg [6] : 0000000000000000000000009b1e27c44f332c398e4e76f99e7a76c384ba0612


Deployed Bytecode Sourcemap

14106:16254:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16363:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13529:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15396:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28595:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29692:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15135:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29817:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18504:285;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18979:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27084:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14971:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28945:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16289:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14648:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13715:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14465:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15919:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14691:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28278:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16000:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15434:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26529:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14747:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17766:117;;;:::i;:::-;;15883:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15463:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29927:232;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15851:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12740:126;;;:::i;:::-;;29216:79;;;:::i;:::-;;16325:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29123:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14910:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12475:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12640:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13620:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14795:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15565:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15957:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15178;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27779:491;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29303:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15023:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27309:301;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15539:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18797:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15821:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14428:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15079;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16073:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15353:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14853:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26823:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14375:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28824:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27618:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26291:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12874:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29499:185;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15500:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26633:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16241:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16363:36;;;;:::o;13529:83::-;13566:13;13599:5;13592:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13529:83;:::o;15396:31::-;;;;;;;;;;;;;:::o;28595:221::-;28671:4;28729:5;28688:17;:29;28706:10;28688:29;;;;;;;;;;;;;;;:38;28718:7;28688:38;;;;;;;;;;;;;;;:46;;;;28771:7;28750:36;;28759:10;28750:36;;;28780:5;28750:36;;;;;;;;;;;;;;;;;;28804:4;28797:11;;28595:221;;;;:::o;29692:117::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;29796:5:::1;29774:9;:19;29784:8;29774:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;29692:117:::0;;:::o;15135:36::-;;;;:::o;29817:102::-;29872:7;29899:12;;29892:19;;29817:102;:::o;18504:285::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;18595:5:::1;18576:16;:24;;;;18623:1;18615:5;:9;18611:171;;;18665:5;18641:21;:29;;;;18709:1;18689:16;;:21;18685:86;;;18750:5;18731:16;:24;;;;18685:86;18611:171;18504:285:::0;:::o;18979:472::-;19122:4;19109:2;14615:3;14601:18;;:2;:18;;;;14593:27;;;;;;19190:2:::1;19143:17;:23;19161:4;19143:23;;;;;;;;;;;;;;;:35;19167:10;19143:35;;;;;;;;;;;;;;;;:50;19139:242;;19248:121;19306:5;19248:121;;;;;;;;;;;;;;;;::::0;:17:::1;:23;19266:4;19248:23;;;;;;;;;;;;;;;:35;19272:10;19248:35;;;;;;;;;;;;;;;;:39;;:121;;;;;:::i;:::-;19210:17;:23;19228:4;19210:23;;;;;;;;;;;;;;;:35;19234:10;19210:35;;;;;;;;;;;;;;;:159;;;;19139:242;19391:30;19405:4;19411:2;19415:5;19391:13;:30::i;:::-;;19439:4;19432:11;;18979:472:::0;;;;;;:::o;27084:217::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;27187:1:::1;27167:22;;:8;:22;;;;27159:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;27239:8;27222:14;;:25;;;;;;;;;;;;;;;;;;27289:4;27258:12;:28;27271:14;;;;;;;;;;;27258:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;27084:217:::0;:::o;14971:26::-;;;;:::o;28945:170::-;28998:7;29025:82;29090:16;;29026:58;29065:12;:18;29078:4;;;;;;;;;;;29065:18;;;;;;;;;;;;;;;;29026:34;29041:12;:18;29054:4;;;;;;;;;;;29041:18;;;;;;;;;;;;;;;;29026:10;;:14;;:34;;;;:::i;:::-;:38;;:58;;;;:::i;:::-;29025:64;;:82;;;;:::i;:::-;29018:89;;28945:170;:::o;16289:29::-;;;;;;;;;;;;;:::o;14648:36::-;14683:1;14648:36;:::o;13715:83::-;13756:5;13781:9;;;;;;;;;;;13774:16;;13715:83;:::o;14465:26::-;;;;;;;;;;;;;:::o;15919:31::-;;;;:::o;14691:49::-;14738:1;14729:11;14691:49;:::o;28278:309::-;28360:4;28418:54;28461:10;28418:17;:29;28436:10;28418:29;;;;;;;;;;;;;;;:38;28448:7;28418:38;;;;;;;;;;;;;;;;:42;;:54;;;;:::i;:::-;28377:17;:29;28395:10;28377:29;;;;;;;;;;;;;;;:38;28407:7;28377:38;;;;;;;;;;;;;;;:95;;;;28509:7;28488:69;;28497:10;28488:69;;;28518:17;:29;28536:10;28518:29;;;;;;;;;;;;;;;:38;28548:7;28518:38;;;;;;;;;;;;;;;;28488:69;;;;;;;;;;;;;;;;;;28575:4;28568:11;;28278:309;;;;:::o;16000:27::-;;;;:::o;15434:22::-;;;;;;;;;;;;;:::o;26529:96::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;26612:5:::1;26596:13;;:21;;;;;;;;;;;;;;;;;;26529:96:::0;:::o;14747:39::-;14785:1;14747:39;:::o;17766:117::-;17818:14;:12;:14::i;:::-;17810:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17867:8;:6;:8::i;:::-;17766:117::o;15883:29::-;;;;;;;;;;;;;:::o;15463:30::-;;;;;;;;;;;;;:::o;29927:232::-;29991:7;30022:4;;;;;;;;;;;30015:11;;:3;:11;;;30011:141;;;30050:11;;30043:18;;;;30011:141;30101:39;30123:16;;30101:12;:17;30114:3;30101:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;30094:46;;29927:232;;;;:::o;15851:25::-;;;;;;;;;;;;;:::o;12740:126::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;12821:6:::1;;;;;;;;;;;12802:26;;;;;;;;;;;;12856:1;12839:6;;:19;;;;;;;;;;;;;;;;;;12740:126::o:0;29216:79::-;29275:4;;;;;;;;;;;29258:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29216:79::o;16325:31::-;;;;:::o;29123:85::-;29169:4;29194:6;;;;;;;;;;;29193:7;29186:14;;29123:85;:::o;14910:35::-;;;;:::o;12475:79::-;12513:7;12540:6;;;;;;;;;;;12533:13;;12475:79;:::o;12640:92::-;12680:4;12718:6;;;;;;;;;;;12704:20;;:10;:20;;;12697:27;;12640:92;:::o;13620:87::-;13659:13;13692:7;13685:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13620:87;:::o;14795:32::-;;;;:::o;15565:26::-;;;;;;;;;;;;;:::o;15957:36::-;;;;:::o;15178:::-;;;;:::o;27779:491::-;27866:4;27883:16;27902:17;:29;27920:10;27902:29;;;;;;;;;;;;;;;:38;27932:7;27902:38;;;;;;;;;;;;;;;;27883:57;;27974:8;27955:15;:27;27951:205;;28040:1;27999:17;:29;28017:10;27999:29;;;;;;;;;;;;;;;:38;28029:7;27999:38;;;;;;;;;;;;;;;:42;;;;27951:205;;;28115:29;28128:15;28115:8;:12;;:29;;;;:::i;:::-;28074:17;:29;28092:10;28074:29;;;;;;;;;;;;;;;:38;28104:7;28074:38;;;;;;;;;;;;;;;:70;;;;27951:205;28192:7;28171:69;;28180:10;28171:69;;;28201:17;:29;28219:10;28201:29;;;;;;;;;;;;;;;:38;28231:7;28201:38;;;;;;;;;;;;;;;;28171:69;;;;;;;;;;;;;;;;;;28258:4;28251:11;;;27779:491;;;;:::o;29303:188::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;29432:22:::1;29408:21;;:46;;;;;;;;;;;;;;;;;;29475:8;29465:7;;:18;;;;;;;;;;;;;;;;;;29303:188:::0;;:::o;15023:30::-;;;;:::o;27309:301::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;27417:1:::1;27397:22;;:8;:22;;;;27389:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;27469:8;27450:16;;:27;;;;;;;;;;;;;;;;;;27521:4;27488:12;:30;27501:16;;;;;;;;;;;27488:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;27599:2;27536:17;:35;27554:16;;;;;;;;;;;27536:35;;;;;;;;;;;;;;;:52;27580:6;;;;;;;;;;;27536:52;;;;;;;;;;;;;;;:66;;;;27309:301:::0;:::o;15539:19::-;;;;;;;;;;;;;:::o;18797:174::-;18888:4;18875:2;14615:3;14601:18;;:2;:18;;;;14593:27;;;;;;18905:36:::1;18919:10;18931:2;18935:5;18905:13;:36::i;:::-;;18959:4;18952:11;;18797:174:::0;;;;;:::o;15821:23::-;;;;;;;;;;;;;:::o;14428:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15079:::-;;;;:::o;16073:26::-;;;;:::o;15353:36::-;;;;;;;;;;;;;:::o;14853:31::-;;;;:::o;26823:253::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;26898:5:::1;26894:175;;;26940:5;26920:17;;:25;;;;;;;;;;;;;;;;;;26984:15;26960:21;:39;;;;26894:175;;;27052:5;27032:17;;:25;;;;;;;;;;;;;;;;;;26894:175;26823:253:::0;:::o;14375:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28824:113::-;28886:4;28910:12;:19;28923:5;28910:19;;;;;;;;;;;;;;;;;;;;;;;;;28903:26;;28824:113;;;:::o;27618:153::-;27702:7;27729:17;:25;27747:6;27729:25;;;;;;;;;;;;;;;:34;27755:7;27729:34;;;;;;;;;;;;;;;;27722:41;;27618:153;;;;:::o;26291:230::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;26360:5:::1;26356:158;;;26396:5;26382:11;;:19;;;;;;;;;;;;;;;;;;26435:15;26416:16;:34;;;;26356:158;;;26497:5;26483:11;;:19;;;;;;;;;;;;;;;;;;26356:158;26291:230:::0;:::o;12874:109::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;12947:28:::1;12966:8;12947:18;:28::i;:::-;12874:109:::0;:::o;29499:185::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;29581:9:::1;29576:101;29600:6;:13;29596:1;:17;29576:101;;;29661:4;29635:12;:23;29648:6;29655:1;29648:9;;;;;;;;;;;;;;29635:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;29615:3;;;;;;;29576:101;;;;29499:185:::0;:::o;15500:32::-;;;;;;;;;;;;;:::o;26633:182::-;12602:9;:7;:9::i;:::-;12594:18;;;;;;26734:1:::1;26723:8;:12;26715:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26798:9;26787:8;:20;26763:21;:44;;;;26633:182:::0;:::o;16241:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;1972:132::-;2030:7;2057:39;2061:1;2064;2057:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2050:46;;1972:132;;;;:::o;1480:226::-;1600:7;1633:1;1628;:6;;1636:12;1620:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:9;1676:1;1672;:5;1660:17;;1697:1;1690:8;;;1480:226;;;;;:::o;20032:1694::-;20158:4;20184:9;:17;20194:6;20184:17;;;;;;;;;;;;;;;;;;;;;;;;;20183:18;:43;;;;;20206:9;:20;20216:9;20206:20;;;;;;;;;;;;;;;;;;;;;;;;;20205:21;20183:43;20175:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20260:6;;;;;;;;;;;20256:87;;;20290:41;20305:6;20313:9;20324:6;20290:14;:41::i;:::-;20283:48;;;;20256:87;20357:14;:12;:14::i;:::-;20353:55;;;20388:8;:6;:8::i;:::-;20353:55;20424:20;:18;:20::i;:::-;20420:67;;;20461:14;:12;:14::i;:::-;20420:67;20503:16;:14;:16::i;:::-;20499:59;;;20536:10;:8;:10::i;:::-;20499:59;20570:17;20590:28;20601:16;;20590:6;:10;;:28;;;;:::i;:::-;20570:48;;20646:4;;;;;;;;;;;20633:17;;:9;:17;;;:50;;;;;20678:5;20654:29;;:12;:20;20667:6;20654:20;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;20633:50;:86;;;;;20714:5;20687:32;;:12;:23;20700:9;20687:23;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;20633:86;20629:411;;;20797:39;20832:3;20797:30;20822:4;20797:12;:20;20810:6;20797:20;;;;;;;;;;;;;;;;:24;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;20784:9;:52;20780:144;;20869:39;20904:3;20869:30;20894:4;20869:12;:20;20882:6;20869:20;;;;;;;;;;;;;;;;:24;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;20857:51;;20780:144;20629:411;21064:4;;;;;;;;;;;21054:14;;:6;:14;;;21050:175;;;21099:23;21115:6;21099:11;;:15;;:23;;;;:::i;:::-;21085:11;:37;;;;21050:175;;;21178:35;21203:9;21178:12;:20;21191:6;21178:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;21155:12;:20;21168:6;21155:20;;;;;;;;;;;;;;;:58;;;;21050:175;21235:25;21263:32;21277:6;21285:9;21263:13;:32::i;:::-;:110;;21364:9;21263:110;;;21311:37;21319:6;21327:9;21338;21311:7;:37::i;:::-;21263:110;21235:138;;21403:4;;;;;;;;;;;21390:17;;:9;:17;;;21386:225;;;21438:56;21454:39;21476:16;;21454:17;:21;;:39;;;;:::i;:::-;21438:11;;:15;;:56;;;;:::i;:::-;21424:11;:70;;;;21386:225;;;21553:46;21581:17;21553:12;:23;21566:9;21553:23;;;;;;;;;;;;;;;;:27;;:46;;;;:::i;:::-;21527:12;:23;21540:9;21527:23;;;;;;;;;;;;;;;:72;;;;21386:225;21645:9;21628:68;;21637:6;21628:68;;;21656:39;21678:16;;21656:17;:21;;:39;;;;:::i;:::-;21628:68;;;;;;;;;;;;;;;;;;21714:4;21707:11;;;;20032:1694;;;;;;:::o;1336:136::-;1394:7;1421:43;1425:1;1428;1421:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1414:50;;1336:136;;;;:::o;1147:181::-;1205:7;1225:9;1241:1;1237;:5;1225:17;;1266:1;1261;:6;;1253:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1319:1;1312:8;;;1147:181;;;;:::o;25568:273::-;25615:4;25652:11;;;;;;;;;;;:55;;;;;15808:4;15803:1;15794:11;:18;;;;;;;;25696:10;;25681:12;;:25;25652:55;:90;;;;;25738:4;;;;;;;;;;;25724:18;;:10;:18;;;;25652:90;:114;;;;;25760:6;;;;;;;;;;;25759:7;25652:114;:181;;;;;25822:10;25803:16;;:29;25783:15;:50;;25652:181;25632:201;;25568:273;:::o;17891:605::-;17933:6;;;;;;;;;;;17929:19;;;17941:7;;17929:19;17958:18;17979:5;17958:26;;17995:17;18033:16;;18015:15;:34;17995:54;;18060:13;18076:25;18090:10;18076:9;:13;;:25;;;;:::i;:::-;18060:41;;18112:13;18128;18138:2;18128:5;:9;;:13;;;;:::i;:::-;18112:29;;18159:9;18154:154;18178:5;18174:1;:9;18154:154;;;18220:76;14785:1;18278:17;;:2;:17;18220:53;18237:35;18261:10;14785:1;18238:17;;:2;:17;18237:23;;:35;;;;:::i;:::-;18220:12;;:16;;:53;;;;:::i;:::-;:57;;:76;;;;:::i;:::-;18205:12;:91;;;;18185:3;;;;;;;18154:154;;;;18339:28;18354:12;;18339:10;;:14;;:28;;;;:::i;:::-;18320:16;:47;;;;18397:43;18418:21;18428:10;18418:5;:9;;:21;;;;:::i;:::-;18397:16;;:20;;:43;;;;:::i;:::-;18378:16;:62;;;;18468:5;18458:30;18475:12;;18458:30;;;;;;;;;;;;;;;;;;17891:605;;;;;:::o;12991:187::-;13085:1;13065:22;;:8;:22;;;;13057:31;;;;;;13133:8;13104:38;;13125:6;;;;;;;;;;;13104:38;;;;;;;;;;;;13162:8;13153:6;;:17;;;;;;;;;;;;;;;;;;12991:187;:::o;2112:225::-;2232:7;2264:1;2260;:5;2267:12;2252:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:9;2307:1;2303;:5;;;;;;2291:17;;2328:1;2321:8;;;2112:225;;;;;:::o;19459:565::-;19577:4;19594:17;19614:28;19625:16;;19614:6;:10;;:28;;;;:::i;:::-;19594:48;;19665:4;;;;;;;;;;;19657:12;;:4;:12;;;19653:169;;;19700:23;19716:6;19700:11;;:15;;:23;;;;:::i;:::-;19686:11;:37;;;;19653:169;;;19777:33;19800:9;19777:12;:18;19790:4;19777:18;;;;;;;;;;;;;;;;:22;;:33;;;;:::i;:::-;19756:12;:18;19769:4;19756:18;;;;;;;;;;;;;;;:54;;;;19653:169;19842:4;;;;;;;;;;;19836:10;;:2;:10;;;19832:163;;;19877:23;19893:6;19877:11;;:15;;:23;;;;:::i;:::-;19863:11;:37;;;;19832:163;;;19952:31;19973:9;19952:12;:16;19965:2;19952:16;;;;;;;;;;;;;;;;:20;;:31;;;;:::i;:::-;19933:12;:16;19946:2;19933:16;;;;;;;;;;;;;;;:50;;;;19832:163;20012:4;20005:11;;;19459:565;;;;;:::o;25849:299::-;25902:4;25939:17;;;;;;;;;;;:41;;;;;25974:6;;;;;;;;;;;25973:7;25939:41;:76;;;;;26011:4;;;;;;;;;;;25997:18;;:10;:18;;;;25939:76;:118;;;;;26056:1;26032:21;;:25;25939:118;:201;;;;;26118:21;;26094;;:45;26074:15;:66;;25939:201;25919:221;;25849:299;:::o;24648:536::-;15664:4;15655:6;;:13;;;;;;;;;;;;;;;;;;24701:27:::1;24731:57;24771:16;;24731:12;:35;24744:21;;;;;;;;;;;24731:35;;;;;;;;;;;;;;;;:39;;:57;;;;:::i;:::-;24701:87;;24831:1;24803:30;;:16;;;;;;;;;;;:30;;;;:57;;;;;24859:1;24837:19;:23;24803:57;24799:378;;;24910:71;24945:12;:35;24958:21;;;;;;;;;;;24945:35;;;;;;;;;;;;;;;;24910:12;:30;24923:16;;;;;;;;;;;24910:30;;;;;;;;;;;;;;;;:34;;:71;;;;:::i;:::-;24877:12;:30;24890:16;;;;;;;;;;;24877:30;;;;;;;;;;;;;;;:104;;;;25034:1;24996:12;:35;25009:21;;;;;;;;;;;24996:35;;;;;;;;;;;;;;;:39;;;;25060:16;;;;;;;;;;;25052:38;;;25091:19;25052:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25150:15;25126:21;:39;;;;24799:378;15679:1;15700:5:::0;15691:6;;:14;;;;;;;;;;;;;;;;;;24648:536::o;26156:127::-;26205:4;26229:13;;;;;;;;;;;:24;;;;;26247:6;;;;;;;;;;;26246:7;26229:24;:46;;;;;26271:4;;;;;;;;;;;26257:18;;:10;:18;;;;26229:46;26222:53;;26156:127;:::o;25192:155::-;15664:4;15655:6;;:13;;;;;;;;;;;;;;;;;;25273:1:::1;25245:30;;:16;;;;;;;;;;;:30;;;25241:99;;25300:16;;;;;;;;;;;25292:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25241:99;15700:5:::0;15691:6;;:14;;;;;;;;;;;;;;;;;;25192:155::o;1714:250::-;1772:7;1801:1;1796;:6;1792:47;;;1826:1;1819:8;;;;1792:47;1851:9;1867:1;1863;:5;1851:17;;1896:1;1891;1887;:5;;;;;;:10;1879:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1955:1;1948:8;;;1714:250;;;;;:::o;25355:205::-;25427:4;25513:12;:18;25526:4;25513:18;;;;;;;;;;;;;;;;;;;;;;;;;25512:19;:40;;;;;25536:12;:16;25549:2;25536:16;;;;;;;;;;;;;;;;;;;;;;;;;25535:17;25512:40;25444:108;;25355:205;;;;:::o;21734:2906::-;21857:7;21877:17;21897:1;21877:21;;21909:20;21932:11;;21909:34;;21954:18;21975:3;21954:24;;22043:4;;;;;;;;;;;22033:14;;:6;:14;;;22029:672;;22076:60;22120:15;;22076:39;22108:6;;22076:27;22091:11;;22076:10;;:14;;:27;;;;:::i;:::-;:31;;:39;;;;:::i;:::-;:43;;:60;;;;:::i;:::-;22064:72;;22195;22221:45;22255:10;;22221:29;22235:14;;22221:9;:13;;:29;;;;:::i;:::-;:33;;:45;;;;:::i;:::-;22195:12;:21;22208:7;;;;;;;;;;;22195:21;;;;;;;;;;;;;;;;:25;;:72;;;;:::i;:::-;22171:12;:21;22184:7;;;;;;;;;;;22171:21;;;;;;;;;;;;;;;:96;;;;22315:136;22368:68;22402:33;22419:15;;22402:12;:16;;:33;;;;:::i;:::-;22368:29;22382:14;;22368:9;:13;;:29;;;;:::i;:::-;:33;;:68;;;;:::i;:::-;22315:12;:30;22328:16;;;;;;;;;;;22315:30;;;;;;;;;;;;;;;;:34;;:136;;;;:::i;:::-;22282:12;:30;22295:16;;;;;;;;;;;22282:30;;;;;;;;;;;;;;;:169;;;;22497:75;22530:41;22564:6;;22530:29;22544:14;;22530:9;:13;;:29;;;;:::i;:::-;:33;;:41;;;;:::i;:::-;22497:12;:28;22510:14;;;;;;;;;;;22497:28;;;;;;;;;;;;;;;;:32;;:75;;;;:::i;:::-;22466:12;:28;22479:14;;;;;;;;;;;22466:28;;;;;;;;;;;;;;;:106;;;;22596:14;;;;;;;;;;;22587:37;;;22625:63;22673:14;;22625:43;22661:6;;22625:31;22639:16;;22625:9;:13;;:31;;;;:::i;:::-;:35;;:43;;;;:::i;:::-;:47;;:63;;;;:::i;:::-;22587:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22029:672;22725:4;;;;;;;;;;;22715:14;;:6;:14;;;22711:289;;;22788:27;22802:12;;22788:9;;:13;;:27;;;;:::i;:::-;22776:39;;22868:120;22926:47;22960:12;;22926:29;22940:14;;22926:9;:13;;:29;;;;:::i;:::-;:33;;:47;;;;:::i;:::-;22868:12;:35;22881:21;;;;;;;;;;;22868:35;;;;;;;;;;;;;;;;:39;;:120;;;;:::i;:::-;22830:12;:35;22843:21;;;;;;;;;;;22830:35;;;;;;;;;;;;;;;:158;;;;22711:289;23027:4;;;;;;;;;;;23014:17;;:9;:17;;;:35;;;;23045:4;;;;;;;;;;;23035:14;;:6;:14;;;23014:35;23010:498;;;23119:1;23100:16;;:20;:59;;;;;23143:16;;23124:15;:35;;23100:59;23092:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23239:1;23220:16;;:20;23201:15;:39;23197:300;;23273:25;23287:10;23273:9;:13;;:25;;;;:::i;:::-;23261:37;;23355:126;23417:45;23451:10;23417:29;23431:14;;23417:9;:13;;:29;;;;:::i;:::-;:33;;:45;;;;:::i;:::-;23355:12;:35;23368:21;;;;;;;;;;;23355:35;;;;;;;;;;;;;;;;:39;;:126;;;;:::i;:::-;23317:12;:35;23330:21;;;;;;;;;;;23317:35;;;;;;;;;;;;;;;:164;;;;23197:300;23010:498;23518:17;23538:44;23572:9;23538:29;23552:14;;23538:9;:13;;:29;;;;:::i;:::-;:33;;:44;;;;:::i;:::-;23518:64;;23625:4;23600:64;;23609:6;23600:64;;;23632:31;23646:16;;23632:9;:13;;:31;;;;:::i;:::-;23600:64;;;;;;;;;;;;;;;;;;23689:4;;;;;;;;;;;23679:14;;:6;:14;;;23675:914;;;23730:121;23770:66;23821:14;;23770:46;23806:9;;23770:31;23784:16;;23770:9;:13;;:31;;;;:::i;:::-;:35;;:46;;;;:::i;:::-;:50;;:66;;;;:::i;:::-;23730:17;;:21;;:121;;;;:::i;:::-;23710:17;:141;;;;23866:27;23905:14;;;;;;;;;;;23896:37;;;23934:9;23896:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23866:78;;23964:7;23959:619;23981:15;23977:1;:19;;;23959:619;;;24022:18;24043:26;24064:4;24043:16;24057:1;24043:9;:13;;:16;;;;:::i;:::-;:20;;:26;;;;:::i;:::-;24022:47;;24097:1;24092;:6;;;24088:93;;;24136:25;24157:3;24136:16;24150:1;24136:9;:13;;:16;;;;:::i;:::-;:20;;:25;;;;:::i;:::-;24123:38;;24088:93;24208:1;24203;:6;;;24199:93;;;24247:25;24268:3;24247:16;24261:1;24247:9;:13;;:16;;;;:::i;:::-;:20;;:25;;;;:::i;:::-;24234:38;;24199:93;24338:41;24368:10;24338:12;:25;24351:8;24360:1;24351:11;;;;;;;;;;;;;24338:25;;;;;;;;;;;;;;;;:29;;:41;;;;:::i;:::-;24310:12;:25;24323:8;24332:1;24323:11;;;;;;;;;;;;;24310:25;;;;;;;;;;;;;;;:69;;;;24426:8;24435:1;24426:11;;;;;;;;;;;;;24403:69;;24415:9;24403:69;;;24439:32;24454:16;;24439:10;:14;;:32;;;;:::i;:::-;24403:69;;;;;;;;;;;;;;;;;;24516:8;24525:1;24516:11;;;;;;;;;;;;;24496:66;;24505:9;24496:66;;;24529:32;24544:16;;24529:10;:14;;:32;;;;:::i;:::-;24496:66;;;;;;;;;;;;;;;;;;23959:619;23998:3;;;;;;;23959:619;;;;23675:914;;24608:24;24622:9;24608;:13;;:24;;;;:::i;:::-;24601:31;;;;;;21734:2906;;;;;:::o

Swarm Source

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