ETH Price: $3,949.79 (+2.07%)

Token

ERC-20: Bitcake (BITCAKE)
 

Overview

Max Total Supply

1,000,000,000,000,000,000,000 BITCAKE

Holders

168

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
357 BITCAKE

Value
$0.00
0x4911F573f789aBfEB4a24586983830C3add1C53D
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Bitcake

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2022-04-01
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.13;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    /**
     * Function modifier to require caller to be contract deployer
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!Owner"); _;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

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

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

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

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

interface IDividendDistributor {
    function setShare(address shareholder, uint256 amount) external;
    function deposit(uint256 amount) external;
    function claimDividend(address shareholder) external;
    function getDividendsClaimedOf (address shareholder) external returns (uint256);
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address public _token;
    address public _owner;

    address public immutable WBTC = address(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599); 


    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalClaimed;
    }

    address[] private shareholders;
    mapping (address => uint256) private shareholderIndexes;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalClaimed;
    uint256 public dividendsPerShare;
    uint256 private dividendsPerShareAccuracyFactor = 10 ** 36;

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }
    
    modifier onlyOwner() {
        require(msg.sender == _owner); _;
    }

    constructor (address owner) {
        _token = msg.sender;
        _owner = owner;
    }

    receive() external payable { }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit(uint256 amount) external override onlyToken {
        
        if (amount > 0) {        
            totalDividends = totalDividends.add(amount);
            dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
        }
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getClaimableDividendOf(shareholder);
        if(amount > 0){
            totalClaimed = totalClaimed.add(amount);
            shares[shareholder].totalClaimed = shares[shareholder].totalClaimed.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            IERC20(WBTC).transfer(shareholder, amount);
        }
    }

    function claimDividend(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getClaimableDividendOf(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
    function manualSend(uint256 amount, address holder) external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(holder).transfer(amount > 0 ? amount : contractETHBalance);
    }


    function getDividendsClaimedOf (address shareholder) external view returns (uint256) {
        require (shares[shareholder].amount > 0, "You're not a BITCAKE shareholder!");
        return shares[shareholder].totalClaimed;
    }

    }

contract Bitcake is IERC20, Auth {
    using SafeMath for uint256;

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

    address public immutable WBTC = address(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599); 

    string private constant  _name = "Bitcake";
    string private constant _symbol = "BITCAKE";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 1000000000000 * (10 ** _decimals);    

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private cooldown;

    mapping (address => bool) private isFeeExempt;
    mapping (address => bool) private isDividendExempt;
    mapping (address => bool) private isBot;
            
    uint256 private totalFee = 30;
    uint256 private feeDenominator = 100;

    address payable public marketingWallet = payable(0xc41aF8262683fa0FBc0B19bD995Ca3288e95549f);

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool private tradingOpen;
    bool private buyLimit = true;
    uint256 private maxBuy = 5000000001 * (10 ** _decimals);
    uint256 public swapThresholdAmount = 5000000000 * 10**9;

    DividendDistributor private distributor;    
    
    bool public blacklistEnabled = false;
    bool private inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (
        address _owner        
    ) Auth(_owner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        distributor = new DividendDistributor(_owner);

        isFeeExempt[_owner] = true;
        isFeeExempt[marketingWallet] = true;             
              
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;        

        _balances[_owner] = _totalSupply;
    
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading
        if (blacklistEnabled) {
            require (!isBot[sender] && !isBot[recipient], "Bot!");
        }
        if (buyLimit) { 
            if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir");        
        }

        if (sender == pair && recipient != address(router) && !isFeeExempt[recipient]) {
            require (cooldown[recipient] < block.timestamp);
            cooldown[recipient] = block.timestamp + 60 seconds;
            if (block.number <= (launchedAt + 1)) { 
                isBot[recipient] = true;
                isDividendExempt[recipient] = true; 
            }
        }
       
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }      

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= swapThresholdAmount;
    
        bool shouldSwapBack = (overMinTokenBalance && recipient==pair && balanceOf(address(this)) > 0);
        if(shouldSwapBack){ swapBack(); }

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

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount;
        
        _balances[recipient] = _balances[recipient].add(amountReceived);

        if(sender != pair && !isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }
        if(recipient != pair && !isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }

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

 
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) &&  (sender == pair || recipient == pair) );
   }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount;
        feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);   

        return amount.sub(feeAmount);
    }

   
    function swapBack() internal swapping {

        uint256 amountToSwap = balanceOf(address(this));        

        swapTokensForEth(amountToSwap.div(2));
        swapTokensForWBTC(amountToSwap.div(2));

        uint256 dividends = IERC20(WBTC).balanceOf(address(this));

        bool success = IERC20(WBTC).transfer(address(distributor), dividends);

        if (success) {
            distributor.deposit(dividends);            
        }
             
        payable(marketingWallet).transfer(address(this).balance);        
    }

    

    function swapTokensForWBTC(uint256 tokenAmount) private {

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

        // make the swap
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        
        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp
        );
    }

    
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }    
  
    
    function setBot(address _address, bool toggle) external onlyOwner {
        isBot[_address] = toggle;
        _setIsDividendExempt(_address, toggle);
    }
    
    
    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setFee (uint256 _fee) external onlyOwner {
        totalFee = _fee;
    }
  
    function manualSend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingWallet).transfer(contractETHBalance);
    }

    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
    
    function claimDividend(address holder) external onlyOwner {
        distributor.claimDividend(holder);
    }
    
    function getClaimableDividendOf(address shareholder) public view returns (uint256) {
        return distributor.getClaimableDividendOf(shareholder);
    }
    
    function manualBurn(uint256 amount) external onlyOwner returns (bool) {
        return _basicTransfer(address(this), DEAD, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = payable(_marketingWallet);
    } 

    function getTotalDividends() external view returns (uint256) {
        return distributor.totalDividends();
    }    

    function getTotalClaimed() external view returns (uint256) {
        return distributor.totalClaimed();
    }

     function getDividendsClaimedOf (address shareholder) external view returns (uint256) {
        return distributor.getDividendsClaimedOf(shareholder);
    }

    function removeBuyLimit() external onlyOwner {
        buyLimit = false;
    }

    function checkBot(address account) public view returns (bool) {
        return isBot[account];
    }

    function setBlacklistEnabled() external onlyOwner {
        require (blacklistEnabled == false, "can only be called once");
        blacklistEnabled = true;
    }

    function setSwapThresholdAmount (uint256 amount) external onlyOwner {
        swapThresholdAmount = _totalSupply.mul(amount).div(1000);
    } 
   
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"WBTC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThresholdAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506009600a620000e0919062000a89565b64e8d4a51000620000f2919062000ada565b600455601e600b556064600c5573c41af8262683fa0fbc0b19bd995ca3288e95549f600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160016101000a81548160ff0219169083151502179055506009600a6200017f919062000a89565b64012a05f20162000191919062000ada565b601255674563918244f4000060135560006014806101000a81548160ff021916908315150217905550348015620001c757600080fd5b506040516200686f3803806200686f8339818101604052810190620001ed919062000ba5565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000318919062000ba5565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec919062000ba5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044a92919062000be8565b6020604051808303816000875af11580156200046a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000490919062000ba5565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080604051620005a290620008e1565b620005ae919062000c15565b604051809103906000f080158015620005cb573d6000803e3d6000fd5b50601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620008d2919062000c43565b60405180910390a35062000c60565b611ace8062004da183390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200097d57808604811115620009555762000954620008ef565b5b6001851615620009655780820291505b808102905062000975856200091e565b945062000935565b94509492505050565b60008262000998576001905062000a6b565b81620009a8576000905062000a6b565b8160018114620009c15760028114620009cc5762000a02565b600191505062000a6b565b60ff841115620009e157620009e0620008ef565b5b8360020a915084821115620009fb57620009fa620008ef565b5b5062000a6b565b5060208310610133831016604e8410600b841016171562000a3c5782820a90508381111562000a365762000a35620008ef565b5b62000a6b565b62000a4b84848460016200092b565b9250905081840481111562000a655762000a64620008ef565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a968262000a72565b915062000aa38362000a7c565b925062000ad27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000986565b905092915050565b600062000ae78262000a72565b915062000af48362000a72565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b305762000b2f620008ef565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b6d8262000b40565b9050919050565b62000b7f8162000b60565b811462000b8b57600080fd5b50565b60008151905062000b9f8162000b74565b92915050565b60006020828403121562000bbe5762000bbd62000b3b565b5b600062000bce8482850162000b8e565b91505092915050565b62000be28162000b60565b82525050565b600060408201905062000bff600083018562000bd7565b62000c0e602083018462000bd7565b9392505050565b600060208201905062000c2c600083018462000bd7565b92915050565b62000c3d8162000a72565b82525050565b600060208201905062000c5a600083018462000c32565b92915050565b60805161411062000c916000396000818161102001528181612b8f01528181612c2d01526133c601526141106000f3fe6080604052600436106102345760003560e01c806370a082311161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca14610874578063f2fde38b1461088b578063f4293890146108b4578063f708a64f146108cb578063f887ea40146108f45761023b565b8063bf56b3711461079f578063bffb691d146107ca578063c9567bf9146107f5578063d0aa7abe1461080c578063dd62ed3e146108375761023b565b80638ecc37fb116100f25780638ecc37fb1461069257806395d89b41146106cf578063a8aa1b31146106fa578063a9059cbb14610725578063b1a4e0dc146107625761023b565b806370a08231146105bd578063736a83a1146105fa57806375f0a87414610625578063764ca51214610650578063893d20e8146106675761023b565b8063313ce567116101bc5780635cc33f74116101805780635cc33f74146104da5780635d098b3814610517578063658d4b7f1461054057806367ee5f091461056957806369fe0e2d146105945761023b565b8063313ce56714610407578063342aa8b5146104325780633e07ce5b1461045b5780634dede3de14610472578063571ac8b01461049d5761023b565b806323b635851161020357806323b63585146102fc57806323b872dd1461033957806329e04b4a146103765780632b112e491461039f5780632f54bf6e146103ca5761023b565b806306fdde0314610240578063095ea7b31461026b57806315f7e05e146102a857806318160ddd146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561091f565b6040516102629190613566565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190613621565b61095c565b60405161029f919061367c565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613697565b610a4e565b005b3480156102dd57600080fd5b506102e6610b26565b6040516102f391906136d3565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e91906136ee565b610b30565b604051610330919061367c565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b919061371b565b610bae565b60405161036d919061367c565b60405180910390f35b34801561038257600080fd5b5061039d600480360381019061039891906136ee565b610dae565b005b3480156103ab57600080fd5b506103b4610e28565b6040516103c191906136d3565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190613697565b610eaa565b6040516103fe919061367c565b60405180910390f35b34801561041357600080fd5b5061041c610f03565b604051610429919061378a565b60405180910390f35b34801561043e57600080fd5b50610459600480360381019061045491906137d1565b610f0c565b005b34801561046757600080fd5b50610470610fb9565b005b34801561047e57600080fd5b5061048761101e565b6040516104949190613820565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190613697565b611042565b6040516104d1919061367c565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190613697565b611075565b60405161050e91906136d3565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190613697565b61111a565b005b34801561054c57600080fd5b50610567600480360381019061056291906137d1565b6111a6565b005b34801561057557600080fd5b5061057e611249565b60405161058b91906136d3565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b691906136ee565b6112e1565b005b3480156105c957600080fd5b506105e460048036038101906105df9190613697565b611333565b6040516105f191906136d3565b60405180910390f35b34801561060657600080fd5b5061060f61137c565b60405161061c91906136d3565b60405180910390f35b34801561063157600080fd5b5061063a611414565b604051610647919061385c565b60405180910390f35b34801561065c57600080fd5b5061066561143a565b005b34801561067357600080fd5b5061067c6114f2565b6040516106899190613820565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190613697565b61151b565b6040516106c691906136d3565b60405180910390f35b3480156106db57600080fd5b506106e46115c0565b6040516106f19190613566565b60405180910390f35b34801561070657600080fd5b5061070f6115fd565b60405161071c9190613820565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190613621565b611623565b604051610759919061367c565b60405180910390f35b34801561076e57600080fd5b5061078960048036038101906107849190613697565b611638565b604051610796919061367c565b60405180910390f35b3480156107ab57600080fd5b506107b461168e565b6040516107c191906136d3565b60405180910390f35b3480156107d657600080fd5b506107df611694565b6040516107ec919061367c565b60405180910390f35b34801561080157600080fd5b5061080a6116a5565b005b34801561081857600080fd5b50610821611711565b60405161082e91906136d3565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190613877565b611717565b60405161086b91906136d3565b60405180910390f35b34801561088057600080fd5b5061088961179e565b005b34801561089757600080fd5b506108b260048036038101906108ad91906138e3565b61182d565b005b3480156108c057600080fd5b506108c96118ef565b005b3480156108d757600080fd5b506108f260048036038101906108ed91906137d1565b6119a8565b005b34801561090057600080fd5b506109096119fe565b604051610916919061396f565b60405180910390f35b60606040518060400160405280600781526020017f42697463616b6500000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3c91906136d3565b60405180910390a36001905092915050565b610a5733610eaa565b610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d906139d6565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610af19190613820565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b3b33610eaa565b610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906139d6565b60405180910390fd5b610ba730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a24565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9a57610d19826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf79092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610da5848484611c5b565b90509392505050565b610db733610eaa565b610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded906139d6565b60405180910390fd5b610e1f6103e8610e118360045461276790919063ffffffff16565b6127e190919063ffffffff16565b60138190555050565b6000610ea5610e58600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611333565b610e97610e86600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611333565b60045461282b90919063ffffffff16565b61282b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610f1533610eaa565b610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b906139d6565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610fb58282612875565b5050565b610fc233610eaa565b611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff8906139d6565b60405180910390fd5b6000601160016101000a81548160ff021916908315150217905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061106e827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61095c565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b81526004016110d29190613820565b602060405180830381865afa1580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111139190613a0b565b9050919050565b61112333610eaa565b611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611159906139d6565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111af33610eaa565b6111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e5906139d6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc9190613a0b565b905090565b6112ea33610eaa565b611329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611320906139d6565b60405180910390fd5b80600b8190555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140f9190613a0b565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61144333610eaa565b611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906139d6565b60405180910390fd5b6000151560148054906101000a900460ff161515146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90613a84565b60405180910390fd5b60016014806101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016115789190613820565b602060405180830381865afa158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190613a0b565b9050919050565b60606040518060400160405280600781526020017f42495443414b4500000000000000000000000000000000000000000000000000815250905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611630338484611c5b565b905092915050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b60148054906101000a900460ff1681565b6116ae33610eaa565b6116ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e4906139d6565b60405180910390fd5b436010819055506001601160006101000a81548160ff021916908315150217905550565b60135481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b81526004016117f99190613820565b600060405180830381600087803b15801561181357600080fd5b505af1158015611827573d6000803e3d6000fd5b50505050565b61183633610eaa565b611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c906139d6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118e49190613ac5565b60405180910390a150565b6118f833610eaa565b611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906139d6565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119a4573d6000803e3d6000fd5b5050565b6119b133610eaa565b6119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e7906139d6565b60405180910390fd5b6119fa8282612875565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611aaf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b4482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612acd90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611be491906136d3565b60405180910390a3600190509392505050565b6000838311158290611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c369190613566565b60405180910390fd5b5060008385611c4e9190613b0f565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d06575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d5b57601160009054906101000a900460ff16611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5190613b8f565b60405180910390fd5b5b60148054906101000a900460ff1615611e5257600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e125750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890613bfb565b60405180910390fd5b5b601160019054906101000a900460ff1615611f5b5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f0f575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5a57601254821115611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613c67565b60405180910390fd5b5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120065750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561205c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121c35742600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106120ac57600080fd5b603c426120b99190613c87565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160105461210b9190613c87565b43116121c2576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b601460159054906101000a900460ff16156121ea576121e3848484611a24565b9050612760565b60006121f530611333565b905060006013548210159050600081801561225d5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156122715750600061226f30611333565b115b9050801561228257612281612b2b565b5b61230b856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf79092919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061235a8888612e0a565b612364578561236f565b61236e8887612f67565b5b90506123c381600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612acd90919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156124ae5750600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561257c57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161254f929190613cdd565b600060405180830381600087803b15801561256957600080fd5b505af192505050801561257a575060015b505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156126245750600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126f257601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016126c5929190613cdd565b600060405180830381600087803b1580156126df57600080fd5b505af19250505080156126f0575060015b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161274f91906136d3565b60405180910390a360019450505050505b9392505050565b600080830361277957600090506127db565b600082846127879190613d06565b90508284826127969190613d8f565b146127d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cd90613e32565b60405180910390fd5b809150505b92915050565b600061282383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130ab565b905092915050565b600061286d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf7565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128ff5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61290857600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156129fa57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016129c3929190613e8d565b600060405180830381600087803b1580156129dd57600080fd5b505af11580156129f1573d6000803e3d6000fd5b50505050612ac9565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612a96929190613cdd565b600060405180830381600087803b158015612ab057600080fd5b505af1158015612ac4573d6000803e3d6000fd5b505050505b5050565b6000808284612adc9190613c87565b905083811015612b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1890613f02565b60405180910390fd5b8091505092915050565b6001601460156101000a81548160ff0219169083151502179055506000612b5130611333565b9050612b6f612b6a6002836127e190919063ffffffff16565b61310e565b612b8b612b866002836127e190919063ffffffff16565b6132b6565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612be69190613820565b602060405180830381865afa158015612c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c279190613a0b565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612ca8929190613cdd565b6020604051808303816000875af1158015612cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ceb9190613f37565b90508015612d8157601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25836040518263ffffffff1660e01b8152600401612d4e91906136d3565b600060405180830381600087803b158015612d6857600080fd5b505af1158015612d7c573d6000803e3d6000fd5b505050505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612de9573d6000803e3d6000fd5b505050506000601460156101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ead5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612f5f5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f5e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612f93600c54612f85600b548661276790919063ffffffff16565b6127e190919063ffffffff16565b9050612fe781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612acd90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161308791906136d3565b60405180910390a36130a2818461282b90919063ffffffff16565b91505092915050565b600080831182906130f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e99190613566565b60405180910390fd5b50600083856131019190613d8f565b9050809150509392505050565b6000600267ffffffffffffffff81111561312b5761312a613f64565b5b6040519080825280602002602001820160405280156131595781602001602082028036833780820191505090505b509050308160008151811061317157613170613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106131e2576131e1613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613280959493929190614080565b600060405180830381600087803b15801561329a57600080fd5b505af11580156132ae573d6000803e3d6000fd5b505050505050565b6000600367ffffffffffffffff8111156132d3576132d2613f64565b5b6040519080825280602002602001820160405280156133015781602001602082028036833780820191505090505b509050308160008151811061331957613318613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061338a57613389613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106133f9576133f8613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b8152600401613497959493929190614080565b600060405180830381600087803b1580156134b157600080fd5b505af11580156134c5573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135075780820151818401526020810190506134ec565b83811115613516576000848401525b50505050565b6000601f19601f8301169050919050565b6000613538826134cd565b61354281856134d8565b93506135528185602086016134e9565b61355b8161351c565b840191505092915050565b60006020820190508181036000830152613580818461352d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135b88261358d565b9050919050565b6135c8816135ad565b81146135d357600080fd5b50565b6000813590506135e5816135bf565b92915050565b6000819050919050565b6135fe816135eb565b811461360957600080fd5b50565b60008135905061361b816135f5565b92915050565b6000806040838503121561363857613637613588565b5b6000613646858286016135d6565b92505060206136578582860161360c565b9150509250929050565b60008115159050919050565b61367681613661565b82525050565b6000602082019050613691600083018461366d565b92915050565b6000602082840312156136ad576136ac613588565b5b60006136bb848285016135d6565b91505092915050565b6136cd816135eb565b82525050565b60006020820190506136e860008301846136c4565b92915050565b60006020828403121561370457613703613588565b5b60006137128482850161360c565b91505092915050565b60008060006060848603121561373457613733613588565b5b6000613742868287016135d6565b9350506020613753868287016135d6565b92505060406137648682870161360c565b9150509250925092565b600060ff82169050919050565b6137848161376e565b82525050565b600060208201905061379f600083018461377b565b92915050565b6137ae81613661565b81146137b957600080fd5b50565b6000813590506137cb816137a5565b92915050565b600080604083850312156137e8576137e7613588565b5b60006137f6858286016135d6565b9250506020613807858286016137bc565b9150509250929050565b61381a816135ad565b82525050565b60006020820190506138356000830184613811565b92915050565b60006138468261358d565b9050919050565b6138568161383b565b82525050565b6000602082019050613871600083018461384d565b92915050565b6000806040838503121561388e5761388d613588565b5b600061389c858286016135d6565b92505060206138ad858286016135d6565b9150509250929050565b6138c08161383b565b81146138cb57600080fd5b50565b6000813590506138dd816138b7565b92915050565b6000602082840312156138f9576138f8613588565b5b6000613907848285016138ce565b91505092915050565b6000819050919050565b600061393561393061392b8461358d565b613910565b61358d565b9050919050565b60006139478261391a565b9050919050565b60006139598261393c565b9050919050565b6139698161394e565b82525050565b60006020820190506139846000830184613960565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b60006139c06006836134d8565b91506139cb8261398a565b602082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b600081519050613a05816135f5565b92915050565b600060208284031215613a2157613a20613588565b5b6000613a2f848285016139f6565b91505092915050565b7f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000600082015250565b6000613a6e6017836134d8565b9150613a7982613a38565b602082019050919050565b60006020820190508181036000830152613a9d81613a61565b9050919050565b6000613aaf8261393c565b9050919050565b613abf81613aa4565b82525050565b6000602082019050613ada6000830184613ab6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b1a826135eb565b9150613b25836135eb565b925082821015613b3857613b37613ae0565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6000613b796018836134d8565b9150613b8482613b43565b602082019050919050565b60006020820190508181036000830152613ba881613b6c565b9050919050565b7f426f742100000000000000000000000000000000000000000000000000000000600082015250565b6000613be56004836134d8565b9150613bf082613baf565b602082019050919050565b60006020820190508181036000830152613c1481613bd8565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b6000613c51600c836134d8565b9150613c5c82613c1b565b602082019050919050565b60006020820190508181036000830152613c8081613c44565b9050919050565b6000613c92826135eb565b9150613c9d836135eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cd257613cd1613ae0565b5b828201905092915050565b6000604082019050613cf26000830185613811565b613cff60208301846136c4565b9392505050565b6000613d11826135eb565b9150613d1c836135eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5557613d54613ae0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d9a826135eb565b9150613da5836135eb565b925082613db557613db4613d60565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e1c6021836134d8565b9150613e2782613dc0565b604082019050919050565b60006020820190508181036000830152613e4b81613e0f565b9050919050565b6000819050919050565b6000613e77613e72613e6d84613e52565b613910565b6135eb565b9050919050565b613e8781613e5c565b82525050565b6000604082019050613ea26000830185613811565b613eaf6020830184613e7e565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613eec601b836134d8565b9150613ef782613eb6565b602082019050919050565b60006020820190508181036000830152613f1b81613edf565b9050919050565b600081519050613f31816137a5565b92915050565b600060208284031215613f4d57613f4c613588565b5b6000613f5b84828501613f22565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ff7816135ad565b82525050565b60006140098383613fee565b60208301905092915050565b6000602082019050919050565b600061402d82613fc2565b6140378185613fcd565b935061404283613fde565b8060005b8381101561407357815161405a8882613ffd565b975061406583614015565b925050600181019050614046565b5085935050505092915050565b600060a08201905061409560008301886136c4565b6140a26020830187613e7e565b81810360408301526140b48186614022565b90506140c36060830185613811565b6140d060808301846136c4565b969550505050505056fea264697066735822122031364aca216f40850f78c9d1afa4624b97783b611763dbf47b277e16be69f2a164736f6c634300080d003360a0604052732260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506ec097ce7bc90715b34b9f10000000006009553480156200006b57600080fd5b5060405162001ace38038062001ace833981810160405281019062000091919062000183565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001b5565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200014b826200011e565b9050919050565b6200015d816200013e565b81146200016957600080fd5b50565b6000815190506200017d8162000152565b92915050565b6000602082840312156200019c576200019b62000119565b5b6000620001ac848285016200016c565b91505092915050565b6080516118f6620001d86000396000818161075c0152610c5a01526118f66000f3fe6080604052600436106100e15760003560e01c8063997664d71161007f578063ce7c2ac211610059578063ce7c2ac2146102b7578063d54ad2a1146102f6578063e2d2e21914610321578063ecd0c0c31461034c576100e8565b8063997664d714610238578063b2bdfa7b14610263578063b6b55f251461028e576100e8565b80633a98ef39116100bb5780633a98ef39146101685780634dede3de146101935780635cc33f74146101be5780638ecc37fb146101fb576100e8565b80631014edf5146100ed57806314b6ca961461011657806315f7e05e1461013f576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112b1565b610377565b005b34801561012257600080fd5b5061013d600480360381019061013891906112f1565b610431565b005b34801561014b57600080fd5b5061016660048036038101906101619190611331565b6106f0565b005b34801561017457600080fd5b5061017d610754565b60405161018a919061136d565b60405180910390f35b34801561019f57600080fd5b506101a861075a565b6040516101b59190611397565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190611331565b61077e565b6040516101f2919061136d565b60405180910390f35b34801561020757600080fd5b50610222600480360381019061021d9190611331565b61084e565b60405161022f919061136d565b60405180910390f35b34801561024457600080fd5b5061024d610967565b60405161025a919061136d565b60405180910390f35b34801561026f57600080fd5b5061027861096d565b6040516102859190611397565b60405180910390f35b34801561029a57600080fd5b506102b560048036038101906102b091906113b2565b610993565b005b3480156102c357600080fd5b506102de60048036038101906102d99190611331565b610a56565b6040516102ed939291906113df565b60405180910390f35b34801561030257600080fd5b5061030b610a80565b604051610318919061136d565b60405180910390f35b34801561032d57600080fd5b50610336610a86565b604051610343919061136d565b60405180910390f35b34801561035857600080fd5b50610361610a8c565b60405161036e9190611397565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d157600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc600085116103fe5782610400565b845b9081150290604051600060405180830381858888f1935050505015801561042b573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461048957600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104de576104dd82610ab0565b5b60008111801561053057506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105435761053e82610cfd565b6105a5565b60008114801561059557506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105a4576105a382610dac565b5b5b61060e81610600600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600554610fb390919063ffffffff16565b610ffd90919063ffffffff16565b60058190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106a6600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461074857600080fd5b61075181610ab0565b50565b60055481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90611499565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154036108a25760009050610962565b60006108ef600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161094a57600092505050610962565b61095d8183610fb390919063ffffffff16565b925050505b919050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109eb57600080fd5b6000811115610a5357610a0981600654610ffd90919063ffffffff16565b600681905550610a4c610a3b600554610a2d8460095461108d90919063ffffffff16565b61110790919063ffffffff16565b600854610ffd90919063ffffffff16565b6008819055505b50565b60046020528060005260406000206000915090508060000154908060010154908060020154905083565b60075481565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540315610cfa576000610b068261084e565b90506000811115610cf857610b2681600754610ffd90919063ffffffff16565b600781905550610b8181600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ffd90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c12600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610cb39291906114b9565b6020604051808303816000875af1158015610cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf6919061151a565b505b505b50565b600280549050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026001600280549050610dc09190611576565b81548110610dd157610dd06115aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e4f57610e4e6115aa565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600060026001600280549050610eef9190611576565b81548110610f0057610eff6115aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002805480610f7b57610f7a6115d9565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610ff583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611151565b905092915050565b600080828461100c9190611608565b905083811015611051576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611048906116aa565b60405180910390fd5b8091505092915050565b60006110866009546110786008548561108d90919063ffffffff16565b61110790919063ffffffff16565b9050919050565b600080830361109f5760009050611101565b600082846110ad91906116ca565b90508284826110bc9190611753565b146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f3906117f6565b60405180910390fd5b809150505b92915050565b600061114983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111b5565b905092915050565b6000838311158290611199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611190919061189e565b60405180910390fd5b50600083856111a89190611576565b9050809150509392505050565b600080831182906111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f3919061189e565b60405180910390fd5b506000838561120b9190611753565b9050809150509392505050565b600080fd5b6000819050919050565b6112308161121d565b811461123b57600080fd5b50565b60008135905061124d81611227565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061127e82611253565b9050919050565b61128e81611273565b811461129957600080fd5b50565b6000813590506112ab81611285565b92915050565b600080604083850312156112c8576112c7611218565b5b60006112d68582860161123e565b92505060206112e78582860161129c565b9150509250929050565b6000806040838503121561130857611307611218565b5b60006113168582860161129c565b92505060206113278582860161123e565b9150509250929050565b60006020828403121561134757611346611218565b5b60006113558482850161129c565b91505092915050565b6113678161121d565b82525050565b6000602082019050611382600083018461135e565b92915050565b61139181611273565b82525050565b60006020820190506113ac6000830184611388565b92915050565b6000602082840312156113c8576113c7611218565b5b60006113d68482850161123e565b91505092915050565b60006060820190506113f4600083018661135e565b611401602083018561135e565b61140e604083018461135e565b949350505050565b600082825260208201905092915050565b7f596f75277265206e6f7420612042495443414b45207368617265686f6c64657260008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b6000611483602183611416565b915061148e82611427565b604082019050919050565b600060208201905081810360008301526114b281611476565b9050919050565b60006040820190506114ce6000830185611388565b6114db602083018461135e565b9392505050565b60008115159050919050565b6114f7816114e2565b811461150257600080fd5b50565b600081519050611514816114ee565b92915050565b6000602082840312156115305761152f611218565b5b600061153e84828501611505565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115818261121d565b915061158c8361121d565b92508282101561159f5761159e611547565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006116138261121d565b915061161e8361121d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561165357611652611547565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611694601b83611416565b915061169f8261165e565b602082019050919050565b600060208201905081810360008301526116c381611687565b9050919050565b60006116d58261121d565b91506116e08361121d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561171957611718611547565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061175e8261121d565b91506117698361121d565b92508261177957611778611724565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006117e0602183611416565b91506117eb82611784565b604082019050919050565b6000602082019050818103600083015261180f816117d3565b9050919050565b600081519050919050565b60005b8381101561183f578082015181840152602081019050611824565b8381111561184e576000848401525b50505050565b6000601f19601f8301169050919050565b600061187082611816565b61187a8185611416565b935061188a818560208601611821565b61189381611854565b840191505092915050565b600060208201905081810360008301526118b88184611865565b90509291505056fea26469706673582212207d966a72f394cbd85ef7b58a90874a77b1ddac68e24f0d005d49465cbeec364064736f6c634300080d0033000000000000000000000000da723ddbdeeeb4ba865e71f38068e39386d36902

Deployed Bytecode

0x6080604052600436106102345760003560e01c806370a082311161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca14610874578063f2fde38b1461088b578063f4293890146108b4578063f708a64f146108cb578063f887ea40146108f45761023b565b8063bf56b3711461079f578063bffb691d146107ca578063c9567bf9146107f5578063d0aa7abe1461080c578063dd62ed3e146108375761023b565b80638ecc37fb116100f25780638ecc37fb1461069257806395d89b41146106cf578063a8aa1b31146106fa578063a9059cbb14610725578063b1a4e0dc146107625761023b565b806370a08231146105bd578063736a83a1146105fa57806375f0a87414610625578063764ca51214610650578063893d20e8146106675761023b565b8063313ce567116101bc5780635cc33f74116101805780635cc33f74146104da5780635d098b3814610517578063658d4b7f1461054057806367ee5f091461056957806369fe0e2d146105945761023b565b8063313ce56714610407578063342aa8b5146104325780633e07ce5b1461045b5780634dede3de14610472578063571ac8b01461049d5761023b565b806323b635851161020357806323b63585146102fc57806323b872dd1461033957806329e04b4a146103765780632b112e491461039f5780632f54bf6e146103ca5761023b565b806306fdde0314610240578063095ea7b31461026b57806315f7e05e146102a857806318160ddd146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561091f565b6040516102629190613566565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190613621565b61095c565b60405161029f919061367c565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613697565b610a4e565b005b3480156102dd57600080fd5b506102e6610b26565b6040516102f391906136d3565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e91906136ee565b610b30565b604051610330919061367c565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b919061371b565b610bae565b60405161036d919061367c565b60405180910390f35b34801561038257600080fd5b5061039d600480360381019061039891906136ee565b610dae565b005b3480156103ab57600080fd5b506103b4610e28565b6040516103c191906136d3565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190613697565b610eaa565b6040516103fe919061367c565b60405180910390f35b34801561041357600080fd5b5061041c610f03565b604051610429919061378a565b60405180910390f35b34801561043e57600080fd5b50610459600480360381019061045491906137d1565b610f0c565b005b34801561046757600080fd5b50610470610fb9565b005b34801561047e57600080fd5b5061048761101e565b6040516104949190613820565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190613697565b611042565b6040516104d1919061367c565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190613697565b611075565b60405161050e91906136d3565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190613697565b61111a565b005b34801561054c57600080fd5b50610567600480360381019061056291906137d1565b6111a6565b005b34801561057557600080fd5b5061057e611249565b60405161058b91906136d3565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b691906136ee565b6112e1565b005b3480156105c957600080fd5b506105e460048036038101906105df9190613697565b611333565b6040516105f191906136d3565b60405180910390f35b34801561060657600080fd5b5061060f61137c565b60405161061c91906136d3565b60405180910390f35b34801561063157600080fd5b5061063a611414565b604051610647919061385c565b60405180910390f35b34801561065c57600080fd5b5061066561143a565b005b34801561067357600080fd5b5061067c6114f2565b6040516106899190613820565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190613697565b61151b565b6040516106c691906136d3565b60405180910390f35b3480156106db57600080fd5b506106e46115c0565b6040516106f19190613566565b60405180910390f35b34801561070657600080fd5b5061070f6115fd565b60405161071c9190613820565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190613621565b611623565b604051610759919061367c565b60405180910390f35b34801561076e57600080fd5b5061078960048036038101906107849190613697565b611638565b604051610796919061367c565b60405180910390f35b3480156107ab57600080fd5b506107b461168e565b6040516107c191906136d3565b60405180910390f35b3480156107d657600080fd5b506107df611694565b6040516107ec919061367c565b60405180910390f35b34801561080157600080fd5b5061080a6116a5565b005b34801561081857600080fd5b50610821611711565b60405161082e91906136d3565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190613877565b611717565b60405161086b91906136d3565b60405180910390f35b34801561088057600080fd5b5061088961179e565b005b34801561089757600080fd5b506108b260048036038101906108ad91906138e3565b61182d565b005b3480156108c057600080fd5b506108c96118ef565b005b3480156108d757600080fd5b506108f260048036038101906108ed91906137d1565b6119a8565b005b34801561090057600080fd5b506109096119fe565b604051610916919061396f565b60405180910390f35b60606040518060400160405280600781526020017f42697463616b6500000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3c91906136d3565b60405180910390a36001905092915050565b610a5733610eaa565b610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d906139d6565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610af19190613820565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b3b33610eaa565b610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906139d6565b60405180910390fd5b610ba730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a24565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9a57610d19826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf79092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610da5848484611c5b565b90509392505050565b610db733610eaa565b610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded906139d6565b60405180910390fd5b610e1f6103e8610e118360045461276790919063ffffffff16565b6127e190919063ffffffff16565b60138190555050565b6000610ea5610e58600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611333565b610e97610e86600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611333565b60045461282b90919063ffffffff16565b61282b90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610f1533610eaa565b610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b906139d6565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610fb58282612875565b5050565b610fc233610eaa565b611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff8906139d6565b60405180910390fd5b6000601160016101000a81548160ff021916908315150217905550565b7f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59981565b600061106e827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61095c565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b81526004016110d29190613820565b602060405180830381865afa1580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111139190613a0b565b9050919050565b61112333610eaa565b611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611159906139d6565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111af33610eaa565b6111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e5906139d6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dc9190613a0b565b905090565b6112ea33610eaa565b611329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611320906139d6565b60405180910390fd5b80600b8190555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140f9190613a0b565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61144333610eaa565b611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906139d6565b60405180910390fd5b6000151560148054906101000a900460ff161515146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90613a84565b60405180910390fd5b60016014806101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016115789190613820565b602060405180830381865afa158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190613a0b565b9050919050565b60606040518060400160405280600781526020017f42495443414b4500000000000000000000000000000000000000000000000000815250905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611630338484611c5b565b905092915050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b60148054906101000a900460ff1681565b6116ae33610eaa565b6116ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e4906139d6565b60405180910390fd5b436010819055506001601160006101000a81548160ff021916908315150217905550565b60135481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b81526004016117f99190613820565b600060405180830381600087803b15801561181357600080fd5b505af1158015611827573d6000803e3d6000fd5b50505050565b61183633610eaa565b611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c906139d6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118e49190613ac5565b60405180910390a150565b6118f833610eaa565b611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906139d6565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119a4573d6000803e3d6000fd5b5050565b6119b133610eaa565b6119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e7906139d6565b60405180910390fd5b6119fa8282612875565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611aaf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b4482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612acd90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611be491906136d3565b60405180910390a3600190509392505050565b6000838311158290611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c369190613566565b60405180910390fd5b5060008385611c4e9190613b0f565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d06575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d5b57601160009054906101000a900460ff16611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5190613b8f565b60405180910390fd5b5b60148054906101000a900460ff1615611e5257600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e125750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890613bfb565b60405180910390fd5b5b601160019054906101000a900460ff1615611f5b5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f0f575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5a57601254821115611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613c67565b60405180910390fd5b5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120065750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561205c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121c35742600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106120ac57600080fd5b603c426120b99190613c87565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160105461210b9190613c87565b43116121c2576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b601460159054906101000a900460ff16156121ea576121e3848484611a24565b9050612760565b60006121f530611333565b905060006013548210159050600081801561225d5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156122715750600061226f30611333565b115b9050801561228257612281612b2b565b5b61230b856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf79092919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061235a8888612e0a565b612364578561236f565b61236e8887612f67565b5b90506123c381600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612acd90919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156124ae5750600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561257c57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161254f929190613cdd565b600060405180830381600087803b15801561256957600080fd5b505af192505050801561257a575060015b505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156126245750600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126f257601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016126c5929190613cdd565b600060405180830381600087803b1580156126df57600080fd5b505af19250505080156126f0575060015b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161274f91906136d3565b60405180910390a360019450505050505b9392505050565b600080830361277957600090506127db565b600082846127879190613d06565b90508284826127969190613d8f565b146127d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cd90613e32565b60405180910390fd5b809150505b92915050565b600061282383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130ab565b905092915050565b600061286d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf7565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128ff5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61290857600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156129fa57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016129c3929190613e8d565b600060405180830381600087803b1580156129dd57600080fd5b505af11580156129f1573d6000803e3d6000fd5b50505050612ac9565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612a96929190613cdd565b600060405180830381600087803b158015612ab057600080fd5b505af1158015612ac4573d6000803e3d6000fd5b505050505b5050565b6000808284612adc9190613c87565b905083811015612b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1890613f02565b60405180910390fd5b8091505092915050565b6001601460156101000a81548160ff0219169083151502179055506000612b5130611333565b9050612b6f612b6a6002836127e190919063ffffffff16565b61310e565b612b8b612b866002836127e190919063ffffffff16565b6132b6565b60007f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612be69190613820565b602060405180830381865afa158015612c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c279190613a0b565b905060007f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612ca8929190613cdd565b6020604051808303816000875af1158015612cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ceb9190613f37565b90508015612d8157601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25836040518263ffffffff1660e01b8152600401612d4e91906136d3565b600060405180830381600087803b158015612d6857600080fd5b505af1158015612d7c573d6000803e3d6000fd5b505050505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612de9573d6000803e3d6000fd5b505050506000601460156101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ead5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612f5f5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f5e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612f93600c54612f85600b548661276790919063ffffffff16565b6127e190919063ffffffff16565b9050612fe781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612acd90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161308791906136d3565b60405180910390a36130a2818461282b90919063ffffffff16565b91505092915050565b600080831182906130f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e99190613566565b60405180910390fd5b50600083856131019190613d8f565b9050809150509392505050565b6000600267ffffffffffffffff81111561312b5761312a613f64565b5b6040519080825280602002602001820160405280156131595781602001602082028036833780820191505090505b509050308160008151811061317157613170613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106131e2576131e1613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613280959493929190614080565b600060405180830381600087803b15801561329a57600080fd5b505af11580156132ae573d6000803e3d6000fd5b505050505050565b6000600367ffffffffffffffff8111156132d3576132d2613f64565b5b6040519080825280602002602001820160405280156133015781602001602082028036833780820191505090505b509050308160008151811061331957613318613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061338a57613389613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599816002815181106133f9576133f8613f93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b8152600401613497959493929190614080565b600060405180830381600087803b1580156134b157600080fd5b505af11580156134c5573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135075780820151818401526020810190506134ec565b83811115613516576000848401525b50505050565b6000601f19601f8301169050919050565b6000613538826134cd565b61354281856134d8565b93506135528185602086016134e9565b61355b8161351c565b840191505092915050565b60006020820190508181036000830152613580818461352d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135b88261358d565b9050919050565b6135c8816135ad565b81146135d357600080fd5b50565b6000813590506135e5816135bf565b92915050565b6000819050919050565b6135fe816135eb565b811461360957600080fd5b50565b60008135905061361b816135f5565b92915050565b6000806040838503121561363857613637613588565b5b6000613646858286016135d6565b92505060206136578582860161360c565b9150509250929050565b60008115159050919050565b61367681613661565b82525050565b6000602082019050613691600083018461366d565b92915050565b6000602082840312156136ad576136ac613588565b5b60006136bb848285016135d6565b91505092915050565b6136cd816135eb565b82525050565b60006020820190506136e860008301846136c4565b92915050565b60006020828403121561370457613703613588565b5b60006137128482850161360c565b91505092915050565b60008060006060848603121561373457613733613588565b5b6000613742868287016135d6565b9350506020613753868287016135d6565b92505060406137648682870161360c565b9150509250925092565b600060ff82169050919050565b6137848161376e565b82525050565b600060208201905061379f600083018461377b565b92915050565b6137ae81613661565b81146137b957600080fd5b50565b6000813590506137cb816137a5565b92915050565b600080604083850312156137e8576137e7613588565b5b60006137f6858286016135d6565b9250506020613807858286016137bc565b9150509250929050565b61381a816135ad565b82525050565b60006020820190506138356000830184613811565b92915050565b60006138468261358d565b9050919050565b6138568161383b565b82525050565b6000602082019050613871600083018461384d565b92915050565b6000806040838503121561388e5761388d613588565b5b600061389c858286016135d6565b92505060206138ad858286016135d6565b9150509250929050565b6138c08161383b565b81146138cb57600080fd5b50565b6000813590506138dd816138b7565b92915050565b6000602082840312156138f9576138f8613588565b5b6000613907848285016138ce565b91505092915050565b6000819050919050565b600061393561393061392b8461358d565b613910565b61358d565b9050919050565b60006139478261391a565b9050919050565b60006139598261393c565b9050919050565b6139698161394e565b82525050565b60006020820190506139846000830184613960565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b60006139c06006836134d8565b91506139cb8261398a565b602082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b600081519050613a05816135f5565b92915050565b600060208284031215613a2157613a20613588565b5b6000613a2f848285016139f6565b91505092915050565b7f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000600082015250565b6000613a6e6017836134d8565b9150613a7982613a38565b602082019050919050565b60006020820190508181036000830152613a9d81613a61565b9050919050565b6000613aaf8261393c565b9050919050565b613abf81613aa4565b82525050565b6000602082019050613ada6000830184613ab6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b1a826135eb565b9150613b25836135eb565b925082821015613b3857613b37613ae0565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6000613b796018836134d8565b9150613b8482613b43565b602082019050919050565b60006020820190508181036000830152613ba881613b6c565b9050919050565b7f426f742100000000000000000000000000000000000000000000000000000000600082015250565b6000613be56004836134d8565b9150613bf082613baf565b602082019050919050565b60006020820190508181036000830152613c1481613bd8565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b6000613c51600c836134d8565b9150613c5c82613c1b565b602082019050919050565b60006020820190508181036000830152613c8081613c44565b9050919050565b6000613c92826135eb565b9150613c9d836135eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cd257613cd1613ae0565b5b828201905092915050565b6000604082019050613cf26000830185613811565b613cff60208301846136c4565b9392505050565b6000613d11826135eb565b9150613d1c836135eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5557613d54613ae0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d9a826135eb565b9150613da5836135eb565b925082613db557613db4613d60565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e1c6021836134d8565b9150613e2782613dc0565b604082019050919050565b60006020820190508181036000830152613e4b81613e0f565b9050919050565b6000819050919050565b6000613e77613e72613e6d84613e52565b613910565b6135eb565b9050919050565b613e8781613e5c565b82525050565b6000604082019050613ea26000830185613811565b613eaf6020830184613e7e565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613eec601b836134d8565b9150613ef782613eb6565b602082019050919050565b60006020820190508181036000830152613f1b81613edf565b9050919050565b600081519050613f31816137a5565b92915050565b600060208284031215613f4d57613f4c613588565b5b6000613f5b84828501613f22565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ff7816135ad565b82525050565b60006140098383613fee565b60208301905092915050565b6000602082019050919050565b600061402d82613fc2565b6140378185613fcd565b935061404283613fde565b8060005b8381101561407357815161405a8882613ffd565b975061406583614015565b925050600181019050614046565b5085935050505092915050565b600060a08201905061409560008301886136c4565b6140a26020830187613e7e565b81810360408301526140b48186614022565b90506140c36060830185613811565b6140d060808301846136c4565b969550505050505056fea264697066735822122031364aca216f40850f78c9d1afa4624b97783b611763dbf47b277e16be69f2a164736f6c634300080d0033

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

000000000000000000000000da723ddbdeeeb4ba865e71f38068e39386d36902

-----Decoded View---------------
Arg [0] : _owner (address): 0xdA723ddBdEEEb4BA865e71F38068E39386D36902

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000da723ddbdeeeb4ba865e71f38068e39386d36902


Deployed Bytecode Sourcemap

9369:11682:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12038:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12460:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19381:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11768:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19671:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12978:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20899:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19822:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2902:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11862:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18215:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20528:80;;;;;;;;;;;;;:::i;:::-;;9617:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12684:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20363:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19972:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18876:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20116:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19003:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12208:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20243:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10364:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20726:165;;;;;;;;;;;;;:::i;:::-;;12124:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19503:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11948:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10496:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12814:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20616:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10524:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10804:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18080:115;;;;;;;;;;;;;:::i;:::-;;10684:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12319:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19279:90;;;;;;;;;;;;;:::i;:::-;;3130:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19097:174;;;;;;;;;;;;;:::i;:::-;;18736:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10465:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12038:80;12086:13;12110:5;;;;;;;;;;;;;;;;;12103:12;;12038:80;:::o;12460:216::-;12535:4;12587:6;12552:11;:23;12564:10;12552:23;;;;;;;;;;;;;;;:32;12576:7;12552:32;;;;;;;;;;;;;;;:41;;;;12630:7;12609:37;;12618:10;12609:37;;;12639:6;12609:37;;;;;;:::i;:::-;;;;;;;;12664:4;12657:11;;12460:216;;;;:::o;19381:110::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19450:11:::1;;;;;;;;;;;:25;;;19476:6;19450:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19381:110:::0;:::o;11768:88::-;11823:7;11841:12;;11834:19;;11768:88;:::o;19671:139::-;19735:4;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19759:43:::1;19782:4;19789;;;;;;;;;;;19795:6;19759:14;:43::i;:::-;19752:50;;19671:139:::0;;;:::o;12978:370::-;13078:4;13133:17;13098:11;:19;13110:6;13098:19;;;;;;;;;;;;;;;:31;13118:10;13098:31;;;;;;;;;;;;;;;;:52;13095:186;;13200:69;13236:6;13200:69;;;;;;;;;;;;;;;;;:11;:19;13212:6;13200:19;;;;;;;;;;;;;;;:31;13220:10;13200:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;13166:11;:19;13178:6;13166:19;;;;;;;;;;;;;;;:31;13186:10;13166:31;;;;;;;;;;;;;;;:103;;;;13095:186;13300:40;13314:6;13322:9;13333:6;13300:13;:40::i;:::-;13293:47;;12978:370;;;;;:::o;20899:143::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21000:34:::1;21029:4;21000:24;21017:6;21000:12;;:16;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;20978:19;:56;;;;20899:143:::0;:::o;19822:142::-;19875:7;19902:54;19940:15;19950:4;;;;;;;;;;;19940:9;:15::i;:::-;19902:33;19919:15;19929:4;;;;;;;;;;;19919:9;:15::i;:::-;19902:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19895:61;;19822:142;:::o;2902:103::-;2957:4;2992:5;;;;;;;;;;;2981:16;;:7;:16;;;2974:23;;2902:103;;;:::o;11862:80::-;11914:5;9844:1;11923:16;;11862:80;:::o;18215:158::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18310:6:::1;18292:5;:15;18298:8;18292:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;18327:38;18348:8;18358:6;18327:20;:38::i;:::-;18215:158:::0;;:::o;20528:80::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20595:5:::1;20584:8;;:16;;;;;;;;;;;;;;;;;;20528:80::o:0;9617:83::-;;;:::o;12684:122::-;12739:4;12763:35;12771:7;12780:17;12763:7;:35::i;:::-;12756:42;;12684:122;;;:::o;20363:157::-;20439:7;20466:11;;;;;;;;;;;:33;;;20500:11;20466:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20459:53;;20363:157;;;:::o;19972:135::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20082:16:::1;20056:15;;:43;;;;;;;;;;;;;;;;;;19972:135:::0;:::o;18876:119::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18981:6:::1;18959:11;:19;18971:6;18959:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18876:119:::0;;:::o;20116:115::-;20168:7;20195:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20188:35;;20116:115;:::o;19003:84::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19075:4:::1;19064:8;:15;;;;19003:84:::0;:::o;12208:105::-;12274:7;12292:9;:18;12302:7;12292:18;;;;;;;;;;;;;;;;12285:25;;12208:105;;;:::o;20243:111::-;20293:7;20320:11;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20313:33;;20243:111;:::o;10364:92::-;;;;;;;;;;;;;:::o;20726:165::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20816:5:::1;20796:25;;:16;::::0;::::1;;;;;;;;:25;;;20787:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20879:4;20860:16;::::0;:23:::1;;;;;;;;;;;;;;;;;;20726:165::o:0;12124:78::-;12176:7;12194:5;;;;;;;;;;;12187:12;;12124:78;:::o;19503:156::-;19577:7;19604:11;;;;;;;;;;;:34;;;19639:11;19604:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19597:54;;19503:156;;;:::o;11948:84::-;11998:13;12022:7;;;;;;;;;;;;;;;;;12015:14;;11948:84;:::o;10496:19::-;;;;;;;;;;;;;:::o;12814:156::-;12894:4;12918:44;12932:10;12944:9;12955:6;12918:13;:44::i;:::-;12911:51;;12814:156;;;;:::o;20616:102::-;20672:4;20696:5;:14;20702:7;20696:14;;;;;;;;;;;;;;;;;;;;;;;;;20689:21;;20616:102;;;:::o;10524:25::-;;;;:::o;10804:36::-;;;;;;;;;;;;:::o;18080:115::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18146:12:::1;18133:10;:25;;;;18183:4;18169:11;;:18;;;;;;;;;;;;;;;;;;18080:115::o:0;10684:55::-;;;;:::o;12319:133::-;12403:7;12421:11;:19;12433:6;12421:19;;;;;;;;;;;;;;;:28;12441:7;12421:28;;;;;;;;;;;;;;;;12414:35;;12319:133;;;;:::o;19279:90::-;19324:11;;;;;;;;;;;:25;;;19350:10;19324:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19279:90::o;3130:136::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3214:3:::1;3206:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3233:25;3254:3;3233:25;;;;;;:::i;:::-;;;;;;;;3130:136:::0;:::o;19097:174::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19149:26:::1;19178:21;19149:50;;19218:15;;;;;;;;;;;19210:33;;:53;19244:18;19210:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19138:133;19097:174::o:0;18736:132::-;2801:19;2809:10;2801:7;:19::i;:::-;2793:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18824:36:::1;18845:6;18853;18824:20;:36::i;:::-;18736:132:::0;;:::o;10465:24::-;;;;;;;;;;;;;:::o;15274:330::-;15367:4;15404:53;15426:6;15404:53;;;;;;;;;;;;;;;;;:9;:17;15414:6;15404:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15384:9;:17;15394:6;15384:17;;;;;;;;;;;;;;;:73;;;;15491:32;15516:6;15491:9;:20;15501:9;15491:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15468:9;:20;15478:9;15468:20;;;;;;;;;;;;;;;:55;;;;15556:9;15539:35;;15548:6;15539:35;;;15567:6;15539:35;;;;;;:::i;:::-;;;;;;;;15592:4;15585:11;;15274:330;;;;;:::o;564:192::-;650:7;683:1;678;:6;;686:12;670:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;710:9;726:1;722;:5;;;;:::i;:::-;710:17;;747:1;740:8;;;564:192;;;;;:::o;13356:1906::-;13448:4;13478:5;;;;;;;;;;;13469:14;;:6;:14;;;;:35;;;;;13499:5;;;;;;;;;;13487:17;;:9;:17;;;;13469:35;13465:89;;;13514:11;;;;;;;;;;;13506:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13465:89;13609:16;;;;;;;;;;13605:102;;;13652:5;:13;13658:6;13652:13;;;;;;;;;;;;;;;;;;;;;;;;;13651:14;:35;;;;;13670:5;:16;13676:9;13670:16;;;;;;;;;;;;;;;;;;;;;;;;;13669:17;13651:35;13642:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13605:102;13721:8;;;;;;;;;;;13717:130;;;13759:5;;;;;;;;;;13751:13;;:6;:13;;;;:34;;;;;13780:5;;;;;;;;;;13768:17;;:9;:17;;;;13751:34;13747:80;;;13804:6;;13796;:14;;13787:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13747:80;13717:130;13873:4;;;;;;;;;;;13863:14;;:6;:14;;;:46;;;;;13902:6;;;;;;;;;;;13881:28;;:9;:28;;;;13863:46;:73;;;;;13914:11;:22;13926:9;13914:22;;;;;;;;;;;;;;;;;;;;;;;;;13913:23;13863:73;13859:383;;;13984:15;13962:8;:19;13971:9;13962:19;;;;;;;;;;;;;;;;:37;13953:47;;;;;;14055:10;14037:15;:28;;;;:::i;:::-;14015:8;:19;14024:9;14015:19;;;;;;;;;;;;;;;:50;;;;14114:1;14101:10;;:14;;;;:::i;:::-;14084:12;:32;14080:151;;14157:4;14138:5;:16;14144:9;14138:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14210:4;14180:16;:27;14197:9;14180:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14080:151;13859:383;14264:6;;;;;;;;;;;14261:63;;;14280:41;14295:6;14303:9;14314:6;14280:14;:41::i;:::-;14273:48;;;;14261:63;14342:28;14373:24;14391:4;14373:9;:24::i;:::-;14342:55;;14410:24;14461:19;;14437:20;:43;;14410:70;;14497:19;14520;:38;;;;;14554:4;;;;;;;;;;;14543:15;;:9;:15;;;14520:38;:70;;;;;14589:1;14562:24;14580:4;14562:9;:24::i;:::-;:28;14520:70;14497:94;;14605:14;14602:33;;;14622:10;:8;:10::i;:::-;14602:33;14667:53;14689:6;14667:53;;;;;;;;;;;;;;;;;:9;:17;14677:6;14667:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14647:9;:17;14657:6;14647:17;;;;;;;;;;;;;;;:73;;;;14733:22;14758:32;14772:6;14780:9;14758:13;:32::i;:::-;:67;;14819:6;14758:67;;;14793:23;14801:6;14809;14793:7;:23::i;:::-;14758:67;14733:92;;14869:40;14894:14;14869:9;:20;14879:9;14869:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14846:9;:20;14856:9;14846:20;;;;;;;;;;;;;;;:63;;;;14935:4;;;;;;;;;;;14925:14;;:6;:14;;;;:43;;;;;14944:16;:24;14961:6;14944:24;;;;;;;;;;;;;;;;;;;;;;;;;14943:25;14925:43;14922:114;;;14975:11;;;;;;;;;;;:20;;;14996:6;15004:9;:17;15014:6;15004:17;;;;;;;;;;;;;;;;14975:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14971:63;14922:114;15062:4;;;;;;;;;;;15049:17;;:9;:17;;;;:49;;;;;15071:16;:27;15088:9;15071:27;;;;;;;;;;;;;;;;;;;;;;;;;15070:28;15049:49;15046:126;;;15105:11;;;;;;;;;;;:20;;;15126:9;15137;:20;15147:9;15137:20;;;;;;;;;;;;;;;;15105:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15101:69;15046:126;15206:9;15189:43;;15198:6;15189:43;;;15217:14;15189:43;;;;;;:::i;:::-;;;;;;;;15250:4;15243:11;;;;;;13356:1906;;;;;;:::o;762:250::-;820:7;849:1;844;:6;840:47;;874:1;867:8;;;;840:47;899:9;915:1;911;:5;;;;:::i;:::-;899:17;;944:1;939;935;:5;;;;:::i;:::-;:10;927:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1003:1;996:8;;;762:250;;;;;:::o;1018:132::-;1076:7;1103:39;1107:1;1110;1103:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1096:46;;1018:132;;;;:::o;422:136::-;480:7;507:43;511:1;514;507:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;500:50;;422:136;;;;:::o;18391:337::-;18496:4;18478:23;;:6;:23;;;;:41;;;;;18515:4;;;;;;;;;;;18505:14;;:6;:14;;;;18478:41;18470:50;;;;;;18558:6;18531:16;:24;18548:6;18531:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18578:6;18575:146;;;18600:11;;;;;;;;;;;:20;;;18621:6;18629:1;18600:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18575:146;;;18662:11;;;;;;;;;;;:20;;;18683:6;18691:9;:17;18701:6;18691:17;;;;;;;;;;;;;;;;18662:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18575:146;18391:337;;:::o;235:181::-;293:7;313:9;329:1;325;:5;;;;:::i;:::-;313:17;;354:1;349;:6;;341:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;407:1;400:8;;;235:181;;;;:::o;16196:549::-;10904:4;10895:6;;:13;;;;;;;;;;;;;;;;;;16247:20:::1;16270:24;16288:4;16270:9;:24::i;:::-;16247:47;;16315:37;16332:19;16349:1;16332:12;:16;;:19;;;;:::i;:::-;16315:16;:37::i;:::-;16363:38;16381:19;16398:1;16381:12;:16;;:19;;;;:::i;:::-;16363:17;:38::i;:::-;16414:17;16441:4;16434:22;;;16465:4;16434:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16414:57;;16484:12;16506:4;16499:21;;;16529:11;;;;;;;;;;;16543:9;16499:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16484:69;;16570:7;16566:82;;;16594:11;;;;;;;;;;;:19;;;16614:9;16594:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16566:82;16681:15;;;;;;;;;;;16673:33;;:56;16707:21;16673:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16234:511;;;10922:5:::0;10913:6;;:14;;;;;;;;;;;;;;;;;;16196:549::o;15615:206::-;15696:4;15724:11;:19;15736:6;15724:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;15747:11;:22;15759:9;15747:22;;;;;;;;;;;;;;;;;;;;;;;;;15724:45;15722:48;:90;;;;;15786:4;;;;;;;;;;;15776:14;;:6;:14;;;:35;;;;15807:4;;;;;;;;;;;15794:17;;:9;:17;;;15776:35;15722:90;15713:101;;15615:206;;;;:::o;15829:354::-;15896:7;15916:17;15956:40;15981:14;;15956:20;15967:8;;15956:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;15944:52;;16034:39;16063:9;16034;:24;16052:4;16034:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16007:9;:24;16025:4;16007:24;;;;;;;;;;;;;;;:66;;;;16114:4;16089:42;;16098:6;16089:42;;;16121:9;16089:42;;;;;;:::i;:::-;;;;;;;;16154:21;16165:9;16154:6;:10;;:21;;;;:::i;:::-;16147:28;;;15829:354;;;;:::o;1156:345::-;1242:7;1341:1;1337;:5;1344:12;1329:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1368:9;1384:1;1380;:5;;;;:::i;:::-;1368:17;;1492:1;1485:8;;;1156:345;;;;;:::o;17199:489::-;17327:21;17365:1;17351:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17327:40;;17396:4;17378;17383:1;17378:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17422:4;;;;;;;;;;;17412;17417:1;17412:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;17465:6;;;;;;;;;;;:57;;;17537:11;17563:1;17607:4;17634;17654:15;17465:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17254:434;17199:489;:::o;16761:430::-;16830:21;16868:1;16854:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16830:40;;16899:4;16881;16886:1;16881:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16925:4;;;;;;;;;;;16915;16920:1;16915:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;16950:4;16940;16945:1;16940:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;16993:6;;;;;;;;;;;:60;;;17068:11;17094:1;17110:4;17137;17157:15;16993:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16817:374;16761:430;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:619::-;4593:6;4601;4609;4658:2;4646:9;4637:7;4633:23;4629:32;4626:119;;;4664:79;;:::i;:::-;4626:119;4784:1;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4755:117;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;5039:2;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5010:118;4516:619;;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:116::-;5641:21;5656:5;5641:21;:::i;:::-;5634:5;5631:32;5621:60;;5677:1;5674;5667:12;5621:60;5571:116;:::o;5693:133::-;5736:5;5774:6;5761:20;5752:29;;5790:30;5814:5;5790:30;:::i;:::-;5693:133;;;;:::o;5832:468::-;5897:6;5905;5954:2;5942:9;5933:7;5929:23;5925:32;5922:119;;;5960:79;;:::i;:::-;5922:119;6080:1;6105:53;6150:7;6141:6;6130:9;6126:22;6105:53;:::i;:::-;6095:63;;6051:117;6207:2;6233:50;6275:7;6266:6;6255:9;6251:22;6233:50;:::i;:::-;6223:60;;6178:115;5832:468;;;;;:::o;6306:118::-;6393:24;6411:5;6393:24;:::i;:::-;6388:3;6381:37;6306:118;;:::o;6430:222::-;6523:4;6561:2;6550:9;6546:18;6538:26;;6574:71;6642:1;6631:9;6627:17;6618:6;6574:71;:::i;:::-;6430:222;;;;:::o;6658:104::-;6703:7;6732:24;6750:5;6732:24;:::i;:::-;6721:35;;6658:104;;;:::o;6768:142::-;6871:32;6897:5;6871:32;:::i;:::-;6866:3;6859:45;6768:142;;:::o;6916:254::-;7025:4;7063:2;7052:9;7048:18;7040:26;;7076:87;7160:1;7149:9;7145:17;7136:6;7076:87;:::i;:::-;6916:254;;;;:::o;7176:474::-;7244:6;7252;7301:2;7289:9;7280:7;7276:23;7272:32;7269:119;;;7307:79;;:::i;:::-;7269:119;7427:1;7452:53;7497:7;7488:6;7477:9;7473:22;7452:53;:::i;:::-;7442:63;;7398:117;7554:2;7580:53;7625:7;7616:6;7605:9;7601:22;7580:53;:::i;:::-;7570:63;;7525:118;7176:474;;;;;:::o;7656:138::-;7737:32;7763:5;7737:32;:::i;:::-;7730:5;7727:43;7717:71;;7784:1;7781;7774:12;7717:71;7656:138;:::o;7800:155::-;7854:5;7892:6;7879:20;7870:29;;7908:41;7943:5;7908:41;:::i;:::-;7800:155;;;;:::o;7961:345::-;8028:6;8077:2;8065:9;8056:7;8052:23;8048:32;8045:119;;;8083:79;;:::i;:::-;8045:119;8203:1;8228:61;8281:7;8272:6;8261:9;8257:22;8228:61;:::i;:::-;8218:71;;8174:125;7961:345;;;;:::o;8312:60::-;8340:3;8361:5;8354:12;;8312:60;;;:::o;8378:142::-;8428:9;8461:53;8479:34;8488:24;8506:5;8488:24;:::i;:::-;8479:34;:::i;:::-;8461:53;:::i;:::-;8448:66;;8378:142;;;:::o;8526:126::-;8576:9;8609:37;8640:5;8609:37;:::i;:::-;8596:50;;8526:126;;;:::o;8658:144::-;8726:9;8759:37;8790:5;8759:37;:::i;:::-;8746:50;;8658:144;;;:::o;8808:167::-;8913:55;8962:5;8913:55;:::i;:::-;8908:3;8901:68;8808:167;;:::o;8981:258::-;9092:4;9130:2;9119:9;9115:18;9107:26;;9143:89;9229:1;9218:9;9214:17;9205:6;9143:89;:::i;:::-;8981:258;;;;:::o;9245:156::-;9385:8;9381:1;9373:6;9369:14;9362:32;9245:156;:::o;9407:365::-;9549:3;9570:66;9634:1;9629:3;9570:66;:::i;:::-;9563:73;;9645:93;9734:3;9645:93;:::i;:::-;9763:2;9758:3;9754:12;9747:19;;9407:365;;;:::o;9778:419::-;9944:4;9982:2;9971:9;9967:18;9959:26;;10031:9;10025:4;10021:20;10017:1;10006:9;10002:17;9995:47;10059:131;10185:4;10059:131;:::i;:::-;10051:139;;9778:419;;;:::o;10203:143::-;10260:5;10291:6;10285:13;10276:22;;10307:33;10334:5;10307:33;:::i;:::-;10203:143;;;;:::o;10352:351::-;10422:6;10471:2;10459:9;10450:7;10446:23;10442:32;10439:119;;;10477:79;;:::i;:::-;10439:119;10597:1;10622:64;10678:7;10669:6;10658:9;10654:22;10622:64;:::i;:::-;10612:74;;10568:128;10352:351;;;;:::o;10709:173::-;10849:25;10845:1;10837:6;10833:14;10826:49;10709:173;:::o;10888:366::-;11030:3;11051:67;11115:2;11110:3;11051:67;:::i;:::-;11044:74;;11127:93;11216:3;11127:93;:::i;:::-;11245:2;11240:3;11236:12;11229:19;;10888:366;;;:::o;11260:419::-;11426:4;11464:2;11453:9;11449:18;11441:26;;11513:9;11507:4;11503:20;11499:1;11488:9;11484:17;11477:47;11541:131;11667:4;11541:131;:::i;:::-;11533:139;;11260:419;;;:::o;11685:134::-;11743:9;11776:37;11807:5;11776:37;:::i;:::-;11763:50;;11685:134;;;:::o;11825:147::-;11920:45;11959:5;11920:45;:::i;:::-;11915:3;11908:58;11825:147;;:::o;11978:238::-;12079:4;12117:2;12106:9;12102:18;12094:26;;12130:79;12206:1;12195:9;12191:17;12182:6;12130:79;:::i;:::-;11978:238;;;;:::o;12222:180::-;12270:77;12267:1;12260:88;12367:4;12364:1;12357:15;12391:4;12388:1;12381:15;12408:191;12448:4;12468:20;12486:1;12468:20;:::i;:::-;12463:25;;12502:20;12520:1;12502:20;:::i;:::-;12497:25;;12541:1;12538;12535:8;12532:34;;;12546:18;;:::i;:::-;12532:34;12591:1;12588;12584:9;12576:17;;12408:191;;;;:::o;12605:174::-;12745:26;12741:1;12733:6;12729:14;12722:50;12605:174;:::o;12785:366::-;12927:3;12948:67;13012:2;13007:3;12948:67;:::i;:::-;12941:74;;13024:93;13113:3;13024:93;:::i;:::-;13142:2;13137:3;13133:12;13126:19;;12785:366;;;:::o;13157:419::-;13323:4;13361:2;13350:9;13346:18;13338:26;;13410:9;13404:4;13400:20;13396:1;13385:9;13381:17;13374:47;13438:131;13564:4;13438:131;:::i;:::-;13430:139;;13157:419;;;:::o;13582:154::-;13722:6;13718:1;13710:6;13706:14;13699:30;13582:154;:::o;13742:365::-;13884:3;13905:66;13969:1;13964:3;13905:66;:::i;:::-;13898:73;;13980:93;14069:3;13980:93;:::i;:::-;14098:2;14093:3;14089:12;14082:19;;13742:365;;;:::o;14113:419::-;14279:4;14317:2;14306:9;14302:18;14294:26;;14366:9;14360:4;14356:20;14352:1;14341:9;14337:17;14330:47;14394:131;14520:4;14394:131;:::i;:::-;14386:139;;14113:419;;;:::o;14538:162::-;14678:14;14674:1;14666:6;14662:14;14655:38;14538:162;:::o;14706:366::-;14848:3;14869:67;14933:2;14928:3;14869:67;:::i;:::-;14862:74;;14945:93;15034:3;14945:93;:::i;:::-;15063:2;15058:3;15054:12;15047:19;;14706:366;;;:::o;15078:419::-;15244:4;15282:2;15271:9;15267:18;15259:26;;15331:9;15325:4;15321:20;15317:1;15306:9;15302:17;15295:47;15359:131;15485:4;15359:131;:::i;:::-;15351:139;;15078:419;;;:::o;15503:305::-;15543:3;15562:20;15580:1;15562:20;:::i;:::-;15557:25;;15596:20;15614:1;15596:20;:::i;:::-;15591:25;;15750:1;15682:66;15678:74;15675:1;15672:81;15669:107;;;15756:18;;:::i;:::-;15669:107;15800:1;15797;15793:9;15786:16;;15503:305;;;;:::o;15814:332::-;15935:4;15973:2;15962:9;15958:18;15950:26;;15986:71;16054:1;16043:9;16039:17;16030:6;15986:71;:::i;:::-;16067:72;16135:2;16124:9;16120:18;16111:6;16067:72;:::i;:::-;15814:332;;;;;:::o;16152:348::-;16192:7;16215:20;16233:1;16215:20;:::i;:::-;16210:25;;16249:20;16267:1;16249:20;:::i;:::-;16244:25;;16437:1;16369:66;16365:74;16362:1;16359:81;16354:1;16347:9;16340:17;16336:105;16333:131;;;16444:18;;:::i;:::-;16333:131;16492:1;16489;16485:9;16474:20;;16152:348;;;;:::o;16506:180::-;16554:77;16551:1;16544:88;16651:4;16648:1;16641:15;16675:4;16672:1;16665:15;16692:185;16732:1;16749:20;16767:1;16749:20;:::i;:::-;16744:25;;16783:20;16801:1;16783:20;:::i;:::-;16778:25;;16822:1;16812:35;;16827:18;;:::i;:::-;16812:35;16869:1;16866;16862:9;16857:14;;16692:185;;;;:::o;16883:220::-;17023:34;17019:1;17011:6;17007:14;17000:58;17092:3;17087:2;17079:6;17075:15;17068:28;16883:220;:::o;17109:366::-;17251:3;17272:67;17336:2;17331:3;17272:67;:::i;:::-;17265:74;;17348:93;17437:3;17348:93;:::i;:::-;17466:2;17461:3;17457:12;17450:19;;17109:366;;;:::o;17481:419::-;17647:4;17685:2;17674:9;17670:18;17662:26;;17734:9;17728:4;17724:20;17720:1;17709:9;17705:17;17698:47;17762:131;17888:4;17762:131;:::i;:::-;17754:139;;17481:419;;;:::o;17906:85::-;17951:7;17980:5;17969:16;;17906:85;;;:::o;17997:158::-;18055:9;18088:61;18106:42;18115:32;18141:5;18115:32;:::i;:::-;18106:42;:::i;:::-;18088:61;:::i;:::-;18075:74;;17997:158;;;:::o;18161:147::-;18256:45;18295:5;18256:45;:::i;:::-;18251:3;18244:58;18161:147;;:::o;18314:348::-;18443:4;18481:2;18470:9;18466:18;18458:26;;18494:71;18562:1;18551:9;18547:17;18538:6;18494:71;:::i;:::-;18575:80;18651:2;18640:9;18636:18;18627:6;18575:80;:::i;:::-;18314:348;;;;;:::o;18668:177::-;18808:29;18804:1;18796:6;18792:14;18785:53;18668:177;:::o;18851:366::-;18993:3;19014:67;19078:2;19073:3;19014:67;:::i;:::-;19007:74;;19090:93;19179:3;19090:93;:::i;:::-;19208:2;19203:3;19199:12;19192:19;;18851:366;;;:::o;19223:419::-;19389:4;19427:2;19416:9;19412:18;19404:26;;19476:9;19470:4;19466:20;19462:1;19451:9;19447:17;19440:47;19504:131;19630:4;19504:131;:::i;:::-;19496:139;;19223:419;;;:::o;19648:137::-;19702:5;19733:6;19727:13;19718:22;;19749:30;19773:5;19749:30;:::i;:::-;19648:137;;;;:::o;19791:345::-;19858:6;19907:2;19895:9;19886:7;19882:23;19878:32;19875:119;;;19913:79;;:::i;:::-;19875:119;20033:1;20058:61;20111:7;20102:6;20091:9;20087:22;20058:61;:::i;:::-;20048:71;;20004:125;19791:345;;;;:::o;20142:180::-;20190:77;20187:1;20180:88;20287:4;20284:1;20277:15;20311:4;20308:1;20301:15;20328:180;20376:77;20373:1;20366:88;20473:4;20470:1;20463:15;20497:4;20494:1;20487:15;20514:114;20581:6;20615:5;20609:12;20599:22;;20514:114;;;:::o;20634:184::-;20733:11;20767:6;20762:3;20755:19;20807:4;20802:3;20798:14;20783:29;;20634:184;;;;:::o;20824:132::-;20891:4;20914:3;20906:11;;20944:4;20939:3;20935:14;20927:22;;20824:132;;;:::o;20962:108::-;21039:24;21057:5;21039:24;:::i;:::-;21034:3;21027:37;20962:108;;:::o;21076:179::-;21145:10;21166:46;21208:3;21200:6;21166:46;:::i;:::-;21244:4;21239:3;21235:14;21221:28;;21076:179;;;;:::o;21261:113::-;21331:4;21363;21358:3;21354:14;21346:22;;21261:113;;;:::o;21410:732::-;21529:3;21558:54;21606:5;21558:54;:::i;:::-;21628:86;21707:6;21702:3;21628:86;:::i;:::-;21621:93;;21738:56;21788:5;21738:56;:::i;:::-;21817:7;21848:1;21833:284;21858:6;21855:1;21852:13;21833:284;;;21934:6;21928:13;21961:63;22020:3;22005:13;21961:63;:::i;:::-;21954:70;;22047:60;22100:6;22047:60;:::i;:::-;22037:70;;21893:224;21880:1;21877;21873:9;21868:14;;21833:284;;;21837:14;22133:3;22126:10;;21534:608;;;21410:732;;;;:::o;22148:831::-;22411:4;22449:3;22438:9;22434:19;22426:27;;22463:71;22531:1;22520:9;22516:17;22507:6;22463:71;:::i;:::-;22544:80;22620:2;22609:9;22605:18;22596:6;22544:80;:::i;:::-;22671:9;22665:4;22661:20;22656:2;22645:9;22641:18;22634:48;22699:108;22802:4;22793:6;22699:108;:::i;:::-;22691:116;;22817:72;22885:2;22874:9;22870:18;22861:6;22817:72;:::i;:::-;22899:73;22967:3;22956:9;22952:19;22943:6;22899:73;:::i;:::-;22148:831;;;;;;;;:::o

Swarm Source

ipfs://7d966a72f394cbd85ef7b58a90874a77b1ddac68e24f0d005d49465cbeec3640
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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