ETH Price: $3,903.74 (+6.37%)

Token

ERC-20: Inverse Capo ETF (CAPO)
 

Overview

Max Total Supply

1,000,000,000 CAPO

Holders

529

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
thadfollowill.eth
Balance
712,766.36551424063059434 CAPO

Value
$0.00
0x83aa28be7881b31e00026af8ce2feb6bfd00a23e
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:
Capo

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-05
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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 balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory { 
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    constructor(address creatorOwner) { _owner = creatorOwner; }
    modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; }
    function owner() public view returns (address) { return _owner; }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0); 
        emit OwnershipTransferred(address(0)); 
    }
}

contract Capo is IERC20, Auth {
    string private constant _name         = "Inverse Capo ETF";
    string private constant _symbol       = "CAPO";
    uint8 private constant _decimals      = 18;
    uint256 private constant _totalSupply = 1_000_000_000 * (10**_decimals);
    uint256 private _deployedTimer=0;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isBlackListed;
    mapping (address => bool) private _noFees;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    address payable private _walletTax;
    uint256 private constant _taxSwapMin = _totalSupply / 500000;
    uint256 private constant _taxSwapMax = _totalSupply / 1000;
  
    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool public limited = true;
    bool public transferDelayEnabled = false;
    uint256 public maxHoldingAmount = 10_000_001 * (10**_decimals);  // 1%
    uint256 public minHoldingAmount = 100_000 * (10**_decimals);     // 0.01%;
    
    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { 
        _inTaxSwap = true; 
        _; 
        _inTaxSwap = false; 
    }

    constructor() Auth(msg.sender) { 

        _balances[msg.sender] = (_totalSupply / 1000 ) * 60;        // 5% CEX + 1% CAPO Donation
        _balances[address(this)] = (_totalSupply / 1000 ) * 940;    // 94% LP

        emit Transfer(address(0), address(msg.sender), _balances[address(msg.sender)]);
        emit Transfer(address(0), address(this), _balances[address(this)]);
        
        setTaxWallet(msg.sender);

        _walletTax = payable(msg.sender);
        _noFees[_walletTax] = true;
        _noFees[_owner] = true;
        _noFees[address(this)] = true;

        _deployedTimer = block.timestamp;
  
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
        emit Transfer(address(0), address(this), _balances[address(this)]);
    }

    receive() external payable {}
    
    function totalSupply() external pure 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 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 transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        require(!isBlackListed[sender], "Sender Blacklisted");
        require(!isBlackListed[recipient], "Receiver Blacklisted");

        if (!_tradingOpen) { require(_noFees[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient]) { _swapTaxAndLiquify(); }

        if (limited && sender == _primaryLP) {
            require(balanceOf(recipient) + amount <= maxHoldingAmount && balanceOf(recipient) + amount >= minHoldingAmount, "Forbid");
        }

        if (transferDelayEnabled) {
            if (recipient != _swapRouterAddress && recipient != _primaryLP) {
                require(_holderLastTransferTimestamp[tx.origin] < block.number, "Only one transfer per block allowed.");
                _holderLastTransferTimestamp[tx.origin] = block.number;
            }
        }

        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        if ( _taxAmount > 0 ) { 
            _balances[address(this)] += _taxAmount; 
        }

        _balances[recipient] += _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }    

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance);
        _isLP[_primaryLP] = true;
        _tradingOpen = true;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, _owner, block.timestamp );
    }

    function _getTimePassed() internal view returns (uint256) {
        return (block.timestamp - _deployedTimer);
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sender]) { checkResult = true; } 

        return checkResult;
    }

    function setTaxWallet(address newTaxWallet) public onlyOwner {
        _walletTax = payable(newTaxWallet);
    }

    function setBlackList(address[] memory _users, bool set) public onlyOwner {
        for(uint256 i = 0; i < _users.length; i++){
            isBlackListed[_users[i]] = set;
        }
    }

    function removeLimits() external onlyOwner{
        limited = false;
        transferDelayEnabled=false;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {

        uint256 taxAmount = 0;
        if ( _tradingOpen && !_noFees[sender] && !_noFees[recipient] ) { 
            if ( _isLP[sender] || _isLP[recipient] ) {

                uint256 taxRate;
                uint256 timePassed = _getTimePassed();

                if(timePassed < 130){                // first 2 min
                    taxRate = 90;
                } else if(timePassed < 300){         // first 5min
                    taxRate = 40;
                } else if(timePassed < 900){         // first 15min
                    taxRate = 30;
                } else if(timePassed < 3600){        // first 60min
                    taxRate = 20;
                } else if (timePassed < 4 * 3600){   // first 4h
                    taxRate = 10;
                } else {                             // 0% tax after 4h
                    taxRate = 0;
                }

                taxAmount = (amount / 100) * taxRate;
            }
        }

        return taxAmount;
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));

        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

            _swapTaxTokensForEth(_taxTokensAvailable);
            uint256 _contractETHBalance = address(this).balance;

            if(_contractETHBalance > 0) { 
                bool success;
                (success,) = _walletTax.call{value: (_contractETHBalance)}("");
                require(success);
            }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"bool","name":"set","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","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":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526000600155737a250d5630b4cf539739df2c5dacb4c659f2488d600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506012600a620000a49190620008fd565b62989681620000b491906200094e565b600c556012600a620000c79190620008fd565b620186a0620000d791906200094e565b600d556000600e60016101000a81548160ff0219169083151502179055503480156200010257600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050603c6103e86012600a6200015a9190620008fd565b633b9aca006200016b91906200094e565b620001779190620009c8565b6200018391906200094e565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103ac6103e86012600a620001dc9190620008fd565b633b9aca00620001ed91906200094e565b620001f99190620009c8565b6200020591906200094e565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620002e7919062000a11565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200038e919062000a11565b60405180910390a3620003a7336200068e60201b60201c565b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426001819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620005d9919062000a11565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000680919062000a11565b60405180910390a362000ab1565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200071f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007169062000a8f565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f157808604811115620007c957620007c862000763565b5b6001851615620007d95780820291505b8081029050620007e98562000792565b9450620007a9565b94509492505050565b6000826200080c5760019050620008df565b816200081c5760009050620008df565b8160018114620008355760028114620008405762000876565b6001915050620008df565b60ff84111562000855576200085462000763565b5b8360020a9150848211156200086f576200086e62000763565b5b50620008df565b5060208310610133831016604e8410600b8410161715620008b05782820a905083811115620008aa57620008a962000763565b5b620008df565b620008bf84848460016200079f565b92509050818404811115620008d957620008d862000763565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200090a82620008e6565b91506200091783620008f0565b9250620009467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007fa565b905092915050565b60006200095b82620008e6565b91506200096883620008e6565b92508282026200097881620008e6565b9150828204841483151762000992576200099162000763565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009d582620008e6565b9150620009e283620008e6565b925082620009f557620009f462000999565b5b828204905092915050565b62000a0b81620008e6565b82525050565b600060208201905062000a28600083018462000a00565b92915050565b600082825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b600062000a7760188362000a2e565b915062000a848262000a3f565b602082019050919050565b6000602082019050818103600083015262000aaa8162000a68565b9050919050565b6132ab8062000ac16000396000f3fe6080604052600436106101235760003560e01c806389f9a1d3116100a0578063c876d0b911610064578063c876d0b9146103d2578063dd62ed3e146103fd578063e47d60601461043a578063e8078d9414610477578063ea414b28146104815761012a565b806389f9a1d3146102eb5780638da5cb5b146103165780638f85a0431461034157806395d89b411461036a578063a9059cbb146103955761012a565b8063313ce567116100e7578063313ce5671461022a57806370a0823114610255578063715018a614610292578063751039fc146102a9578063860a32ec146102c05761012a565b806306fdde031461012f578063095ea7b31461015a57806318160ddd146101975780631ab99e12146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b506101446104aa565b604051610151919061234b565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612415565b6104e7565b60405161018e9190612470565b60405180910390f35b3480156101a357600080fd5b506101ac6105d9565b6040516101b9919061249a565b60405180910390f35b3480156101ce57600080fd5b506101d76105fd565b6040516101e4919061249a565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f91906124b5565b610603565b6040516102219190612470565b60405180910390f35b34801561023657600080fd5b5061023f61080d565b60405161024c9190612524565b60405180910390f35b34801561026157600080fd5b5061027c6004803603810190610277919061253f565b610816565b604051610289919061249a565b60405180910390f35b34801561029e57600080fd5b506102a761085f565b005b3480156102b557600080fd5b506102be610968565b005b3480156102cc57600080fd5b506102d5610a2e565b6040516102e29190612470565b60405180910390f35b3480156102f757600080fd5b50610300610a41565b60405161030d919061249a565b60405180910390f35b34801561032257600080fd5b5061032b610a47565b604051610338919061257b565b60405180910390f35b34801561034d57600080fd5b506103686004803603810190610363919061270a565b610a70565b005b34801561037657600080fd5b5061037f610b93565b60405161038c919061234b565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190612415565b610bd0565b6040516103c99190612470565b60405180910390f35b3480156103de57600080fd5b506103e7610c2d565b6040516103f49190612470565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f9190612766565b610c40565b604051610431919061249a565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c919061253f565b610cc7565b60405161046e9190612470565b60405180910390f35b61047f610ce7565b005b34801561048d57600080fd5b506104a860048036038101906104a3919061253f565b61121a565b005b60606040518060400160405280601081526020017f496e7665727365204361706f2045544600000000000000000000000000000000815250905090565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105c7919061249a565b60405180910390a36001905092915050565b60006012600a6105e99190612908565b633b9aca006105f89190612953565b905090565b600d5481565b600061060e846112ec565b61064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610644906129e1565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107f95781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107789190612a01565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610804848484611372565b90509392505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490612a81565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161095e919061257b565b60405180910390a1565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ed90612a81565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff021916908315150217905550565b600b60009054906101000a900460ff1681565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590612a81565b60405180910390fd5b60005b8251811015610b8e578160046000858481518110610b2257610b21612aa1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b8690612ad0565b915050610b01565b505050565b60606040518060400160405280600481526020017f4341504f00000000000000000000000000000000000000000000000000000000815250905090565b6000610bdb336112ec565b610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c11906129e1565b60405180910390fd5b610c25338484611372565b905092915050565b600b60019054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60046020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90612a81565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890612b64565b60405180910390fd5b600e60009054906101000a900460ff1615610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6890612bd0565b60405180910390fd5b6000341180610e805750600047115b610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612c3c565b60405180910390fd5b6000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890612ca8565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190612cdd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190612cdd565b6040518363ffffffff1660e01b815260040161109c929190612d0a565b6020604051808303816000875af11580156110bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110df9190612cdd565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611168600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205447611a15565b6001600a6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90612a81565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009050600e60009054906101000a900460ff16156113115760019050611369565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561136857600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612d7f565b60405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561146f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146690612deb565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390612e57565b60405180910390fd5b600e60009054906101000a900460ff1661159d57600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661159c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611593906129e1565b60405180910390fd5b5b600e60019054906101000a900460ff161580156116035750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561161157611610611aef565b5b600b60009054906101000a900460ff16801561167a5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156116f957600c548261168c85610816565b6116969190612e77565b111580156116b95750600d54826116ac85610816565b6116b69190612e77565b10155b6116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef90612ef7565b60405180910390fd5b5b600b60019054906101000a900460ff161561187857737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ac5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118775743600660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612f89565b60405180910390fd5b43600660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6000611885858585611c92565b9050600081846118959190612a01565b905083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118e69190612a01565b92505081905550600082111561194d5781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119459190612e77565b925050819055505b80600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199c9190612e77565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a00919061249a565b60405180910390a36001925050509392505050565b611a1e82611e9d565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611aa596959493929190612fee565b60606040518083038185885af1158015611ac3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ae89190613064565b5050505050565b6001600e60016101000a81548160ff0219169083151502179055506000611b1530610816565b90506207a1206012600a611b299190612908565b633b9aca00611b389190612953565b611b4291906130e6565b8110158015611b5d5750600e60009054906101000a900460ff165b15611c74576103e86012600a611b739190612908565b633b9aca00611b829190612953565b611b8c91906130e6565b8110611bbf576103e86012600a611ba39190612908565b633b9aca00611bb29190612953565b611bbc91906130e6565b90505b611bc881612087565b60004790506000811115611c72576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611c1e90613148565b60006040518083038185875af1925050503d8060008114611c5b576040519150601f19603f3d011682016040523d82523d6000602084013e611c60565b606091505b50508091505080611c7057600080fd5b505b505b506000600e60016101000a81548160ff021916908315150217905550565b60008060009050600e60009054906101000a900460ff168015611cff5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d555750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e9257600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dfb5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e9157600080611e0b6122a6565b90506082811015611e1f57605a9150611e74565b61012c811015611e325760289150611e73565b610384811015611e4557601e9150611e72565b610e10811015611e585760149150611e71565b613840811015611e6b57600a9150611e70565b600091505b5b5b5b5b81606486611e8291906130e6565b611e8c9190612953565b925050505b5b809150509392505050565b80600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612084577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161207b919061249a565b60405180910390a35b50565b61209081611e9d565b6000600267ffffffffffffffff8111156120ad576120ac61259b565b5b6040519080825280602002602001820160405280156120db5781602001602082028036833780820191505090505b50905030816000815181106120f3576120f2612aa1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121be9190612cdd565b816001815181106121d2576121d1612aa1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161227095949392919061321b565b600060405180830381600087803b15801561228a57600080fd5b505af115801561229e573d6000803e3d6000fd5b505050505050565b6000600154426122b69190612a01565b905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156122f55780820151818401526020810190506122da565b60008484015250505050565b6000601f19601f8301169050919050565b600061231d826122bb565b61232781856122c6565b93506123378185602086016122d7565b61234081612301565b840191505092915050565b600060208201905081810360008301526123658184612312565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123ac82612381565b9050919050565b6123bc816123a1565b81146123c757600080fd5b50565b6000813590506123d9816123b3565b92915050565b6000819050919050565b6123f2816123df565b81146123fd57600080fd5b50565b60008135905061240f816123e9565b92915050565b6000806040838503121561242c5761242b612377565b5b600061243a858286016123ca565b925050602061244b85828601612400565b9150509250929050565b60008115159050919050565b61246a81612455565b82525050565b60006020820190506124856000830184612461565b92915050565b612494816123df565b82525050565b60006020820190506124af600083018461248b565b92915050565b6000806000606084860312156124ce576124cd612377565b5b60006124dc868287016123ca565b93505060206124ed868287016123ca565b92505060406124fe86828701612400565b9150509250925092565b600060ff82169050919050565b61251e81612508565b82525050565b60006020820190506125396000830184612515565b92915050565b60006020828403121561255557612554612377565b5b6000612563848285016123ca565b91505092915050565b612575816123a1565b82525050565b6000602082019050612590600083018461256c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125d382612301565b810181811067ffffffffffffffff821117156125f2576125f161259b565b5b80604052505050565b600061260561236d565b905061261182826125ca565b919050565b600067ffffffffffffffff8211156126315761263061259b565b5b602082029050602081019050919050565b600080fd5b600061265a61265584612616565b6125fb565b9050808382526020820190506020840283018581111561267d5761267c612642565b5b835b818110156126a6578061269288826123ca565b84526020840193505060208101905061267f565b5050509392505050565b600082601f8301126126c5576126c4612596565b5b81356126d5848260208601612647565b91505092915050565b6126e781612455565b81146126f257600080fd5b50565b600081359050612704816126de565b92915050565b6000806040838503121561272157612720612377565b5b600083013567ffffffffffffffff81111561273f5761273e61237c565b5b61274b858286016126b0565b925050602061275c858286016126f5565b9150509250929050565b6000806040838503121561277d5761277c612377565b5b600061278b858286016123ca565b925050602061279c858286016123ca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561282c57808604811115612808576128076127a6565b5b60018516156128175780820291505b8081029050612825856127d5565b94506127ec565b94509492505050565b6000826128455760019050612901565b816128535760009050612901565b81600181146128695760028114612873576128a2565b6001915050612901565b60ff841115612885576128846127a6565b5b8360020a91508482111561289c5761289b6127a6565b5b50612901565b5060208310610133831016604e8410600b84101617156128d75782820a9050838111156128d2576128d16127a6565b5b612901565b6128e484848460016127e2565b925090508184048111156128fb576128fa6127a6565b5b81810290505b9392505050565b6000612913826123df565b915061291e83612508565b925061294b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612835565b905092915050565b600061295e826123df565b9150612969836123df565b9250828202612977816123df565b9150828204841483151761298e5761298d6127a6565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006129cb6010836122c6565b91506129d682612995565b602082019050919050565b600060208201905081810360008301526129fa816129be565b9050919050565b6000612a0c826123df565b9150612a17836123df565b9250828203905081811115612a2f57612a2e6127a6565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612a6b6018836122c6565b9150612a7682612a35565b602082019050919050565b60006020820190508181036000830152612a9a81612a5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612adb826123df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b0d57612b0c6127a6565b5b600182019050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000612b4e6009836122c6565b9150612b5982612b18565b602082019050919050565b60006020820190508181036000830152612b7d81612b41565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000612bba600f836122c6565b9150612bc582612b84565b602082019050919050565b60006020820190508181036000830152612be981612bad565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000612c26601d836122c6565b9150612c3182612bf0565b602082019050919050565b60006020820190508181036000830152612c5581612c19565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000612c926015836122c6565b9150612c9d82612c5c565b602082019050919050565b60006020820190508181036000830152612cc181612c85565b9050919050565b600081519050612cd7816123b3565b92915050565b600060208284031215612cf357612cf2612377565b5b6000612d0184828501612cc8565b91505092915050565b6000604082019050612d1f600083018561256c565b612d2c602083018461256c565b9392505050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000612d69601d836122c6565b9150612d7482612d33565b602082019050919050565b60006020820190508181036000830152612d9881612d5c565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000612dd56012836122c6565b9150612de082612d9f565b602082019050919050565b60006020820190508181036000830152612e0481612dc8565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000612e416014836122c6565b9150612e4c82612e0b565b602082019050919050565b60006020820190508181036000830152612e7081612e34565b9050919050565b6000612e82826123df565b9150612e8d836123df565b9250828201905080821115612ea557612ea46127a6565b5b92915050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612ee16006836122c6565b9150612eec82612eab565b602082019050919050565b60006020820190508181036000830152612f1081612ed4565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000612f736024836122c6565b9150612f7e82612f17565b604082019050919050565b60006020820190508181036000830152612fa281612f66565b9050919050565b6000819050919050565b6000819050919050565b6000612fd8612fd3612fce84612fa9565b612fb3565b6123df565b9050919050565b612fe881612fbd565b82525050565b600060c082019050613003600083018961256c565b613010602083018861248b565b61301d6040830187612fdf565b61302a6060830186612fdf565b613037608083018561256c565b61304460a083018461248b565b979650505050505050565b60008151905061305e816123e9565b92915050565b60008060006060848603121561307d5761307c612377565b5b600061308b8682870161304f565b935050602061309c8682870161304f565b92505060406130ad8682870161304f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130f1826123df565b91506130fc836123df565b92508261310c5761310b6130b7565b5b828204905092915050565b600081905092915050565b50565b6000613132600083613117565b915061313d82613122565b600082019050919050565b600061315382613125565b9150819050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613192816123a1565b82525050565b60006131a48383613189565b60208301905092915050565b6000602082019050919050565b60006131c88261315d565b6131d28185613168565b93506131dd83613179565b8060005b8381101561320e5781516131f58882613198565b9750613200836131b0565b9250506001810190506131e1565b5085935050505092915050565b600060a082019050613230600083018861248b565b61323d6020830187612fdf565b818103604083015261324f81866131bd565b905061325e606083018561256c565b61326b608083018461248b565b969550505050505056fea2646970667358221220f95275227a1ca0cf4c79400366a6e4e80926aaded28e0b8659d1a86664f8440f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101235760003560e01c806389f9a1d3116100a0578063c876d0b911610064578063c876d0b9146103d2578063dd62ed3e146103fd578063e47d60601461043a578063e8078d9414610477578063ea414b28146104815761012a565b806389f9a1d3146102eb5780638da5cb5b146103165780638f85a0431461034157806395d89b411461036a578063a9059cbb146103955761012a565b8063313ce567116100e7578063313ce5671461022a57806370a0823114610255578063715018a614610292578063751039fc146102a9578063860a32ec146102c05761012a565b806306fdde031461012f578063095ea7b31461015a57806318160ddd146101975780631ab99e12146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b506101446104aa565b604051610151919061234b565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612415565b6104e7565b60405161018e9190612470565b60405180910390f35b3480156101a357600080fd5b506101ac6105d9565b6040516101b9919061249a565b60405180910390f35b3480156101ce57600080fd5b506101d76105fd565b6040516101e4919061249a565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f91906124b5565b610603565b6040516102219190612470565b60405180910390f35b34801561023657600080fd5b5061023f61080d565b60405161024c9190612524565b60405180910390f35b34801561026157600080fd5b5061027c6004803603810190610277919061253f565b610816565b604051610289919061249a565b60405180910390f35b34801561029e57600080fd5b506102a761085f565b005b3480156102b557600080fd5b506102be610968565b005b3480156102cc57600080fd5b506102d5610a2e565b6040516102e29190612470565b60405180910390f35b3480156102f757600080fd5b50610300610a41565b60405161030d919061249a565b60405180910390f35b34801561032257600080fd5b5061032b610a47565b604051610338919061257b565b60405180910390f35b34801561034d57600080fd5b506103686004803603810190610363919061270a565b610a70565b005b34801561037657600080fd5b5061037f610b93565b60405161038c919061234b565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190612415565b610bd0565b6040516103c99190612470565b60405180910390f35b3480156103de57600080fd5b506103e7610c2d565b6040516103f49190612470565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f9190612766565b610c40565b604051610431919061249a565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c919061253f565b610cc7565b60405161046e9190612470565b60405180910390f35b61047f610ce7565b005b34801561048d57600080fd5b506104a860048036038101906104a3919061253f565b61121a565b005b60606040518060400160405280601081526020017f496e7665727365204361706f2045544600000000000000000000000000000000815250905090565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105c7919061249a565b60405180910390a36001905092915050565b60006012600a6105e99190612908565b633b9aca006105f89190612953565b905090565b600d5481565b600061060e846112ec565b61064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610644906129e1565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107f95781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107789190612a01565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610804848484611372565b90509392505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490612a81565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161095e919061257b565b60405180910390a1565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ed90612a81565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff021916908315150217905550565b600b60009054906101000a900460ff1681565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590612a81565b60405180910390fd5b60005b8251811015610b8e578160046000858481518110610b2257610b21612aa1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b8690612ad0565b915050610b01565b505050565b60606040518060400160405280600481526020017f4341504f00000000000000000000000000000000000000000000000000000000815250905090565b6000610bdb336112ec565b610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c11906129e1565b60405180910390fd5b610c25338484611372565b905092915050565b600b60019054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60046020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90612a81565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890612b64565b60405180910390fd5b600e60009054906101000a900460ff1615610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6890612bd0565b60405180910390fd5b6000341180610e805750600047115b610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612c3c565b60405180910390fd5b6000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890612ca8565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190612cdd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190612cdd565b6040518363ffffffff1660e01b815260040161109c929190612d0a565b6020604051808303816000875af11580156110bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110df9190612cdd565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611168600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205447611a15565b6001600a6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90612a81565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009050600e60009054906101000a900460ff16156113115760019050611369565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561136857600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612d7f565b60405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561146f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146690612deb565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390612e57565b60405180910390fd5b600e60009054906101000a900460ff1661159d57600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661159c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611593906129e1565b60405180910390fd5b5b600e60019054906101000a900460ff161580156116035750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561161157611610611aef565b5b600b60009054906101000a900460ff16801561167a5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156116f957600c548261168c85610816565b6116969190612e77565b111580156116b95750600d54826116ac85610816565b6116b69190612e77565b10155b6116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef90612ef7565b60405180910390fd5b5b600b60019054906101000a900460ff161561187857737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ac5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118775743600660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612f89565b60405180910390fd5b43600660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6000611885858585611c92565b9050600081846118959190612a01565b905083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118e69190612a01565b92505081905550600082111561194d5781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119459190612e77565b925050819055505b80600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199c9190612e77565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a00919061249a565b60405180910390a36001925050509392505050565b611a1e82611e9d565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611aa596959493929190612fee565b60606040518083038185885af1158015611ac3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ae89190613064565b5050505050565b6001600e60016101000a81548160ff0219169083151502179055506000611b1530610816565b90506207a1206012600a611b299190612908565b633b9aca00611b389190612953565b611b4291906130e6565b8110158015611b5d5750600e60009054906101000a900460ff165b15611c74576103e86012600a611b739190612908565b633b9aca00611b829190612953565b611b8c91906130e6565b8110611bbf576103e86012600a611ba39190612908565b633b9aca00611bb29190612953565b611bbc91906130e6565b90505b611bc881612087565b60004790506000811115611c72576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611c1e90613148565b60006040518083038185875af1925050503d8060008114611c5b576040519150601f19603f3d011682016040523d82523d6000602084013e611c60565b606091505b50508091505080611c7057600080fd5b505b505b506000600e60016101000a81548160ff021916908315150217905550565b60008060009050600e60009054906101000a900460ff168015611cff5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d555750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e9257600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dfb5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e9157600080611e0b6122a6565b90506082811015611e1f57605a9150611e74565b61012c811015611e325760289150611e73565b610384811015611e4557601e9150611e72565b610e10811015611e585760149150611e71565b613840811015611e6b57600a9150611e70565b600091505b5b5b5b5b81606486611e8291906130e6565b611e8c9190612953565b925050505b5b809150509392505050565b80600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612084577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161207b919061249a565b60405180910390a35b50565b61209081611e9d565b6000600267ffffffffffffffff8111156120ad576120ac61259b565b5b6040519080825280602002602001820160405280156120db5781602001602082028036833780820191505090505b50905030816000815181106120f3576120f2612aa1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121be9190612cdd565b816001815181106121d2576121d1612aa1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161227095949392919061321b565b600060405180830381600087803b15801561228a57600080fd5b505af115801561229e573d6000803e3d6000fd5b505050505050565b6000600154426122b69190612a01565b905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156122f55780820151818401526020810190506122da565b60008484015250505050565b6000601f19601f8301169050919050565b600061231d826122bb565b61232781856122c6565b93506123378185602086016122d7565b61234081612301565b840191505092915050565b600060208201905081810360008301526123658184612312565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123ac82612381565b9050919050565b6123bc816123a1565b81146123c757600080fd5b50565b6000813590506123d9816123b3565b92915050565b6000819050919050565b6123f2816123df565b81146123fd57600080fd5b50565b60008135905061240f816123e9565b92915050565b6000806040838503121561242c5761242b612377565b5b600061243a858286016123ca565b925050602061244b85828601612400565b9150509250929050565b60008115159050919050565b61246a81612455565b82525050565b60006020820190506124856000830184612461565b92915050565b612494816123df565b82525050565b60006020820190506124af600083018461248b565b92915050565b6000806000606084860312156124ce576124cd612377565b5b60006124dc868287016123ca565b93505060206124ed868287016123ca565b92505060406124fe86828701612400565b9150509250925092565b600060ff82169050919050565b61251e81612508565b82525050565b60006020820190506125396000830184612515565b92915050565b60006020828403121561255557612554612377565b5b6000612563848285016123ca565b91505092915050565b612575816123a1565b82525050565b6000602082019050612590600083018461256c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125d382612301565b810181811067ffffffffffffffff821117156125f2576125f161259b565b5b80604052505050565b600061260561236d565b905061261182826125ca565b919050565b600067ffffffffffffffff8211156126315761263061259b565b5b602082029050602081019050919050565b600080fd5b600061265a61265584612616565b6125fb565b9050808382526020820190506020840283018581111561267d5761267c612642565b5b835b818110156126a6578061269288826123ca565b84526020840193505060208101905061267f565b5050509392505050565b600082601f8301126126c5576126c4612596565b5b81356126d5848260208601612647565b91505092915050565b6126e781612455565b81146126f257600080fd5b50565b600081359050612704816126de565b92915050565b6000806040838503121561272157612720612377565b5b600083013567ffffffffffffffff81111561273f5761273e61237c565b5b61274b858286016126b0565b925050602061275c858286016126f5565b9150509250929050565b6000806040838503121561277d5761277c612377565b5b600061278b858286016123ca565b925050602061279c858286016123ca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561282c57808604811115612808576128076127a6565b5b60018516156128175780820291505b8081029050612825856127d5565b94506127ec565b94509492505050565b6000826128455760019050612901565b816128535760009050612901565b81600181146128695760028114612873576128a2565b6001915050612901565b60ff841115612885576128846127a6565b5b8360020a91508482111561289c5761289b6127a6565b5b50612901565b5060208310610133831016604e8410600b84101617156128d75782820a9050838111156128d2576128d16127a6565b5b612901565b6128e484848460016127e2565b925090508184048111156128fb576128fa6127a6565b5b81810290505b9392505050565b6000612913826123df565b915061291e83612508565b925061294b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612835565b905092915050565b600061295e826123df565b9150612969836123df565b9250828202612977816123df565b9150828204841483151761298e5761298d6127a6565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006129cb6010836122c6565b91506129d682612995565b602082019050919050565b600060208201905081810360008301526129fa816129be565b9050919050565b6000612a0c826123df565b9150612a17836123df565b9250828203905081811115612a2f57612a2e6127a6565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612a6b6018836122c6565b9150612a7682612a35565b602082019050919050565b60006020820190508181036000830152612a9a81612a5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612adb826123df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b0d57612b0c6127a6565b5b600182019050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000612b4e6009836122c6565b9150612b5982612b18565b602082019050919050565b60006020820190508181036000830152612b7d81612b41565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000612bba600f836122c6565b9150612bc582612b84565b602082019050919050565b60006020820190508181036000830152612be981612bad565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000612c26601d836122c6565b9150612c3182612bf0565b602082019050919050565b60006020820190508181036000830152612c5581612c19565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000612c926015836122c6565b9150612c9d82612c5c565b602082019050919050565b60006020820190508181036000830152612cc181612c85565b9050919050565b600081519050612cd7816123b3565b92915050565b600060208284031215612cf357612cf2612377565b5b6000612d0184828501612cc8565b91505092915050565b6000604082019050612d1f600083018561256c565b612d2c602083018461256c565b9392505050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000612d69601d836122c6565b9150612d7482612d33565b602082019050919050565b60006020820190508181036000830152612d9881612d5c565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000612dd56012836122c6565b9150612de082612d9f565b602082019050919050565b60006020820190508181036000830152612e0481612dc8565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000612e416014836122c6565b9150612e4c82612e0b565b602082019050919050565b60006020820190508181036000830152612e7081612e34565b9050919050565b6000612e82826123df565b9150612e8d836123df565b9250828201905080821115612ea557612ea46127a6565b5b92915050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612ee16006836122c6565b9150612eec82612eab565b602082019050919050565b60006020820190508181036000830152612f1081612ed4565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000612f736024836122c6565b9150612f7e82612f17565b604082019050919050565b60006020820190508181036000830152612fa281612f66565b9050919050565b6000819050919050565b6000819050919050565b6000612fd8612fd3612fce84612fa9565b612fb3565b6123df565b9050919050565b612fe881612fbd565b82525050565b600060c082019050613003600083018961256c565b613010602083018861248b565b61301d6040830187612fdf565b61302a6060830186612fdf565b613037608083018561256c565b61304460a083018461248b565b979650505050505050565b60008151905061305e816123e9565b92915050565b60008060006060848603121561307d5761307c612377565b5b600061308b8682870161304f565b935050602061309c8682870161304f565b92505060406130ad8682870161304f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130f1826123df565b91506130fc836123df565b92508261310c5761310b6130b7565b5b828204905092915050565b600081905092915050565b50565b6000613132600083613117565b915061313d82613122565b600082019050919050565b600061315382613125565b9150819050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613192816123a1565b82525050565b60006131a48383613189565b60208301905092915050565b6000602082019050919050565b60006131c88261315d565b6131d28185613168565b93506131dd83613179565b8060005b8381101561320e5781516131f58882613198565b9750613200836131b0565b9250506001810190506131e1565b5085935050505092915050565b600060a082019050613230600083018861248b565b61323d6020830187612fdf565b818103604083015261324f81866131bd565b905061325e606083018561256c565b61326b608083018461248b565b969550505050505056fea2646970667358221220f95275227a1ca0cf4c79400366a6e4e80926aaded28e0b8659d1a86664f8440f64736f6c63430008110033

Deployed Bytecode Sourcemap

2046:9400:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4654:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4994:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4384:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3283:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5451:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4478:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4740:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1902:137;;;;;;;;;;;;;:::i;:::-;;9182:113;;;;;;;;;;;;;:::i;:::-;;3127:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3207:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1831:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8983:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4564:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5218:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3160:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4851:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2498:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7593:606;;;:::i;:::-;;8861:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4654:80;4702:13;4726:5;;;;;;;;;;;;;;;;;4719:12;;4654:80;:::o;4994:216::-;5069:4;5121:6;5086:11;:23;5098:10;5086:23;;;;;;;;;;;;;;;:32;5110:7;5086:32;;;;;;;;;;;;;;;:41;;;;5164:7;5143:37;;5152:10;5143:37;;;5173:6;5143:37;;;;;;:::i;:::-;;;;;;;;5198:4;5191:11;;4994:216;;;;:::o;4384:88::-;4439:7;2241:2;2307;:13;;;;:::i;:::-;2290;:31;;;;:::i;:::-;4450:19;;4384:88;:::o;3283:59::-;;;;:::o;5451:404::-;5551:4;5576:25;5594:6;5576:17;:25::i;:::-;5568:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;5671:17;5636:11;:19;5648:6;5636:19;;;;;;;;;;;;;;;:31;5656:10;5636:31;;;;;;;;;;;;;;;;:52;5633:157;;5772:6;5738:11;:19;5750:6;5738:19;;;;;;;;;;;;;;;:31;5758:10;5738:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5704:11;:19;5716:6;5704:19;;;;;;;;;;;;;;;:31;5724:10;5704:31;;;;;;;;;;;;;;;:74;;;;5633:157;5807:40;5821:6;5829:9;5840:6;5807:13;:40::i;:::-;5800:47;;5451:404;;;;;:::o;4478:80::-;4530:5;2241:2;4539:16;;4478:80;:::o;4740:105::-;4806:7;4824:9;:18;4834:7;4824:18;;;;;;;;;;;;;;;;4817:25;;4740:105;;;:::o;1902:137::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;1979:1:::1;1962:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1998:32;2027:1;1998:32;;;;;;:::i;:::-;;;;;;;;1902:137::o:0;9182:113::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9245:5:::1;9235:7;;:15;;;;;;;;;;;;;;;;;;9282:5;9261:20;;:26;;;;;;;;;;;;;;;;;;9182:113::o:0;3127:26::-;;;;;;;;;;;;;:::o;3207:62::-;;;;:::o;1831:65::-;1869:7;1887:6;;;;;;;;;;;1880:13;;1831:65;:::o;8983:191::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9072:9:::1;9068:99;9091:6;:13;9087:1;:17;9068:99;;;9152:3;9125:13;:24;9139:6;9146:1;9139:9;;;;;;;;:::i;:::-;;;;;;;;9125:24;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;9106:3;;;;;:::i;:::-;;;;9068:99;;;;8983:191:::0;;:::o;4564:84::-;4614:13;4638:7;;;;;;;;;;;;;;;;;4631:14;;4564:84;:::o;5218:225::-;5298:4;5323:29;5341:10;5323:17;:29::i;:::-;5315:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5391:44;5405:10;5417:9;5428:6;5391:13;:44::i;:::-;5384:51;;5218:225;;;;:::o;3160:40::-;;;;;;;;;;;;;:::o;4851:133::-;4935:7;4953:11;:19;4965:6;4953:19;;;;;;;;;;;;;;;:28;4973:7;4953:28;;;;;;;;;;;;;;;;4946:35;;4851:133;;;;:::o;2498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;7593:606::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3487:4:::1;3474:10;;:17;;;;;;;;;;;;;;;;;;7697:1:::2;7675:24;;:10;;;;;;;;;;;:24;;;7667:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7733:12;;;;;;;;;;;7732:13;7724:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7796:1;7784:9;:13;:40;;;;7823:1;7801:21;:23;7784:40;7776:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7902:1;7877:9;:24;7895:4;7877:24;;;;;;;;;;;;;;;;:26;7869:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7971:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7953:58;;;8020:4;8027:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7953:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7940:10;;:113;;;;;;;;;;;;;;;;;;8064:62;8078:9;:24;8096:4;8078:24;;;;;;;;;;;;;;;;8104:21;8064:13;:62::i;:::-;8157:4;8137:5;:17;8143:10;;;;;;;;;;;8137:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;8187:4;8172:12;;:19;;;;;;;;;;;;;;;;;;3529:5:::1;3516:10;;:18;;;;;;;;;;;;;;;;;;7593:606::o:0;8861:114::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8954:12:::1;8933:10;;:34;;;;;;;;;;;;;;;;;;8861:114:::0;:::o;8595:258::-;8660:4;8676:16;8695:5;8676:24;;8716:12;;;;;;;;;;;8711:103;;;8747:4;8733:18;;8711:103;;;8774:7;:15;8782:6;8774:15;;;;;;;;;;;;;;;;;;;;;;;;;8770:44;;;8807:4;8793:18;;8770:44;8711:103;8834:11;8827:18;;;8595:258;;;:::o;5863:1393::-;5955:4;5998:1;5980:20;;:6;:20;;;5972:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6054:13;:21;6068:6;6054:21;;;;;;;;;;;;;;;;;;;;;;;;;6053:22;6045:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6118:13;:24;6132:9;6118:24;;;;;;;;;;;;;;;;;;;;;;;;;6117:25;6109:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6185:12;;;;;;;;;;;6180:68;;6209:7;:15;6217:6;6209:15;;;;;;;;;;;;;;;;;;;;;;;;;6201:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6180:68;6264:10;;;;;;;;;;;6263:11;:31;;;;;6278:5;:16;6284:9;6278:16;;;;;;;;;;;;;;;;;;;;;;;;;6263:31;6258:63;;;6298:20;:18;:20::i;:::-;6258:63;6337:7;;;;;;;;;;;:31;;;;;6358:10;;;;;;;;;;;6348:20;;:6;:20;;;6337:31;6333:185;;;6426:16;;6416:6;6393:20;6403:9;6393;:20::i;:::-;:29;;;;:::i;:::-;:49;;:102;;;;;6479:16;;6469:6;6446:20;6456:9;6446;:20::i;:::-;:29;;;;:::i;:::-;:49;;6393:102;6385:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;6333:185;6534:20;;;;;;;;;;;6530:327;;;2903:42;6575:31;;:9;:31;;;;:58;;;;;6623:10;;;;;;;;;;;6610:23;;:9;:23;;;;6575:58;6571:275;;;6704:12;6662:28;:39;6691:9;6662:39;;;;;;;;;;;;;;;;:54;6654:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;6818:12;6776:28;:39;6805:9;6776:39;;;;;;;;;;;;;;;:54;;;;6571:275;6530:327;6869:18;6890:40;6904:6;6912:9;6923:6;6890:13;:40::i;:::-;6869:61;;6941:23;6976:10;6967:6;:19;;;;:::i;:::-;6941:45;;7018:6;6997:9;:17;7007:6;6997:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;7053:1;7040:10;:14;7035:89;;;7101:10;7073:9;:24;7091:4;7073:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;7035:89;7160:15;7136:9;:20;7146:9;7136:20;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;7208:9;7191:35;;7200:6;7191:35;;;7219:6;7191:35;;;;;;:::i;:::-;;;;;;;;7244:4;7237:11;;;;5863:1393;;;;;:::o;8207:254::-;8295:28;8310:12;8295:14;:28::i;:::-;8334:18;;;;;;;;;;;:34;;;8376:13;8401:4;8408:12;8422:1;8425;8428:6;;;;;;;;;;8436:15;8334:119;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8207:254;;:::o;10438:631::-;3487:4;3474:10;;:17;;;;;;;;;;;;;;;;;;10499:27:::1;10529:24;10547:4;10529:9;:24::i;:::-;10499:54;;2767:6;2241:2;2307;:13;;;;:::i;:::-;2290;:31;;;;:::i;:::-;2752:21;;;;:::i;:::-;10571:19;:34;;:50;;;;;10609:12;;;;;;;;;;;10571:50;10566:496;;;2834:4;2241:2;2307;:13;;;;:::i;:::-;2290;:31;;;;:::i;:::-;2819:19;;;;:::i;:::-;10644;:34;10639:80;;2834:4;2241:2;2307;:13;;;;:::i;:::-;2290;:31;;;;:::i;:::-;2819:19;;;;:::i;:::-;10683:33;;10639:80;10735:41;10756:19;10735:20;:41::i;:::-;10791:27;10821:21;10791:51;;10884:1;10862:19;:23;10859:192;;;10907:12;10951:10;;;;;;;;;;;:15;;10975:19;10951:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10938:62;;;;;11027:7;11019:16;;;::::0;::::1;;10887:164;10859:192;10624:438;10566:496;10488:581;3529:5:::0;3516:10;;:18;;;;;;;;;;;;;;;;;;10438:631::o;9303:1127::-;9400:7;9422:17;9442:1;9422:21;;9459:12;;;;;;;;;;;:32;;;;;9476:7;:15;9484:6;9476:15;;;;;;;;;;;;;;;;;;;;;;;;;9475:16;9459:32;:55;;;;;9496:7;:18;9504:9;9496:18;;;;;;;;;;;;;;;;;;;;;;;;;9495:19;9459:55;9454:940;;;9538:5;:13;9544:6;9538:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;9555:5;:16;9561:9;9555:16;;;;;;;;;;;;;;;;;;;;;;;;;9538:33;9533:850;;;9595:15;9629:18;9650:16;:14;:16::i;:::-;9629:37;;9703:3;9690:10;:16;9687:624;;;9770:2;9760:12;;9687:624;;;9814:3;9801:10;:16;9798:513;;;9873:2;9863:12;;9798:513;;;9917:3;9904:10;:16;9901:410;;;9977:2;9967:12;;9901:410;;;10021:4;10008:10;:17;10005:306;;;10081:2;10071:12;;10005:306;;;10126:8;10113:10;:21;10109:202;;;10182:2;10172:12;;10109:202;;;10290:1;10280:11;;10109:202;10005:306;9901:410;9798:513;9687:624;10360:7;10353:3;10344:6;:12;;;;:::i;:::-;10343:24;;;;:::i;:::-;10331:36;;9574:809;;9533:850;9454:940;10413:9;10406:16;;;9303:1127;;;;;:::o;7268:317::-;7388:12;7339:11;:26;7359:4;7339:26;;;;;;;;;;;;;;;:46;2903:42;7339:46;;;;;;;;;;;;;;;;:61;7334:244;;;7467:17;7418:11;:26;7438:4;7418:26;;;;;;;;;;;;;;;:46;2903:42;7418:46;;;;;;;;;;;;;;;:66;;;;2903:42;7504:62;;7521:4;7504:62;;;7548:17;7504:62;;;;;;:::i;:::-;;;;;;;;7334:244;7268:317;:::o;11077:366::-;11147:27;11162:11;11147:14;:27::i;:::-;11185:21;11223:1;11209:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11185:40;;11254:4;11236;11241:1;11236:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11280:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11270:4;11275:1;11270:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;11316:18;;;;;;;;;;;:69;;;11386:11;11398:1;11400:4;11413;11419:15;11316:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11136:307;11077:366;:::o;8469:118::-;8518:7;8564:14;;8546:15;:32;;;;:::i;:::-;8538:41;;8469:118;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:117::-;5649:1;5646;5639:12;5663:180;5711:77;5708:1;5701:88;5808:4;5805:1;5798:15;5832:4;5829:1;5822:15;5849:281;5932:27;5954:4;5932:27;:::i;:::-;5924:6;5920:40;6062:6;6050:10;6047:22;6026:18;6014:10;6011:34;6008:62;6005:88;;;6073:18;;:::i;:::-;6005:88;6113:10;6109:2;6102:22;5892:238;5849:281;;:::o;6136:129::-;6170:6;6197:20;;:::i;:::-;6187:30;;6226:33;6254:4;6246:6;6226:33;:::i;:::-;6136:129;;;:::o;6271:311::-;6348:4;6438:18;6430:6;6427:30;6424:56;;;6460:18;;:::i;:::-;6424:56;6510:4;6502:6;6498:17;6490:25;;6570:4;6564;6560:15;6552:23;;6271:311;;;:::o;6588:117::-;6697:1;6694;6687:12;6728:710;6824:5;6849:81;6865:64;6922:6;6865:64;:::i;:::-;6849:81;:::i;:::-;6840:90;;6950:5;6979:6;6972:5;6965:21;7013:4;7006:5;7002:16;6995:23;;7066:4;7058:6;7054:17;7046:6;7042:30;7095:3;7087:6;7084:15;7081:122;;;7114:79;;:::i;:::-;7081:122;7229:6;7212:220;7246:6;7241:3;7238:15;7212:220;;;7321:3;7350:37;7383:3;7371:10;7350:37;:::i;:::-;7345:3;7338:50;7417:4;7412:3;7408:14;7401:21;;7288:144;7272:4;7267:3;7263:14;7256:21;;7212:220;;;7216:21;6830:608;;6728:710;;;;;:::o;7461:370::-;7532:5;7581:3;7574:4;7566:6;7562:17;7558:27;7548:122;;7589:79;;:::i;:::-;7548:122;7706:6;7693:20;7731:94;7821:3;7813:6;7806:4;7798:6;7794:17;7731:94;:::i;:::-;7722:103;;7538:293;7461:370;;;;:::o;7837:116::-;7907:21;7922:5;7907:21;:::i;:::-;7900:5;7897:32;7887:60;;7943:1;7940;7933:12;7887:60;7837:116;:::o;7959:133::-;8002:5;8040:6;8027:20;8018:29;;8056:30;8080:5;8056:30;:::i;:::-;7959:133;;;;:::o;8098:678::-;8188:6;8196;8245:2;8233:9;8224:7;8220:23;8216:32;8213:119;;;8251:79;;:::i;:::-;8213:119;8399:1;8388:9;8384:17;8371:31;8429:18;8421:6;8418:30;8415:117;;;8451:79;;:::i;:::-;8415:117;8556:78;8626:7;8617:6;8606:9;8602:22;8556:78;:::i;:::-;8546:88;;8342:302;8683:2;8709:50;8751:7;8742:6;8731:9;8727:22;8709:50;:::i;:::-;8699:60;;8654:115;8098:678;;;;;:::o;8782:474::-;8850:6;8858;8907:2;8895:9;8886:7;8882:23;8878:32;8875:119;;;8913:79;;:::i;:::-;8875:119;9033:1;9058:53;9103:7;9094:6;9083:9;9079:22;9058:53;:::i;:::-;9048:63;;9004:117;9160:2;9186:53;9231:7;9222:6;9211:9;9207:22;9186:53;:::i;:::-;9176:63;;9131:118;8782:474;;;;;:::o;9262:180::-;9310:77;9307:1;9300:88;9407:4;9404:1;9397:15;9431:4;9428:1;9421:15;9448:102;9490:8;9537:5;9534:1;9530:13;9509:34;;9448:102;;;:::o;9556:848::-;9617:5;9624:4;9648:6;9639:15;;9672:5;9663:14;;9686:712;9707:1;9697:8;9694:15;9686:712;;;9802:4;9797:3;9793:14;9787:4;9784:24;9781:50;;;9811:18;;:::i;:::-;9781:50;9861:1;9851:8;9847:16;9844:451;;;10276:4;10269:5;10265:16;10256:25;;9844:451;10326:4;10320;10316:15;10308:23;;10356:32;10379:8;10356:32;:::i;:::-;10344:44;;9686:712;;;9556:848;;;;;;;:::o;10410:1073::-;10464:5;10655:8;10645:40;;10676:1;10667:10;;10678:5;;10645:40;10704:4;10694:36;;10721:1;10712:10;;10723:5;;10694:36;10790:4;10838:1;10833:27;;;;10874:1;10869:191;;;;10783:277;;10833:27;10851:1;10842:10;;10853:5;;;10869:191;10914:3;10904:8;10901:17;10898:43;;;10921:18;;:::i;:::-;10898:43;10970:8;10967:1;10963:16;10954:25;;11005:3;10998:5;10995:14;10992:40;;;11012:18;;:::i;:::-;10992:40;11045:5;;;10783:277;;11169:2;11159:8;11156:16;11150:3;11144:4;11141:13;11137:36;11119:2;11109:8;11106:16;11101:2;11095:4;11092:12;11088:35;11072:111;11069:246;;;11225:8;11219:4;11215:19;11206:28;;11260:3;11253:5;11250:14;11247:40;;;11267:18;;:::i;:::-;11247:40;11300:5;;11069:246;11340:42;11378:3;11368:8;11362:4;11359:1;11340:42;:::i;:::-;11325:57;;;;11414:4;11409:3;11405:14;11398:5;11395:25;11392:51;;;11423:18;;:::i;:::-;11392:51;11472:4;11465:5;11461:16;11452:25;;10410:1073;;;;;;:::o;11489:281::-;11547:5;11571:23;11589:4;11571:23;:::i;:::-;11563:31;;11615:25;11631:8;11615:25;:::i;:::-;11603:37;;11659:104;11696:66;11686:8;11680:4;11659:104;:::i;:::-;11650:113;;11489:281;;;;:::o;11776:410::-;11816:7;11839:20;11857:1;11839:20;:::i;:::-;11834:25;;11873:20;11891:1;11873:20;:::i;:::-;11868:25;;11928:1;11925;11921:9;11950:30;11968:11;11950:30;:::i;:::-;11939:41;;12129:1;12120:7;12116:15;12113:1;12110:22;12090:1;12083:9;12063:83;12040:139;;12159:18;;:::i;:::-;12040:139;11824:362;11776:410;;;;:::o;12192:166::-;12332:18;12328:1;12320:6;12316:14;12309:42;12192:166;:::o;12364:366::-;12506:3;12527:67;12591:2;12586:3;12527:67;:::i;:::-;12520:74;;12603:93;12692:3;12603:93;:::i;:::-;12721:2;12716:3;12712:12;12705:19;;12364:366;;;:::o;12736:419::-;12902:4;12940:2;12929:9;12925:18;12917:26;;12989:9;12983:4;12979:20;12975:1;12964:9;12960:17;12953:47;13017:131;13143:4;13017:131;:::i;:::-;13009:139;;12736:419;;;:::o;13161:194::-;13201:4;13221:20;13239:1;13221:20;:::i;:::-;13216:25;;13255:20;13273:1;13255:20;:::i;:::-;13250:25;;13299:1;13296;13292:9;13284:17;;13323:1;13317:4;13314:11;13311:37;;;13328:18;;:::i;:::-;13311:37;13161:194;;;;:::o;13361:174::-;13501:26;13497:1;13489:6;13485:14;13478:50;13361:174;:::o;13541:366::-;13683:3;13704:67;13768:2;13763:3;13704:67;:::i;:::-;13697:74;;13780:93;13869:3;13780:93;:::i;:::-;13898:2;13893:3;13889:12;13882:19;;13541:366;;;:::o;13913:419::-;14079:4;14117:2;14106:9;14102:18;14094:26;;14166:9;14160:4;14156:20;14152:1;14141:9;14137:17;14130:47;14194:131;14320:4;14194:131;:::i;:::-;14186:139;;13913:419;;;:::o;14338:180::-;14386:77;14383:1;14376:88;14483:4;14480:1;14473:15;14507:4;14504:1;14497:15;14524:233;14563:3;14586:24;14604:5;14586:24;:::i;:::-;14577:33;;14632:66;14625:5;14622:77;14619:103;;14702:18;;:::i;:::-;14619:103;14749:1;14742:5;14738:13;14731:20;;14524:233;;;:::o;14763:159::-;14903:11;14899:1;14891:6;14887:14;14880:35;14763:159;:::o;14928:365::-;15070:3;15091:66;15155:1;15150:3;15091:66;:::i;:::-;15084:73;;15166:93;15255:3;15166:93;:::i;:::-;15284:2;15279:3;15275:12;15268:19;;14928:365;;;:::o;15299:419::-;15465:4;15503:2;15492:9;15488:18;15480:26;;15552:9;15546:4;15542:20;15538:1;15527:9;15523:17;15516:47;15580:131;15706:4;15580:131;:::i;:::-;15572:139;;15299:419;;;:::o;15724:165::-;15864:17;15860:1;15852:6;15848:14;15841:41;15724:165;:::o;15895:366::-;16037:3;16058:67;16122:2;16117:3;16058:67;:::i;:::-;16051:74;;16134:93;16223:3;16134:93;:::i;:::-;16252:2;16247:3;16243:12;16236:19;;15895:366;;;:::o;16267:419::-;16433:4;16471:2;16460:9;16456:18;16448:26;;16520:9;16514:4;16510:20;16506:1;16495:9;16491:17;16484:47;16548:131;16674:4;16548:131;:::i;:::-;16540:139;;16267:419;;;:::o;16692:179::-;16832:31;16828:1;16820:6;16816:14;16809:55;16692:179;:::o;16877:366::-;17019:3;17040:67;17104:2;17099:3;17040:67;:::i;:::-;17033:74;;17116:93;17205:3;17116:93;:::i;:::-;17234:2;17229:3;17225:12;17218:19;;16877:366;;;:::o;17249:419::-;17415:4;17453:2;17442:9;17438:18;17430:26;;17502:9;17496:4;17492:20;17488:1;17477:9;17473:17;17466:47;17530:131;17656:4;17530:131;:::i;:::-;17522:139;;17249:419;;;:::o;17674:171::-;17814:23;17810:1;17802:6;17798:14;17791:47;17674:171;:::o;17851:366::-;17993:3;18014:67;18078:2;18073:3;18014:67;:::i;:::-;18007:74;;18090:93;18179:3;18090:93;:::i;:::-;18208:2;18203:3;18199:12;18192:19;;17851:366;;;:::o;18223:419::-;18389:4;18427:2;18416:9;18412:18;18404:26;;18476:9;18470:4;18466:20;18462:1;18451:9;18447:17;18440:47;18504:131;18630:4;18504:131;:::i;:::-;18496:139;;18223:419;;;:::o;18648:143::-;18705:5;18736:6;18730:13;18721:22;;18752:33;18779:5;18752:33;:::i;:::-;18648:143;;;;:::o;18797:351::-;18867:6;18916:2;18904:9;18895:7;18891:23;18887:32;18884:119;;;18922:79;;:::i;:::-;18884:119;19042:1;19067:64;19123:7;19114:6;19103:9;19099:22;19067:64;:::i;:::-;19057:74;;19013:128;18797:351;;;;:::o;19154:332::-;19275:4;19313:2;19302:9;19298:18;19290:26;;19326:71;19394:1;19383:9;19379:17;19370:6;19326:71;:::i;:::-;19407:72;19475:2;19464:9;19460:18;19451:6;19407:72;:::i;:::-;19154:332;;;;;:::o;19492:179::-;19632:31;19628:1;19620:6;19616:14;19609:55;19492:179;:::o;19677:366::-;19819:3;19840:67;19904:2;19899:3;19840:67;:::i;:::-;19833:74;;19916:93;20005:3;19916:93;:::i;:::-;20034:2;20029:3;20025:12;20018:19;;19677:366;;;:::o;20049:419::-;20215:4;20253:2;20242:9;20238:18;20230:26;;20302:9;20296:4;20292:20;20288:1;20277:9;20273:17;20266:47;20330:131;20456:4;20330:131;:::i;:::-;20322:139;;20049:419;;;:::o;20474:168::-;20614:20;20610:1;20602:6;20598:14;20591:44;20474:168;:::o;20648:366::-;20790:3;20811:67;20875:2;20870:3;20811:67;:::i;:::-;20804:74;;20887:93;20976:3;20887:93;:::i;:::-;21005:2;21000:3;20996:12;20989:19;;20648:366;;;:::o;21020:419::-;21186:4;21224:2;21213:9;21209:18;21201:26;;21273:9;21267:4;21263:20;21259:1;21248:9;21244:17;21237:47;21301:131;21427:4;21301:131;:::i;:::-;21293:139;;21020:419;;;:::o;21445:170::-;21585:22;21581:1;21573:6;21569:14;21562:46;21445:170;:::o;21621:366::-;21763:3;21784:67;21848:2;21843:3;21784:67;:::i;:::-;21777:74;;21860:93;21949:3;21860:93;:::i;:::-;21978:2;21973:3;21969:12;21962:19;;21621:366;;;:::o;21993:419::-;22159:4;22197:2;22186:9;22182:18;22174:26;;22246:9;22240:4;22236:20;22232:1;22221:9;22217:17;22210:47;22274:131;22400:4;22274:131;:::i;:::-;22266:139;;21993:419;;;:::o;22418:191::-;22458:3;22477:20;22495:1;22477:20;:::i;:::-;22472:25;;22511:20;22529:1;22511:20;:::i;:::-;22506:25;;22554:1;22551;22547:9;22540:16;;22575:3;22572:1;22569:10;22566:36;;;22582:18;;:::i;:::-;22566:36;22418:191;;;;:::o;22615:156::-;22755:8;22751:1;22743:6;22739:14;22732:32;22615:156;:::o;22777:365::-;22919:3;22940:66;23004:1;22999:3;22940:66;:::i;:::-;22933:73;;23015:93;23104:3;23015:93;:::i;:::-;23133:2;23128:3;23124:12;23117:19;;22777:365;;;:::o;23148:419::-;23314:4;23352:2;23341:9;23337:18;23329:26;;23401:9;23395:4;23391:20;23387:1;23376:9;23372:17;23365:47;23429:131;23555:4;23429:131;:::i;:::-;23421:139;;23148:419;;;:::o;23573:223::-;23713:34;23709:1;23701:6;23697:14;23690:58;23782:6;23777:2;23769:6;23765:15;23758:31;23573:223;:::o;23802:366::-;23944:3;23965:67;24029:2;24024:3;23965:67;:::i;:::-;23958:74;;24041:93;24130:3;24041:93;:::i;:::-;24159:2;24154:3;24150:12;24143:19;;23802:366;;;:::o;24174:419::-;24340:4;24378:2;24367:9;24363:18;24355:26;;24427:9;24421:4;24417:20;24413:1;24402:9;24398:17;24391:47;24455:131;24581:4;24455:131;:::i;:::-;24447:139;;24174:419;;;:::o;24599:85::-;24644:7;24673:5;24662:16;;24599:85;;;:::o;24690:60::-;24718:3;24739:5;24732:12;;24690:60;;;:::o;24756:158::-;24814:9;24847:61;24865:42;24874:32;24900:5;24874:32;:::i;:::-;24865:42;:::i;:::-;24847:61;:::i;:::-;24834:74;;24756:158;;;:::o;24920:147::-;25015:45;25054:5;25015:45;:::i;:::-;25010:3;25003:58;24920:147;;:::o;25073:807::-;25322:4;25360:3;25349:9;25345:19;25337:27;;25374:71;25442:1;25431:9;25427:17;25418:6;25374:71;:::i;:::-;25455:72;25523:2;25512:9;25508:18;25499:6;25455:72;:::i;:::-;25537:80;25613:2;25602:9;25598:18;25589:6;25537:80;:::i;:::-;25627;25703:2;25692:9;25688:18;25679:6;25627:80;:::i;:::-;25717:73;25785:3;25774:9;25770:19;25761:6;25717:73;:::i;:::-;25800;25868:3;25857:9;25853:19;25844:6;25800:73;:::i;:::-;25073:807;;;;;;;;;:::o;25886:143::-;25943:5;25974:6;25968:13;25959:22;;25990:33;26017:5;25990:33;:::i;:::-;25886:143;;;;:::o;26035:663::-;26123:6;26131;26139;26188:2;26176:9;26167:7;26163:23;26159:32;26156:119;;;26194:79;;:::i;:::-;26156:119;26314:1;26339:64;26395:7;26386:6;26375:9;26371:22;26339:64;:::i;:::-;26329:74;;26285:128;26452:2;26478:64;26534:7;26525:6;26514:9;26510:22;26478:64;:::i;:::-;26468:74;;26423:129;26591:2;26617:64;26673:7;26664:6;26653:9;26649:22;26617:64;:::i;:::-;26607:74;;26562:129;26035:663;;;;;:::o;26704:180::-;26752:77;26749:1;26742:88;26849:4;26846:1;26839:15;26873:4;26870:1;26863:15;26890:185;26930:1;26947:20;26965:1;26947:20;:::i;:::-;26942:25;;26981:20;26999:1;26981:20;:::i;:::-;26976:25;;27020:1;27010:35;;27025:18;;:::i;:::-;27010:35;27067:1;27064;27060:9;27055:14;;26890:185;;;;:::o;27081:147::-;27182:11;27219:3;27204:18;;27081:147;;;;:::o;27234:114::-;;:::o;27354:398::-;27513:3;27534:83;27615:1;27610:3;27534:83;:::i;:::-;27527:90;;27626:93;27715:3;27626:93;:::i;:::-;27744:1;27739:3;27735:11;27728:18;;27354:398;;;:::o;27758:379::-;27942:3;27964:147;28107:3;27964:147;:::i;:::-;27957:154;;28128:3;28121:10;;27758:379;;;:::o;28143:114::-;28210:6;28244:5;28238:12;28228:22;;28143:114;;;:::o;28263:184::-;28362:11;28396:6;28391:3;28384:19;28436:4;28431:3;28427:14;28412:29;;28263:184;;;;:::o;28453:132::-;28520:4;28543:3;28535:11;;28573:4;28568:3;28564:14;28556:22;;28453:132;;;:::o;28591:108::-;28668:24;28686:5;28668:24;:::i;:::-;28663:3;28656:37;28591:108;;:::o;28705:179::-;28774:10;28795:46;28837:3;28829:6;28795:46;:::i;:::-;28873:4;28868:3;28864:14;28850:28;;28705:179;;;;:::o;28890:113::-;28960:4;28992;28987:3;28983:14;28975:22;;28890:113;;;:::o;29039:732::-;29158:3;29187:54;29235:5;29187:54;:::i;:::-;29257:86;29336:6;29331:3;29257:86;:::i;:::-;29250:93;;29367:56;29417:5;29367:56;:::i;:::-;29446:7;29477:1;29462:284;29487:6;29484:1;29481:13;29462:284;;;29563:6;29557:13;29590:63;29649:3;29634:13;29590:63;:::i;:::-;29583:70;;29676:60;29729:6;29676:60;:::i;:::-;29666:70;;29522:224;29509:1;29506;29502:9;29497:14;;29462:284;;;29466:14;29762:3;29755:10;;29163:608;;;29039:732;;;;:::o;29777:831::-;30040:4;30078:3;30067:9;30063:19;30055:27;;30092:71;30160:1;30149:9;30145:17;30136:6;30092:71;:::i;:::-;30173:80;30249:2;30238:9;30234:18;30225:6;30173:80;:::i;:::-;30300:9;30294:4;30290:20;30285:2;30274:9;30270:18;30263:48;30328:108;30431:4;30422:6;30328:108;:::i;:::-;30320:116;;30446:72;30514:2;30503:9;30499:18;30490:6;30446:72;:::i;:::-;30528:73;30596:3;30585:9;30581:19;30572:6;30528:73;:::i;:::-;29777:831;;;;;;;;:::o

Swarm Source

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