ETH Price: $3,608.52 (+6.14%)

Token

International Meme Foundation (IMF)
 

Overview

Max Total Supply

100,000,000 IMF

Holders

73

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
949,187.745920539738720795 IMF

Value
$0.00
0x991f424fd13f064c552b1497bdf048d4e043b31e
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:
IMF

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
Introducing
International Meme Foundation (IMF)
Redefining the Meme Economy
https://memefoundation.international
https://t.me/internationalmemefoundation
https://twitter.com/IMEMEFOUNDATION
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.12;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}

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

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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


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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract IMF is ERC20, Ownable{ 
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 10_000 * 10e18;
    uint256 public maxTxAmount = 2_000_000 * 10**18; 
    uint256 public maxWalletAmount = 2_000_000 * 10**18; 
    
    address public marketingWallet = 0xf59ca7F8312744D8197A904D6c18012B9987C80e; 
    address public devWallet = 0xf59ca7F8312744D8197A904D6c18012B9987C80e;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(23,0,9); 
    Taxes public sellTaxes = Taxes(33,0,9); 
    uint256 public totTax = 32; 
    uint256 public totSellTax = 42; 
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("International Meme Foundation", "IMF") { 
        _mint(msg.sender, 1e8 * 10 ** decimals()); 
        excludedFromFees[msg.sender] = true;

        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }

    function createPair() external onlyOwner{
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
  
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
 
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        

        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

                    uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

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

    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setBuyTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _dev);
        totTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateDBMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDBTeamWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
        function addBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
        }
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // fallbacks
    receive() external payable {}
    
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDBMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDBTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060095569152d02c7e14af6800000600a556a01a784379d99db42000000600b556a01a784379d99db42000000600c5573f59ca7f8312744d8197a904d6c18012b9987c80e600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f59ca7f8312744d8197a904d6c18012b9987c80e600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060178152602001600081526020016009815250600f6000820151816000015560208201518160010155604082015181600201555050604051806060016040528060218152602001600081526020016009815250601260008201518160000155602082015181600101556040820151816002015550506020601555602a6016553480156200017657600080fd5b506040518060400160405280601d81526020017f496e7465726e6174696f6e616c204d656d6520466f756e646174696f6e0000008152506040518060400160405280600381526020017f494d4600000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001fb92919062000662565b5080600490805190602001906200021492919062000662565b505050620002376200022b6200042160201b60201c565b6200042960201b60201c565b62000277336200024c620004ef60201b60201c565b600a6200025a9190620008ac565b6305f5e1006200026b9190620008fd565b620004f860201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ad1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200056b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200056290620009bf565b60405180910390fd5b6200057f600083836200065d60201b60201c565b8060026000828254620005939190620009e1565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005ea9190620009e1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000651919062000a4f565b60405180910390a35050565b505050565b828054620006709062000a9b565b90600052602060002090601f016020900481019282620006945760008555620006e0565b82601f10620006af57805160ff1916838001178555620006e0565b82800160010185558215620006e0579182015b82811115620006df578251825591602001919060010190620006c2565b5b509050620006ef9190620006f3565b5090565b5b808211156200070e576000816000905550600101620006f4565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007a05780860481111562000778576200077762000712565b5b6001851615620007885780820291505b8081029050620007988562000741565b945062000758565b94509492505050565b600082620007bb57600190506200088e565b81620007cb57600090506200088e565b8160018114620007e45760028114620007ef5762000825565b60019150506200088e565b60ff84111562000804576200080362000712565b5b8360020a9150848211156200081e576200081d62000712565b5b506200088e565b5060208310610133831016604e8410600b84101617156200085f5782820a90508381111562000859576200085862000712565b5b6200088e565b6200086e84848460016200074e565b9250905081840481111562000888576200088762000712565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008b98262000895565b9150620008c6836200089f565b9250620008f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007a9565b905092915050565b60006200090a8262000895565b9150620009178362000895565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000953576200095262000712565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620009a7601f836200095e565b9150620009b4826200096f565b602082019050919050565b60006020820190508181036000830152620009da8162000998565b9050919050565b6000620009ee8262000895565b9150620009fb8362000895565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000a335762000a3262000712565b5b828201905092915050565b62000a498162000895565b82525050565b600060208201905062000a66600083018462000a3e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ab457607f821691505b6020821081141562000acb5762000aca62000a6c565b5b50919050565b6149408062000ae16000396000f3fe6080604052600436106102815760003560e01c80638c0b5e221161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c14610997578063e545fd6d146109c0578063f2fde38b146109e9578063f66895a314610a12578063f887ea4014610a3f578063fb53d9a214610a6a57610288565b8063a9059cbb14610863578063aa4bde28146108a0578063c18bc195146108cb578063d34628cc146108f4578063dbe66ca01461091d578063dd62ed3e1461095a57610288565b80639d0014b1116101135780639d0014b1146107695780639e252f00146107925780639e78fb4f146107bb578063a457c2d7146107d2578063a7c7f0af1461080f578063a8aa1b311461083857610288565b80638c0b5e22146106945780638cd4426d146106bf5780638da5cb5b146106e85780638ea5220f1461071357806395d89b411461073e57610288565b8063313ce567116101f35780636ddd1713116101ac5780636ddd17131461059457806370a08231146105bf578063715018a6146105fc578063728f8eea1461061357806375f0a8741461064057806382aa7c681461066b57610288565b8063313ce5671461048457806339509351146104af57806340b28c2f146104ec5780634ada218b1461051557806350c9a88f146105405780636256d1811461056b57610288565b80631870517a116102455780631870517a146103745780632253163d1461039d57806323b872dd146103c857806326b5d32f14610405578063274a533c1461042e578063293b7ef41461045957610288565b80630445b6671461028d57806306fdde03146102b857806308733214146102e3578063095ea7b31461030c57806318160ddd1461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a93565b6040516102af91906133d4565b60405180910390f35b3480156102c457600080fd5b506102cd610a99565b6040516102da9190613488565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906134ea565b610b2b565b005b34801561031857600080fd5b50610333600480360381019061032e919061359b565b610c07565b60405161034091906135f6565b60405180910390f35b34801561035557600080fd5b5061035e610c25565b60405161036b91906133d4565b60405180910390f35b34801561038057600080fd5b5061039b600480360381019061039691906134ea565b610c2f565b005b3480156103a957600080fd5b506103b2610d0b565b6040516103bf91906133d4565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613611565b610d11565b6040516103fc91906135f6565b60405180910390f35b34801561041157600080fd5b5061042c600480360381019061042791906134ea565b610e12565b005b34801561043a57600080fd5b50610443610f9f565b60405161045091906133d4565b60405180910390f35b34801561046557600080fd5b5061046e610fa5565b60405161047b91906133d4565b60405180910390f35b34801561049057600080fd5b50610499610fab565b6040516104a69190613680565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d1919061359b565b610fb4565b6040516104e391906135f6565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906136d9565b611060565b005b34801561052157600080fd5b5061052a611162565b60405161053791906135f6565b60405180910390f35b34801561054c57600080fd5b50610555611175565b60405161056291906133d4565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190613719565b61117b565b005b3480156105a057600080fd5b506105a9611214565b6040516105b691906135f6565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190613746565b611227565b6040516105f391906133d4565b60405180910390f35b34801561060857600080fd5b5061061161126f565b005b34801561061f57600080fd5b506106286112f7565b60405161063793929190613773565b60405180910390f35b34801561064c57600080fd5b5061065561130f565b60405161066291906137b9565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613719565b611335565b005b3480156106a057600080fd5b506106a9611448565b6040516106b691906133d4565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e1919061359b565b61144e565b005b3480156106f457600080fd5b506106fd611554565b60405161070a91906137b9565b60405180910390f35b34801561071f57600080fd5b5061072861157e565b60405161073591906137b9565b60405180910390f35b34801561074a57600080fd5b506107536115a4565b6040516107609190613488565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190613719565b611636565b005b34801561079e57600080fd5b506107b960048036038101906107b49190613719565b6116bc565b005b3480156107c757600080fd5b506107d061176b565b005b3480156107de57600080fd5b506107f960048036038101906107f4919061359b565b6119e4565b60405161080691906135f6565b60405180910390f35b34801561081b57600080fd5b5061083660048036038101906108319190613746565b611ad8565b005b34801561084457600080fd5b5061084d611b98565b60405161085a91906137b9565b60405180910390f35b34801561086f57600080fd5b5061088a6004803603810190610885919061359b565b611bbe565b60405161089791906135f6565b60405180910390f35b3480156108ac57600080fd5b506108b5611bdc565b6040516108c291906133d4565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed9190613719565b611be2565b005b34801561090057600080fd5b5061091b6004803603810190610916919061391c565b611c7b565b005b34801561092957600080fd5b50610944600480360381019061093f9190613746565b611d8c565b60405161095191906135f6565b60405180910390f35b34801561096657600080fd5b50610981600480360381019061097c9190613965565b611dac565b60405161098e91906133d4565b60405180910390f35b3480156109a357600080fd5b506109be60048036038101906109b991906139d1565b611e33565b005b3480156109cc57600080fd5b506109e760048036038101906109e291906139fe565b611ecc565b005b3480156109f557600080fd5b50610a106004803603810190610a0b9190613746565b611fa3565b005b348015610a1e57600080fd5b50610a2761209b565b604051610a3693929190613773565b60405180910390f35b348015610a4b57600080fd5b50610a546120b3565b604051610a619190613a9d565b60405180910390f35b348015610a7657600080fd5b50610a916004803603810190610a8c9190613746565b6120d9565b005b600a5481565b606060038054610aa890613ae7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad490613ae7565b8015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905090565b610b33612199565b73ffffffffffffffffffffffffffffffffffffffff16610b51611554565b73ffffffffffffffffffffffffffffffffffffffff1614610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90613b65565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610bf29190613bb4565b610bfc9190613bb4565b601681905550505050565b6000610c1b610c14612199565b84846121a1565b6001905092915050565b6000600254905090565b610c37612199565b73ffffffffffffffffffffffffffffffffffffffff16610c55611554565b73ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290613b65565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284610cf69190613bb4565b610d009190613bb4565b601581905550505050565b60165481565b6000610d1e84848461236c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d69612199565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de090613c7c565b60405180910390fd5b610e0685610df5612199565b8584610e019190613c9c565b6121a1565b60019150509392505050565b610e1a612199565b73ffffffffffffffffffffffffffffffffffffffff16610e38611554565b73ffffffffffffffffffffffffffffffffffffffff1614610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8590613b65565b60405180910390fd5b6000479050610e9c84612a36565b60008147610eaa9190613c9c565b90506000831115610f2257610f218385610ec49190613bb4565b8483610ed09190613cd0565b610eda9190613d59565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b5b6000841115610f9857610f978385610f3a9190613bb4565b8583610f469190613cd0565b610f509190613d59565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b6000611056610fc1612199565b848460016000610fcf612199565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110519190613bb4565b6121a1565b6001905092915050565b611068612199565b73ffffffffffffffffffffffffffffffffffffffff16611086611554565b73ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390613b65565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b611183612199565b73ffffffffffffffffffffffffffffffffffffffff166111a1611554565b73ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90613b65565b60405180910390fd5b670de0b6b3a76400008161120b9190613cd0565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611277612199565b73ffffffffffffffffffffffffffffffffffffffff16611295611554565b73ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613b65565b60405180910390fd5b6112f56000612d6d565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61133d612199565b73ffffffffffffffffffffffffffffffffffffffff1661135b611554565b73ffffffffffffffffffffffffffffffffffffffff16146113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a890613b65565b60405180910390fd5b600760169054906101000a900460ff1615611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890613dd6565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611456612199565b73ffffffffffffffffffffffffffffffffffffffff16611474611554565b73ffffffffffffffffffffffffffffffffffffffff16146114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613b65565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114ee611554565b836040518363ffffffff1660e01b815260040161150c929190613df6565b6020604051808303816000875af115801561152b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154f9190613e34565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115b390613ae7565b80601f01602080910402602001604051908101604052809291908181526020018280546115df90613ae7565b801561162c5780601f106116015761010080835404028352916020019161162c565b820191906000526020600020905b81548152906001019060200180831161160f57829003601f168201915b5050505050905090565b61163e612199565b73ffffffffffffffffffffffffffffffffffffffff1661165c611554565b73ffffffffffffffffffffffffffffffffffffffff16146116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990613b65565b60405180910390fd5b80600a8190555050565b6116c4612199565b73ffffffffffffffffffffffffffffffffffffffff166116e2611554565b73ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613b65565b60405180910390fd5b61176881611744611554565b73ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b50565b611773612199565b73ffffffffffffffffffffffffffffffffffffffff16611791611554565b73ffffffffffffffffffffffffffffffffffffffff16146117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de90613b65565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118719190613e76565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc9190613e76565b6040518363ffffffff1660e01b8152600401611919929190613ea3565b6020604051808303816000875af1158015611938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195c9190613e76565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600080600160006119f3612199565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613f3e565b60405180910390fd5b611acd611abb612199565b858584611ac89190613c9c565b6121a1565b600191505092915050565b611ae0612199565b73ffffffffffffffffffffffffffffffffffffffff16611afe611554565b73ffffffffffffffffffffffffffffffffffffffff1614611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90613b65565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bd2611bcb612199565b848461236c565b6001905092915050565b600c5481565b611bea612199565b73ffffffffffffffffffffffffffffffffffffffff16611c08611554565b73ffffffffffffffffffffffffffffffffffffffff1614611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590613b65565b60405180910390fd5b670de0b6b3a764000081611c729190613cd0565b600c8190555050565b611c83612199565b73ffffffffffffffffffffffffffffffffffffffff16611ca1611554565b73ffffffffffffffffffffffffffffffffffffffff1614611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90613b65565b60405180910390fd5b60005b8151811015611d8857600160186000848481518110611d1c57611d1b613f5e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d8090613f8d565b915050611cfa565b5050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e3b612199565b73ffffffffffffffffffffffffffffffffffffffff16611e59611554565b73ffffffffffffffffffffffffffffffffffffffff1614611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690613b65565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611ed4612199565b73ffffffffffffffffffffffffffffffffffffffff16611ef2611554565b73ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613b65565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fab612199565b73ffffffffffffffffffffffffffffffffffffffff16611fc9611554565b73ffffffffffffffffffffffffffffffffffffffff161461201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613b65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690614048565b60405180910390fd5b61209881612d6d565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120e1612199565b73ffffffffffffffffffffffffffffffffffffffff166120ff611554565b73ffffffffffffffffffffffffffffffffffffffff1614612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c90613b65565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612211576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612208906140da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061416c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161235f91906133d4565b60405180910390a3505050565b600081116123af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a6906141fe565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124535750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612492576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124899061426a565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125365750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561254f5750600760149054906101000a900460ff16155b1561280b57600760169054906101000a900460ff166125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a906142d6565b60405180910390fd5b436009546008546125b49190613bb4565b111561271757600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612668576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612716576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b5481111561275c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275390614342565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461280a57600c54816127be84611227565b6127c89190613bb4565b1115612809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612800906143d4565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806128715750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806128c55750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128d35760009050612968565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561294a576064601654836129399190613cd0565b6129439190613d59565b9050612967565b60646015548361295a9190613cd0565b6129649190613d59565b90505b5b600760159054906101000a900460ff1680156129915750600760149054906101000a900460ff16155b80156129eb5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156129f75750600081115b15612a0557612a04612e33565b5b612a1b84848385612a169190613c9c565b613037565b6000811115612a3057612a2f843083613037565b5b50505050565b6000600267ffffffffffffffff811115612a5357612a526137d9565b5b604051908082528060200260200182016040528015612a815781602001602082028036833780820191505090505b5090503081600081518110612a9957612a98613f5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b649190613e76565b81600181518110612b7857612b77613f5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bdf30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c439594939291906144ed565b600060405180830381600087803b158015612c5d57600080fd5b505af1158015612c71573d6000803e3d6000fd5b505050505050565b80471015612cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb390614593565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612ce2906145e4565b60006040518083038185875af1925050503d8060008114612d1f576040519150601f19603f3d011682016040523d82523d6000602084013e612d24565b606091505b5050905080612d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5f9061466b565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16613035576001600760146101000a81548160ff0219169083151502179055506000612e6d30611227565b9050600a5481106130185760006002601654612e899190613cd0565b905060008160126001015484612e9f9190613cd0565b612ea99190613d59565b905060008184612eb99190613c9c565b90506000479050612ec982612a36565b60008147612ed79190613c9c565b9050600060126001015486612eec9190613c9c565b82612ef79190613d59565b9050600060126001015482612f0c9190613cd0565b90506000811115612f2257612f2186826132b6565b5b6000601260000154600284612f379190613cd0565b612f419190613cd0565b90506000811115612f9857612f9781600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b5b6000601260020154600285612fad9190613cd0565b612fb79190613cd0565b9050600081111561300e5761300d81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309e906146fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e9061478f565b60405180910390fd5b6131228383836133b6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156131a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319f90614821565b60405180910390fd5b81816131b49190613c9c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132449190613bb4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132a891906133d4565b60405180910390a350505050565b6132e330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161336c96959493929190614841565b60606040518083038185885af115801561338a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133af91906148b7565b5050505050565b505050565b6000819050919050565b6133ce816133bb565b82525050565b60006020820190506133e960008301846133c5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561342957808201518184015260208101905061340e565b83811115613438576000848401525b50505050565b6000601f19601f8301169050919050565b600061345a826133ef565b61346481856133fa565b935061347481856020860161340b565b61347d8161343e565b840191505092915050565b600060208201905081810360008301526134a2818461344f565b905092915050565b6000604051905090565b600080fd5b600080fd5b6134c7816133bb565b81146134d257600080fd5b50565b6000813590506134e4816134be565b92915050565b600080600060608486031215613503576135026134b4565b5b6000613511868287016134d5565b9350506020613522868287016134d5565b9250506040613533868287016134d5565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135688261353d565b9050919050565b6135788161355d565b811461358357600080fd5b50565b6000813590506135958161356f565b92915050565b600080604083850312156135b2576135b16134b4565b5b60006135c085828601613586565b92505060206135d1858286016134d5565b9150509250929050565b60008115159050919050565b6135f0816135db565b82525050565b600060208201905061360b60008301846135e7565b92915050565b60008060006060848603121561362a576136296134b4565b5b600061363886828701613586565b935050602061364986828701613586565b925050604061365a868287016134d5565b9150509250925092565b600060ff82169050919050565b61367a81613664565b82525050565b60006020820190506136956000830184613671565b92915050565b60006136a68261355d565b9050919050565b6136b68161369b565b81146136c157600080fd5b50565b6000813590506136d3816136ad565b92915050565b600080604083850312156136f0576136ef6134b4565b5b60006136fe858286016136c4565b925050602061370f85828601613586565b9150509250929050565b60006020828403121561372f5761372e6134b4565b5b600061373d848285016134d5565b91505092915050565b60006020828403121561375c5761375b6134b4565b5b600061376a84828501613586565b91505092915050565b600060608201905061378860008301866133c5565b61379560208301856133c5565b6137a260408301846133c5565b949350505050565b6137b38161355d565b82525050565b60006020820190506137ce60008301846137aa565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138118261343e565b810181811067ffffffffffffffff821117156138305761382f6137d9565b5b80604052505050565b60006138436134aa565b905061384f8282613808565b919050565b600067ffffffffffffffff82111561386f5761386e6137d9565b5b602082029050602081019050919050565b600080fd5b600061389861389384613854565b613839565b905080838252602082019050602084028301858111156138bb576138ba613880565b5b835b818110156138e457806138d08882613586565b8452602084019350506020810190506138bd565b5050509392505050565b600082601f830112613903576139026137d4565b5b8135613913848260208601613885565b91505092915050565b600060208284031215613932576139316134b4565b5b600082013567ffffffffffffffff8111156139505761394f6134b9565b5b61395c848285016138ee565b91505092915050565b6000806040838503121561397c5761397b6134b4565b5b600061398a85828601613586565b925050602061399b85828601613586565b9150509250929050565b6139ae816135db565b81146139b957600080fd5b50565b6000813590506139cb816139a5565b92915050565b6000602082840312156139e7576139e66134b4565b5b60006139f5848285016139bc565b91505092915050565b60008060408385031215613a1557613a146134b4565b5b6000613a2385828601613586565b9250506020613a34858286016139bc565b9150509250929050565b6000819050919050565b6000613a63613a5e613a598461353d565b613a3e565b61353d565b9050919050565b6000613a7582613a48565b9050919050565b6000613a8782613a6a565b9050919050565b613a9781613a7c565b82525050565b6000602082019050613ab26000830184613a8e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613aff57607f821691505b60208210811415613b1357613b12613ab8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b4f6020836133fa565b9150613b5a82613b19565b602082019050919050565b60006020820190508181036000830152613b7e81613b42565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bbf826133bb565b9150613bca836133bb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613bff57613bfe613b85565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c666028836133fa565b9150613c7182613c0a565b604082019050919050565b60006020820190508181036000830152613c9581613c59565b9050919050565b6000613ca7826133bb565b9150613cb2836133bb565b925082821015613cc557613cc4613b85565b5b828203905092915050565b6000613cdb826133bb565b9150613ce6836133bb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1f57613d1e613b85565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d64826133bb565b9150613d6f836133bb565b925082613d7f57613d7e613d2a565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613dc06016836133fa565b9150613dcb82613d8a565b602082019050919050565b60006020820190508181036000830152613def81613db3565b9050919050565b6000604082019050613e0b60008301856137aa565b613e1860208301846133c5565b9392505050565b600081519050613e2e816139a5565b92915050565b600060208284031215613e4a57613e496134b4565b5b6000613e5884828501613e1f565b91505092915050565b600081519050613e708161356f565b92915050565b600060208284031215613e8c57613e8b6134b4565b5b6000613e9a84828501613e61565b91505092915050565b6000604082019050613eb860008301856137aa565b613ec560208301846137aa565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f286025836133fa565b9150613f3382613ecc565b604082019050919050565b60006020820190508181036000830152613f5781613f1b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613f98826133bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fcb57613fca613b85565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140326026836133fa565b915061403d82613fd6565b604082019050919050565b6000602082019050818103600083015261406181614025565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140c46024836133fa565b91506140cf82614068565b604082019050919050565b600060208201905081810360008301526140f3816140b7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141566022836133fa565b9150614161826140fa565b604082019050919050565b6000602082019050818103600083015261418581614149565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141e86029836133fa565b91506141f38261418c565b604082019050919050565b60006020820190508181036000830152614217816141db565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b60006142546019836133fa565b915061425f8261421e565b602082019050919050565b6000602082019050818103600083015261428381614247565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b60006142c06016836133fa565b91506142cb8261428a565b602082019050919050565b600060208201905081810360008301526142ef816142b3565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b600061432c601d836133fa565b9150614337826142f6565b602082019050919050565b6000602082019050818103600083015261435b8161431f565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006143be6021836133fa565b91506143c982614362565b604082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b6000819050919050565b600061441961441461440f846143f4565b613a3e565b6133bb565b9050919050565b614429816143fe565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144648161355d565b82525050565b6000614476838361445b565b60208301905092915050565b6000602082019050919050565b600061449a8261442f565b6144a4818561443a565b93506144af8361444b565b8060005b838110156144e05781516144c7888261446a565b97506144d283614482565b9250506001810190506144b3565b5085935050505092915050565b600060a08201905061450260008301886133c5565b61450f6020830187614420565b8181036040830152614521818661448f565b905061453060608301856137aa565b61453d60808301846133c5565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061457d601d836133fa565b915061458882614547565b602082019050919050565b600060208201905081810360008301526145ac81614570565b9050919050565b600081905092915050565b50565b60006145ce6000836145b3565b91506145d9826145be565b600082019050919050565b60006145ef826145c1565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614655603a836133fa565b9150614660826145f9565b604082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146e76025836133fa565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147796023836133fa565b91506147848261471d565b604082019050919050565b600060208201905081810360008301526147a88161476c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061480b6026836133fa565b9150614816826147af565b604082019050919050565b6000602082019050818103600083015261483a816147fe565b9050919050565b600060c08201905061485660008301896137aa565b61486360208301886133c5565b6148706040830187614420565b61487d6060830186614420565b61488a60808301856137aa565b61489760a08301846133c5565b979650505050505050565b6000815190506148b1816134be565b92915050565b6000806000606084860312156148d0576148cf6134b4565b5b60006148de868287016148a2565b93505060206148ef868287016148a2565b9250506040614900868287016148a2565b915050925092509256fea26469706673582212202d22ad22ea653f96eaf2bdd0fa8fd21054f089460dd8dcc27cbde0f94cacdfb464736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638c0b5e221161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c14610997578063e545fd6d146109c0578063f2fde38b146109e9578063f66895a314610a12578063f887ea4014610a3f578063fb53d9a214610a6a57610288565b8063a9059cbb14610863578063aa4bde28146108a0578063c18bc195146108cb578063d34628cc146108f4578063dbe66ca01461091d578063dd62ed3e1461095a57610288565b80639d0014b1116101135780639d0014b1146107695780639e252f00146107925780639e78fb4f146107bb578063a457c2d7146107d2578063a7c7f0af1461080f578063a8aa1b311461083857610288565b80638c0b5e22146106945780638cd4426d146106bf5780638da5cb5b146106e85780638ea5220f1461071357806395d89b411461073e57610288565b8063313ce567116101f35780636ddd1713116101ac5780636ddd17131461059457806370a08231146105bf578063715018a6146105fc578063728f8eea1461061357806375f0a8741461064057806382aa7c681461066b57610288565b8063313ce5671461048457806339509351146104af57806340b28c2f146104ec5780634ada218b1461051557806350c9a88f146105405780636256d1811461056b57610288565b80631870517a116102455780631870517a146103745780632253163d1461039d57806323b872dd146103c857806326b5d32f14610405578063274a533c1461042e578063293b7ef41461045957610288565b80630445b6671461028d57806306fdde03146102b857806308733214146102e3578063095ea7b31461030c57806318160ddd1461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a93565b6040516102af91906133d4565b60405180910390f35b3480156102c457600080fd5b506102cd610a99565b6040516102da9190613488565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906134ea565b610b2b565b005b34801561031857600080fd5b50610333600480360381019061032e919061359b565b610c07565b60405161034091906135f6565b60405180910390f35b34801561035557600080fd5b5061035e610c25565b60405161036b91906133d4565b60405180910390f35b34801561038057600080fd5b5061039b600480360381019061039691906134ea565b610c2f565b005b3480156103a957600080fd5b506103b2610d0b565b6040516103bf91906133d4565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613611565b610d11565b6040516103fc91906135f6565b60405180910390f35b34801561041157600080fd5b5061042c600480360381019061042791906134ea565b610e12565b005b34801561043a57600080fd5b50610443610f9f565b60405161045091906133d4565b60405180910390f35b34801561046557600080fd5b5061046e610fa5565b60405161047b91906133d4565b60405180910390f35b34801561049057600080fd5b50610499610fab565b6040516104a69190613680565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d1919061359b565b610fb4565b6040516104e391906135f6565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906136d9565b611060565b005b34801561052157600080fd5b5061052a611162565b60405161053791906135f6565b60405180910390f35b34801561054c57600080fd5b50610555611175565b60405161056291906133d4565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190613719565b61117b565b005b3480156105a057600080fd5b506105a9611214565b6040516105b691906135f6565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190613746565b611227565b6040516105f391906133d4565b60405180910390f35b34801561060857600080fd5b5061061161126f565b005b34801561061f57600080fd5b506106286112f7565b60405161063793929190613773565b60405180910390f35b34801561064c57600080fd5b5061065561130f565b60405161066291906137b9565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613719565b611335565b005b3480156106a057600080fd5b506106a9611448565b6040516106b691906133d4565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e1919061359b565b61144e565b005b3480156106f457600080fd5b506106fd611554565b60405161070a91906137b9565b60405180910390f35b34801561071f57600080fd5b5061072861157e565b60405161073591906137b9565b60405180910390f35b34801561074a57600080fd5b506107536115a4565b6040516107609190613488565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190613719565b611636565b005b34801561079e57600080fd5b506107b960048036038101906107b49190613719565b6116bc565b005b3480156107c757600080fd5b506107d061176b565b005b3480156107de57600080fd5b506107f960048036038101906107f4919061359b565b6119e4565b60405161080691906135f6565b60405180910390f35b34801561081b57600080fd5b5061083660048036038101906108319190613746565b611ad8565b005b34801561084457600080fd5b5061084d611b98565b60405161085a91906137b9565b60405180910390f35b34801561086f57600080fd5b5061088a6004803603810190610885919061359b565b611bbe565b60405161089791906135f6565b60405180910390f35b3480156108ac57600080fd5b506108b5611bdc565b6040516108c291906133d4565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed9190613719565b611be2565b005b34801561090057600080fd5b5061091b6004803603810190610916919061391c565b611c7b565b005b34801561092957600080fd5b50610944600480360381019061093f9190613746565b611d8c565b60405161095191906135f6565b60405180910390f35b34801561096657600080fd5b50610981600480360381019061097c9190613965565b611dac565b60405161098e91906133d4565b60405180910390f35b3480156109a357600080fd5b506109be60048036038101906109b991906139d1565b611e33565b005b3480156109cc57600080fd5b506109e760048036038101906109e291906139fe565b611ecc565b005b3480156109f557600080fd5b50610a106004803603810190610a0b9190613746565b611fa3565b005b348015610a1e57600080fd5b50610a2761209b565b604051610a3693929190613773565b60405180910390f35b348015610a4b57600080fd5b50610a546120b3565b604051610a619190613a9d565b60405180910390f35b348015610a7657600080fd5b50610a916004803603810190610a8c9190613746565b6120d9565b005b600a5481565b606060038054610aa890613ae7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad490613ae7565b8015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905090565b610b33612199565b73ffffffffffffffffffffffffffffffffffffffff16610b51611554565b73ffffffffffffffffffffffffffffffffffffffff1614610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90613b65565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610bf29190613bb4565b610bfc9190613bb4565b601681905550505050565b6000610c1b610c14612199565b84846121a1565b6001905092915050565b6000600254905090565b610c37612199565b73ffffffffffffffffffffffffffffffffffffffff16610c55611554565b73ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290613b65565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284610cf69190613bb4565b610d009190613bb4565b601581905550505050565b60165481565b6000610d1e84848461236c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d69612199565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de090613c7c565b60405180910390fd5b610e0685610df5612199565b8584610e019190613c9c565b6121a1565b60019150509392505050565b610e1a612199565b73ffffffffffffffffffffffffffffffffffffffff16610e38611554565b73ffffffffffffffffffffffffffffffffffffffff1614610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8590613b65565b60405180910390fd5b6000479050610e9c84612a36565b60008147610eaa9190613c9c565b90506000831115610f2257610f218385610ec49190613bb4565b8483610ed09190613cd0565b610eda9190613d59565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b5b6000841115610f9857610f978385610f3a9190613bb4565b8583610f469190613cd0565b610f509190613d59565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b6000611056610fc1612199565b848460016000610fcf612199565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110519190613bb4565b6121a1565b6001905092915050565b611068612199565b73ffffffffffffffffffffffffffffffffffffffff16611086611554565b73ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390613b65565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b611183612199565b73ffffffffffffffffffffffffffffffffffffffff166111a1611554565b73ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90613b65565b60405180910390fd5b670de0b6b3a76400008161120b9190613cd0565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611277612199565b73ffffffffffffffffffffffffffffffffffffffff16611295611554565b73ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613b65565b60405180910390fd5b6112f56000612d6d565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61133d612199565b73ffffffffffffffffffffffffffffffffffffffff1661135b611554565b73ffffffffffffffffffffffffffffffffffffffff16146113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a890613b65565b60405180910390fd5b600760169054906101000a900460ff1615611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890613dd6565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611456612199565b73ffffffffffffffffffffffffffffffffffffffff16611474611554565b73ffffffffffffffffffffffffffffffffffffffff16146114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613b65565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114ee611554565b836040518363ffffffff1660e01b815260040161150c929190613df6565b6020604051808303816000875af115801561152b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154f9190613e34565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115b390613ae7565b80601f01602080910402602001604051908101604052809291908181526020018280546115df90613ae7565b801561162c5780601f106116015761010080835404028352916020019161162c565b820191906000526020600020905b81548152906001019060200180831161160f57829003601f168201915b5050505050905090565b61163e612199565b73ffffffffffffffffffffffffffffffffffffffff1661165c611554565b73ffffffffffffffffffffffffffffffffffffffff16146116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990613b65565b60405180910390fd5b80600a8190555050565b6116c4612199565b73ffffffffffffffffffffffffffffffffffffffff166116e2611554565b73ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613b65565b60405180910390fd5b61176881611744611554565b73ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b50565b611773612199565b73ffffffffffffffffffffffffffffffffffffffff16611791611554565b73ffffffffffffffffffffffffffffffffffffffff16146117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de90613b65565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118719190613e76565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc9190613e76565b6040518363ffffffff1660e01b8152600401611919929190613ea3565b6020604051808303816000875af1158015611938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195c9190613e76565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600080600160006119f3612199565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613f3e565b60405180910390fd5b611acd611abb612199565b858584611ac89190613c9c565b6121a1565b600191505092915050565b611ae0612199565b73ffffffffffffffffffffffffffffffffffffffff16611afe611554565b73ffffffffffffffffffffffffffffffffffffffff1614611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90613b65565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bd2611bcb612199565b848461236c565b6001905092915050565b600c5481565b611bea612199565b73ffffffffffffffffffffffffffffffffffffffff16611c08611554565b73ffffffffffffffffffffffffffffffffffffffff1614611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590613b65565b60405180910390fd5b670de0b6b3a764000081611c729190613cd0565b600c8190555050565b611c83612199565b73ffffffffffffffffffffffffffffffffffffffff16611ca1611554565b73ffffffffffffffffffffffffffffffffffffffff1614611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90613b65565b60405180910390fd5b60005b8151811015611d8857600160186000848481518110611d1c57611d1b613f5e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d8090613f8d565b915050611cfa565b5050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e3b612199565b73ffffffffffffffffffffffffffffffffffffffff16611e59611554565b73ffffffffffffffffffffffffffffffffffffffff1614611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690613b65565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611ed4612199565b73ffffffffffffffffffffffffffffffffffffffff16611ef2611554565b73ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613b65565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fab612199565b73ffffffffffffffffffffffffffffffffffffffff16611fc9611554565b73ffffffffffffffffffffffffffffffffffffffff161461201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613b65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690614048565b60405180910390fd5b61209881612d6d565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120e1612199565b73ffffffffffffffffffffffffffffffffffffffff166120ff611554565b73ffffffffffffffffffffffffffffffffffffffff1614612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c90613b65565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612211576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612208906140da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061416c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161235f91906133d4565b60405180910390a3505050565b600081116123af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a6906141fe565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124535750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612492576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124899061426a565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125365750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561254f5750600760149054906101000a900460ff16155b1561280b57600760169054906101000a900460ff166125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a906142d6565b60405180910390fd5b436009546008546125b49190613bb4565b111561271757600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612668576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612716576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b5481111561275c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275390614342565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461280a57600c54816127be84611227565b6127c89190613bb4565b1115612809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612800906143d4565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806128715750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806128c55750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128d35760009050612968565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561294a576064601654836129399190613cd0565b6129439190613d59565b9050612967565b60646015548361295a9190613cd0565b6129649190613d59565b90505b5b600760159054906101000a900460ff1680156129915750600760149054906101000a900460ff16155b80156129eb5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156129f75750600081115b15612a0557612a04612e33565b5b612a1b84848385612a169190613c9c565b613037565b6000811115612a3057612a2f843083613037565b5b50505050565b6000600267ffffffffffffffff811115612a5357612a526137d9565b5b604051908082528060200260200182016040528015612a815781602001602082028036833780820191505090505b5090503081600081518110612a9957612a98613f5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b649190613e76565b81600181518110612b7857612b77613f5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bdf30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c439594939291906144ed565b600060405180830381600087803b158015612c5d57600080fd5b505af1158015612c71573d6000803e3d6000fd5b505050505050565b80471015612cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb390614593565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612ce2906145e4565b60006040518083038185875af1925050503d8060008114612d1f576040519150601f19603f3d011682016040523d82523d6000602084013e612d24565b606091505b5050905080612d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5f9061466b565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16613035576001600760146101000a81548160ff0219169083151502179055506000612e6d30611227565b9050600a5481106130185760006002601654612e899190613cd0565b905060008160126001015484612e9f9190613cd0565b612ea99190613d59565b905060008184612eb99190613c9c565b90506000479050612ec982612a36565b60008147612ed79190613c9c565b9050600060126001015486612eec9190613c9c565b82612ef79190613d59565b9050600060126001015482612f0c9190613cd0565b90506000811115612f2257612f2186826132b6565b5b6000601260000154600284612f379190613cd0565b612f419190613cd0565b90506000811115612f9857612f9781600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b5b6000601260020154600285612fad9190613cd0565b612fb79190613cd0565b9050600081111561300e5761300d81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7990919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309e906146fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e9061478f565b60405180910390fd5b6131228383836133b6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156131a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319f90614821565b60405180910390fd5b81816131b49190613c9c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132449190613bb4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132a891906133d4565b60405180910390a350505050565b6132e330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161336c96959493929190614841565b60606040518083038185885af115801561338a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133af91906148b7565b5050505050565b505050565b6000819050919050565b6133ce816133bb565b82525050565b60006020820190506133e960008301846133c5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561342957808201518184015260208101905061340e565b83811115613438576000848401525b50505050565b6000601f19601f8301169050919050565b600061345a826133ef565b61346481856133fa565b935061347481856020860161340b565b61347d8161343e565b840191505092915050565b600060208201905081810360008301526134a2818461344f565b905092915050565b6000604051905090565b600080fd5b600080fd5b6134c7816133bb565b81146134d257600080fd5b50565b6000813590506134e4816134be565b92915050565b600080600060608486031215613503576135026134b4565b5b6000613511868287016134d5565b9350506020613522868287016134d5565b9250506040613533868287016134d5565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135688261353d565b9050919050565b6135788161355d565b811461358357600080fd5b50565b6000813590506135958161356f565b92915050565b600080604083850312156135b2576135b16134b4565b5b60006135c085828601613586565b92505060206135d1858286016134d5565b9150509250929050565b60008115159050919050565b6135f0816135db565b82525050565b600060208201905061360b60008301846135e7565b92915050565b60008060006060848603121561362a576136296134b4565b5b600061363886828701613586565b935050602061364986828701613586565b925050604061365a868287016134d5565b9150509250925092565b600060ff82169050919050565b61367a81613664565b82525050565b60006020820190506136956000830184613671565b92915050565b60006136a68261355d565b9050919050565b6136b68161369b565b81146136c157600080fd5b50565b6000813590506136d3816136ad565b92915050565b600080604083850312156136f0576136ef6134b4565b5b60006136fe858286016136c4565b925050602061370f85828601613586565b9150509250929050565b60006020828403121561372f5761372e6134b4565b5b600061373d848285016134d5565b91505092915050565b60006020828403121561375c5761375b6134b4565b5b600061376a84828501613586565b91505092915050565b600060608201905061378860008301866133c5565b61379560208301856133c5565b6137a260408301846133c5565b949350505050565b6137b38161355d565b82525050565b60006020820190506137ce60008301846137aa565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138118261343e565b810181811067ffffffffffffffff821117156138305761382f6137d9565b5b80604052505050565b60006138436134aa565b905061384f8282613808565b919050565b600067ffffffffffffffff82111561386f5761386e6137d9565b5b602082029050602081019050919050565b600080fd5b600061389861389384613854565b613839565b905080838252602082019050602084028301858111156138bb576138ba613880565b5b835b818110156138e457806138d08882613586565b8452602084019350506020810190506138bd565b5050509392505050565b600082601f830112613903576139026137d4565b5b8135613913848260208601613885565b91505092915050565b600060208284031215613932576139316134b4565b5b600082013567ffffffffffffffff8111156139505761394f6134b9565b5b61395c848285016138ee565b91505092915050565b6000806040838503121561397c5761397b6134b4565b5b600061398a85828601613586565b925050602061399b85828601613586565b9150509250929050565b6139ae816135db565b81146139b957600080fd5b50565b6000813590506139cb816139a5565b92915050565b6000602082840312156139e7576139e66134b4565b5b60006139f5848285016139bc565b91505092915050565b60008060408385031215613a1557613a146134b4565b5b6000613a2385828601613586565b9250506020613a34858286016139bc565b9150509250929050565b6000819050919050565b6000613a63613a5e613a598461353d565b613a3e565b61353d565b9050919050565b6000613a7582613a48565b9050919050565b6000613a8782613a6a565b9050919050565b613a9781613a7c565b82525050565b6000602082019050613ab26000830184613a8e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613aff57607f821691505b60208210811415613b1357613b12613ab8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b4f6020836133fa565b9150613b5a82613b19565b602082019050919050565b60006020820190508181036000830152613b7e81613b42565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bbf826133bb565b9150613bca836133bb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613bff57613bfe613b85565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c666028836133fa565b9150613c7182613c0a565b604082019050919050565b60006020820190508181036000830152613c9581613c59565b9050919050565b6000613ca7826133bb565b9150613cb2836133bb565b925082821015613cc557613cc4613b85565b5b828203905092915050565b6000613cdb826133bb565b9150613ce6836133bb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1f57613d1e613b85565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d64826133bb565b9150613d6f836133bb565b925082613d7f57613d7e613d2a565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613dc06016836133fa565b9150613dcb82613d8a565b602082019050919050565b60006020820190508181036000830152613def81613db3565b9050919050565b6000604082019050613e0b60008301856137aa565b613e1860208301846133c5565b9392505050565b600081519050613e2e816139a5565b92915050565b600060208284031215613e4a57613e496134b4565b5b6000613e5884828501613e1f565b91505092915050565b600081519050613e708161356f565b92915050565b600060208284031215613e8c57613e8b6134b4565b5b6000613e9a84828501613e61565b91505092915050565b6000604082019050613eb860008301856137aa565b613ec560208301846137aa565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f286025836133fa565b9150613f3382613ecc565b604082019050919050565b60006020820190508181036000830152613f5781613f1b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613f98826133bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fcb57613fca613b85565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140326026836133fa565b915061403d82613fd6565b604082019050919050565b6000602082019050818103600083015261406181614025565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140c46024836133fa565b91506140cf82614068565b604082019050919050565b600060208201905081810360008301526140f3816140b7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141566022836133fa565b9150614161826140fa565b604082019050919050565b6000602082019050818103600083015261418581614149565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141e86029836133fa565b91506141f38261418c565b604082019050919050565b60006020820190508181036000830152614217816141db565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b60006142546019836133fa565b915061425f8261421e565b602082019050919050565b6000602082019050818103600083015261428381614247565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b60006142c06016836133fa565b91506142cb8261428a565b602082019050919050565b600060208201905081810360008301526142ef816142b3565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b600061432c601d836133fa565b9150614337826142f6565b602082019050919050565b6000602082019050818103600083015261435b8161431f565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006143be6021836133fa565b91506143c982614362565b604082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b6000819050919050565b600061441961441461440f846143f4565b613a3e565b6133bb565b9050919050565b614429816143fe565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144648161355d565b82525050565b6000614476838361445b565b60208301905092915050565b6000602082019050919050565b600061449a8261442f565b6144a4818561443a565b93506144af8361444b565b8060005b838110156144e05781516144c7888261446a565b97506144d283614482565b9250506001810190506144b3565b5085935050505092915050565b600060a08201905061450260008301886133c5565b61450f6020830187614420565b8181036040830152614521818661448f565b905061453060608301856137aa565b61453d60808301846133c5565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061457d601d836133fa565b915061458882614547565b602082019050919050565b600060208201905081810360008301526145ac81614570565b9050919050565b600081905092915050565b50565b60006145ce6000836145b3565b91506145d9826145be565b600082019050919050565b60006145ef826145c1565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614655603a836133fa565b9150614660826145f9565b604082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146e76025836133fa565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147796023836133fa565b91506147848261471d565b604082019050919050565b600060208201905081810360008301526147a88161476c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061480b6026836133fa565b9150614816826147af565b604082019050919050565b6000602082019050818103600083015261483a816147fe565b9050919050565b600060c08201905061485660008301896137aa565b61486360208301886133c5565b6148706040830187614420565b61487d6060830186614420565b61488a60808301856137aa565b61489760a08301846133c5565b979650505050505050565b6000815190506148b1816134be565b92915050565b6000806000606084860312156148d0576148cf6134b4565b5b60006148de868287016148a2565b93505060206148ef868287016148a2565b9250506040614900868287016148a2565b915050925092509256fea26469706673582212202d22ad22ea653f96eaf2bdd0fa8fd21054f089460dd8dcc27cbde0f94cacdfb464736f6c634300080c0033

Deployed Bytecode Sourcemap

7964:8249:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8278:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1899:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14143:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2813:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2220:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13930:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8849:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2990:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15603:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8201:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8815:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2119:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3420:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14610:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8166:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8236:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15087:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8136:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2336:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6741:94;;;;;;;;;;;;;:::i;:::-;;8727:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8450:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13648:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8330:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15333:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6518:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8533:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2007:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13530:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15483:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9480:290;;;;;;;;;;;;;:::i;:::-;;3643:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14497:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8076:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2471:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8385:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15208:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14763:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8893:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2654:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13429:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14941:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6843:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8769:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8048:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14369:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8278:45;;;;:::o;1899:100::-;1953:13;1986:5;1979:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1899:100;:::o;14143:214::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14260:35:::1;;;;;;;;14266:10;14260:35;;;;14278:10;14260:35;;;;14290:4;14260:35;;::::0;14248:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;14345:4;14332:10;14319;:23;;;;:::i;:::-;:30;;;;:::i;:::-;14306:10;:43;;;;14143:214:::0;;;:::o;2813:169::-;2896:4;2913:39;2922:12;:10;:12::i;:::-;2936:7;2945:6;2913:8;:39::i;:::-;2970:4;2963:11;;2813:169;;;;:::o;2220:108::-;2281:7;2308:12;;2301:19;;2220:108;:::o;13930:205::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14042:35:::1;;;;;;;;14048:10;14042:35;;;;14060:10;14042:35;;;;14072:4;14042:35;;::::0;14034:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;14123:4;14110:10;14097;:23;;;;:::i;:::-;:30;;;;:::i;:::-;14088:6;:39;;;;13930:205:::0;;;:::o;8849:30::-;;;;:::o;2990:422::-;3096:4;3113:36;3123:6;3131:9;3142:6;3113:9;:36::i;:::-;3162:24;3189:11;:19;3201:6;3189:19;;;;;;;;;;;;;;;:33;3209:12;:10;:12::i;:::-;3189:33;;;;;;;;;;;;;;;;3162:60;;3261:6;3241:16;:26;;3233:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3323:57;3332:6;3340:12;:10;:12::i;:::-;3373:6;3354:16;:25;;;;:::i;:::-;3323:8;:57::i;:::-;3400:4;3393:11;;;2990:422;;;;;:::o;15603:546::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15720:19:::1;15742:21;15720:43;;15774:24;15791:6;15774:16;:24::i;:::-;15809:18;15854:11;15830:21;:35;;;;:::i;:::-;15809:56;;15901:1;15879:19;:23;15876:136;;;15904:108;15991:19;15975:13;:35;;;;:::i;:::-;15952:19;15939:10;:32;;;;:::i;:::-;:72;;;;:::i;:::-;15912:15;;;;;;;;;;;15904:34;;;;:108;;;;:::i;:::-;15876:136;16042:1;16026:13;:17;16023:118;;;16045:96;16120:19;16104:13;:35;;;;:::i;:::-;16087:13;16074:10;:26;;;;:::i;:::-;:66;;;;:::i;:::-;16053:9;;;;;;;;;;;16045:28;;;;:96;;;;:::i;:::-;16023:118;15709:440;;15603:546:::0;;;:::o;8201:28::-;;;;:::o;8815:26::-;;;;:::o;2119:93::-;2177:5;2202:2;2195:9;;2119:93;:::o;3420:215::-;3508:4;3525:80;3534:12;:10;:12::i;:::-;3548:7;3594:10;3557:11;:25;3569:12;:10;:12::i;:::-;3557:25;;;;;;;;;;;;;;;:34;3583:7;3557:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3525:8;:80::i;:::-;3623:4;3616:11;;3420:215;;;;:::o;14610:137::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14709:7:::1;14700:6;;:16;;;;;;;;;;;;;;;;;;14734:5;14727:4;;:12;;;;;;;;;;;;;;;;;;14610:137:::0;;:::o;8166:26::-;;;;;;;;;;;;;:::o;8236:29::-;;;;:::o;15087:109::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15182:6:::1;15173;:15;;;;:::i;:::-;15159:11;:29;;;;15087:109:::0;:::o;8136:23::-;;;;;;;;;;;;;:::o;2336:127::-;2410:7;2437:9;:18;2447:7;2437:18;;;;;;;;;;;;;;;;2430:25;;2336:127;;;:::o;6741:94::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6806:21:::1;6824:1;6806:9;:21::i;:::-;6741:94::o:0;8727:34::-;;;;;;;;;;;;;;;;;;;:::o;8450:75::-;;;;;;;;;;;;;:::o;13648:274::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13734:14:::1;;;;;;;;;;;13733:15;13725:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13803:4;13786:14;;:21;;;;;;;;;;;;;;;;;;13832:4;13818:11;;:18;;;;;;;;;;;;;;;;;;13863:12;13847:13;:28;;;;13899:15;13886:10;:28;;;;13648:274:::0;:::o;8330:47::-;;;;:::o;15333:142::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15428:12:::1;15421:29;;;15451:7;:5;:7::i;:::-;15460:6;15421:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15333:142:::0;;:::o;6518:87::-;6564:7;6591:6;;;;;;;;;;;6584:13;;6518:87;:::o;8533:69::-;;;;;;;;;;;;;:::o;2007:104::-;2063:13;2096:7;2089:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2007:104;:::o;13530:110::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13622:10:::1;13606:13;:26;;;;13530:110:::0;:::o;15483:112::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15550:37:::1;15577:9;15558:7;:5;:7::i;:::-;15550:26;;;;:37;;;;:::i;:::-;15483:112:::0;:::o;9480:290::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9531:15:::1;9557:42;9531:69;;9611:13;9636:7;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9627:52;;;9688:4;9695:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9627:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9611:99;;9732:7;9723:6;;:16;;;;;;;;;;;;;;;;;;9757:5;9750:4;;:12;;;;;;;;;;;;;;;;;;9520:250;;9480:290::o:0;3643:377::-;3736:4;3753:24;3780:11;:25;3792:12;:10;:12::i;:::-;3780:25;;;;;;;;;;;;;;;:34;3806:7;3780:34;;;;;;;;;;;;;;;;3753:61;;3853:15;3833:16;:35;;3825:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3921:67;3930:12;:10;:12::i;:::-;3944:7;3972:15;3953:16;:34;;;;:::i;:::-;3921:8;:67::i;:::-;4008:4;4001:11;;;3643:377;;;;:::o;14497:105::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14585:9:::1;14573;;:21;;;;;;;;;;;;;;;;;;14497:105:::0;:::o;8076:19::-;;;;;;;;;;;;;:::o;2471:175::-;2557:4;2574:42;2584:12;:10;:12::i;:::-;2598:9;2609:6;2574:9;:42::i;:::-;2634:4;2627:11;;2471:175;;;;:::o;8385:51::-;;;;:::o;15208:117::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15311:6:::1;15302;:15;;;;:::i;:::-;15284;:33;;;;15208:117:::0;:::o;14763:172::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14838:6:::1;14833:91;14854:6;:13;14850:1;:17;14833:91;;;14908:4;14889:5;:16;14895:6;14902:1;14895:9;;;;;;;;:::i;:::-;;;;;;;;14889:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14869:3;;;;;:::i;:::-;;;;14833:91;;;;14763:172:::0;:::o;8893:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;2654:151::-;2743:7;2770:11;:18;2782:5;2770:18;;;;;;;;;;;;;;;:27;2789:7;2770:27;;;;;;;;;;;;;;;;2763:34;;2654:151;;;;:::o;13429:93::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13509:5:::1;13495:11;;:19;;;;;;;;;;;;;;;;;;13429:93:::0;:::o;14941:134::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15062:5:::1;15033:16;:26;15050:8;15033:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14941:134:::0;;:::o;6843:192::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6952:1:::1;6932:22;;:8;:22;;;;6924:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7008:19;7018:8;7008:9;:19::i;:::-;6843:192:::0;:::o;8769:38::-;;;;;;;;;;;;;;;;;;;:::o;8048:21::-;;;;;;;;;;;;;:::o;14369:116::-;6664:12;:10;:12::i;:::-;6653:23;;:7;:5;:7::i;:::-;:23;;;6645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14468:9:::1;14450:15;;:27;;;;;;;;;;;;;;;;;;14369:116:::0;:::o;301:98::-;354:7;381:10;374:17;;301:98;:::o;5488:346::-;5607:1;5590:19;;:5;:19;;;;5582:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5688:1;5669:21;;:7;:21;;;;5661:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5772:6;5742:11;:18;5754:5;5742:18;;;;;;;;;;;;;;;:27;5761:7;5742:27;;;;;;;;;;;;;;;:36;;;;5810:7;5794:32;;5803:5;5794:32;;;5819:6;5794:32;;;;;;:::i;:::-;;;;;;;;5488:346;;;:::o;9782:1389::-;9898:1;9889:6;:10;9881:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9965:5;:13;9971:6;9965:13;;;;;;;;;;;;;;;;;;;;;;;;;9964:14;:35;;;;;9983:5;:16;9989:9;9983:16;;;;;;;;;;;;;;;;;;;;;;;;;9982:17;9964:35;9956:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10072:16;:24;10089:6;10072:24;;;;;;;;;;;;;;;;;;;;;;;;;10071:25;:57;;;;;10101:16;:27;10118:9;10101:27;;;;;;;;;;;;;;;;;;;;;;;;;10100:28;10071:57;:70;;;;;10133:8;;;;;;;;;;;10132:9;10071:70;10068:589;;;10165:14;;;;;;;;;;;10157:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10253:12;10240:10;;10224:13;;:26;;;;:::i;:::-;:41;10221:183;;;10301:4;;;;;;;;;;;10288:17;;:9;:17;;;10285:45;;10326:4;10307:5;:16;10313:9;10307:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10285:45;10362:4;;;;;;;;;;;10352:14;;:6;:14;;;10349:39;;10384:4;10368:5;:13;10374:6;10368:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;10349:39;10221:183;10436:11;;10426:6;:21;;10418:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10512:4;;;;;;;;;;;10499:17;;:9;:17;;;10496:150;;10577:15;;10567:6;10544:20;10554:9;10544;:20::i;:::-;:29;;;;:::i;:::-;:48;;10536:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;10496:150;10068:589;10669:11;10709:8;;;;;;;;;;;:36;;;;10721:16;:24;10738:6;10721:24;;;;;;;;;;;;;;;;;;;;;;;;;10709:36;:67;;;;10749:16;:27;10766:9;10749:27;;;;;;;;;;;;;;;;;;;;;;;;;10709:67;10705:235;;;10784:1;10778:7;;10705:235;;;10844:4;;;;;;;;;;;10831:17;;:9;:17;;;10828:100;;;10878:3;10865:10;;10856:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10850:31;;10828:100;;;10925:3;10916:6;;10907;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10901:27;;10828:100;10705:235;10966:11;;;;;;;;;;;:24;;;;;10982:8;;;;;;;;;;;10981:9;10966:24;:42;;;;;11004:4;;;;;;;;;;;10994:14;;:6;:14;;;;10966:42;:53;;;;;11018:1;11012:3;:7;10966:53;10962:72;;;11021:13;:11;:13::i;:::-;10962:72;11047:48;11063:6;11071:9;11091:3;11082:6;:12;;;;:::i;:::-;11047:15;:48::i;:::-;11115:1;11109:3;:7;11106:55;;;11118:43;11134:6;11150:4;11157:3;11118:15;:43::i;:::-;11106:55;9870:1301;9782:1389;;;:::o;12516:400::-;12582:21;12620:1;12606:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12582:40;;12651:4;12633;12638:1;12633:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12677:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12667:4;12672:1;12667:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12703:53;12720:4;12735:6;;;;;;;;;;;12744:11;12703:8;:53::i;:::-;12795:6;;;;;;;;;;;:57;;;12853:11;12866:1;12869:4;12883;12890:15;12795:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12571:345;12516:400;:::o;5963:317::-;6078:6;6053:21;:31;;6045:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6132:12;6150:9;:14;;6172:6;6150:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6131:52;;;6202:7;6194:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6034:246;5963:317;;:::o;7043:173::-;7099:16;7118:6;;;;;;;;;;;7099:25;;7144:8;7135:6;;:17;;;;;;;;;;;;;;;;;;7199:8;7168:40;;7189:8;7168:40;;;;;;;;;;;;7088:128;7043:173;:::o;11179:1327::-;9035:8;;;;;;;;;;;9030:104;;9071:4;9060:8;;:15;;;;;;;;;;;;;;;;;;11228:23:::1;11254:24;11272:4;11254:9;:24::i;:::-;11228:50;;11312:13;;11293:15;:32;11289:1210;;11352:19;11387:1;11374:10;;:14;;;;:::i;:::-;11352:36;;11403:32;11478:11;11456:9;:19;;;11438:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;11403:86;;11504:14;11539:24;11521:15;:42;;;;:::i;:::-;11504:59;;11584:22;11609:21;11584:46;;11651:24;11668:6;11651:16;:24::i;:::-;11696:20;11743:14;11719:21;:38;;;;:::i;:::-;11696:61;;11772:19;11823:9;:19;;;11809:11;:33;;;;:::i;:::-;11793:12;:50;;;;:::i;:::-;11772:71;;11858:29;11904:9;:19;;;11890:11;:33;;;;:::i;:::-;11858:65;;11971:1;11947:21;:25;11944:170;;;12037:61;12050:24;12076:21;12037:12;:61::i;:::-;11944:170;12134:20;12175:9;:19;;;12171:1;12157:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;12134:60;;12227:1;12212:12;:16;12209:103;;;12248:48;12283:12;12256:15;;;;;;;;;;;12248:34;;;;:48;;;;:::i;:::-;12209:103;12340:14;12375:9;:13;;;12371:1;12357:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;12340:48;;12415:1;12406:6;:10;12403:85;;;12436:36;12465:6;12444:9;;;;;;;;;;;12436:28;;;;:36;;;;:::i;:::-;12403:85;11327:1172;;;;;;;;;11289:1210;11217:1289;9117:5:::0;9106:8;;:16;;;;;;;;;;;;;;;;;;9030:104;11179:1327::o;4028:604::-;4152:1;4134:20;;:6;:20;;;;4126:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4236:1;4215:23;;:9;:23;;;;4207:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4291:47;4312:6;4320:9;4331:6;4291:20;:47::i;:::-;4351:21;4375:9;:17;4385:6;4375:17;;;;;;;;;;;;;;;;4351:41;;4428:6;4411:13;:23;;4403:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4524:6;4508:13;:22;;;;:::i;:::-;4488:9;:17;4498:6;4488:17;;;;;;;;;;;;;;;:42;;;;4565:6;4541:9;:20;4551:9;4541:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4606:9;4589:35;;4598:6;4589:35;;;4617:6;4589:35;;;;;;:::i;:::-;;;;;;;;4115:517;4028:604;;;:::o;12924:497::-;13072:53;13089:4;13104:6;;;;;;;;;;;13113:11;13072:8;:53::i;:::-;13168:6;;;;;;;;;;;:22;;;13198:9;13231:4;13251:11;13277:1;13320;13363:9;;;;;;;;;;;13387:15;13168:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12924:497;;:::o;5842:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:122;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:619::-;2509:6;2517;2525;2574:2;2562:9;2553:7;2549:23;2545:32;2542:119;;;2580:79;;:::i;:::-;2542:119;2700:1;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;:::i;:::-;2715:63;;2671:117;2827:2;2853:53;2898:7;2889:6;2878:9;2874:22;2853:53;:::i;:::-;2843:63;;2798:118;2955:2;2981:53;3026:7;3017:6;3006:9;3002:22;2981:53;:::i;:::-;2971:63;;2926:118;2432:619;;;;;:::o;3057:126::-;3094:7;3134:42;3127:5;3123:54;3112:65;;3057:126;;;:::o;3189:96::-;3226:7;3255:24;3273:5;3255:24;:::i;:::-;3244:35;;3189:96;;;:::o;3291:122::-;3364:24;3382:5;3364:24;:::i;:::-;3357:5;3354:35;3344:63;;3403:1;3400;3393:12;3344:63;3291:122;:::o;3419:139::-;3465:5;3503:6;3490:20;3481:29;;3519:33;3546:5;3519:33;:::i;:::-;3419:139;;;;:::o;3564:474::-;3632:6;3640;3689:2;3677:9;3668:7;3664:23;3660:32;3657:119;;;3695:79;;:::i;:::-;3657:119;3815:1;3840:53;3885:7;3876:6;3865:9;3861:22;3840:53;:::i;:::-;3830:63;;3786:117;3942:2;3968:53;4013:7;4004:6;3993:9;3989:22;3968:53;:::i;:::-;3958:63;;3913:118;3564:474;;;;;:::o;4044:90::-;4078:7;4121:5;4114:13;4107:21;4096:32;;4044:90;;;:::o;4140:109::-;4221:21;4236:5;4221:21;:::i;:::-;4216:3;4209:34;4140:109;;:::o;4255:210::-;4342:4;4380:2;4369:9;4365:18;4357:26;;4393:65;4455:1;4444:9;4440:17;4431:6;4393:65;:::i;:::-;4255:210;;;;:::o;4471:619::-;4548:6;4556;4564;4613:2;4601:9;4592:7;4588:23;4584:32;4581:119;;;4619:79;;:::i;:::-;4581:119;4739:1;4764:53;4809:7;4800:6;4789:9;4785:22;4764:53;:::i;:::-;4754:63;;4710:117;4866:2;4892:53;4937:7;4928:6;4917:9;4913:22;4892:53;:::i;:::-;4882:63;;4837:118;4994:2;5020:53;5065:7;5056:6;5045:9;5041:22;5020:53;:::i;:::-;5010:63;;4965:118;4471:619;;;;;:::o;5096:86::-;5131:7;5171:4;5164:5;5160:16;5149:27;;5096:86;;;:::o;5188:112::-;5271:22;5287:5;5271:22;:::i;:::-;5266:3;5259:35;5188:112;;:::o;5306:214::-;5395:4;5433:2;5422:9;5418:18;5410:26;;5446:67;5510:1;5499:9;5495:17;5486:6;5446:67;:::i;:::-;5306:214;;;;:::o;5526:111::-;5578:7;5607:24;5625:5;5607:24;:::i;:::-;5596:35;;5526:111;;;:::o;5643:152::-;5731:39;5764:5;5731:39;:::i;:::-;5724:5;5721:50;5711:78;;5785:1;5782;5775:12;5711:78;5643:152;:::o;5801:169::-;5862:5;5900:6;5887:20;5878:29;;5916:48;5958:5;5916:48;:::i;:::-;5801:169;;;;:::o;5976:504::-;6059:6;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:68;6327:7;6318:6;6307:9;6303:22;6267:68;:::i;:::-;6257:78;;6213:132;6384:2;6410:53;6455:7;6446:6;6435:9;6431:22;6410:53;:::i;:::-;6400:63;;6355:118;5976:504;;;;;:::o;6486:329::-;6545:6;6594:2;6582:9;6573:7;6569:23;6565:32;6562:119;;;6600:79;;:::i;:::-;6562:119;6720:1;6745:53;6790:7;6781:6;6770:9;6766:22;6745:53;:::i;:::-;6735:63;;6691:117;6486:329;;;;:::o;6821:::-;6880:6;6929:2;6917:9;6908:7;6904:23;6900:32;6897:119;;;6935:79;;:::i;:::-;6897:119;7055:1;7080:53;7125:7;7116:6;7105:9;7101:22;7080:53;:::i;:::-;7070:63;;7026:117;6821:329;;;;:::o;7156:442::-;7305:4;7343:2;7332:9;7328:18;7320:26;;7356:71;7424:1;7413:9;7409:17;7400:6;7356:71;:::i;:::-;7437:72;7505:2;7494:9;7490:18;7481:6;7437:72;:::i;:::-;7519;7587:2;7576:9;7572:18;7563:6;7519:72;:::i;:::-;7156:442;;;;;;:::o;7604:118::-;7691:24;7709:5;7691:24;:::i;:::-;7686:3;7679:37;7604:118;;:::o;7728:222::-;7821:4;7859:2;7848:9;7844:18;7836:26;;7872:71;7940:1;7929:9;7925:17;7916:6;7872:71;:::i;:::-;7728:222;;;;:::o;7956:117::-;8065:1;8062;8055:12;8079:180;8127:77;8124:1;8117:88;8224:4;8221:1;8214:15;8248:4;8245:1;8238:15;8265:281;8348:27;8370:4;8348:27;:::i;:::-;8340:6;8336:40;8478:6;8466:10;8463:22;8442:18;8430:10;8427:34;8424:62;8421:88;;;8489:18;;:::i;:::-;8421:88;8529:10;8525:2;8518:22;8308:238;8265:281;;:::o;8552:129::-;8586:6;8613:20;;:::i;:::-;8603:30;;8642:33;8670:4;8662:6;8642:33;:::i;:::-;8552:129;;;:::o;8687:311::-;8764:4;8854:18;8846:6;8843:30;8840:56;;;8876:18;;:::i;:::-;8840:56;8926:4;8918:6;8914:17;8906:25;;8986:4;8980;8976:15;8968:23;;8687:311;;;:::o;9004:117::-;9113:1;9110;9103:12;9144:710;9240:5;9265:81;9281:64;9338:6;9281:64;:::i;:::-;9265:81;:::i;:::-;9256:90;;9366:5;9395:6;9388:5;9381:21;9429:4;9422:5;9418:16;9411:23;;9482:4;9474:6;9470:17;9462:6;9458:30;9511:3;9503:6;9500:15;9497:122;;;9530:79;;:::i;:::-;9497:122;9645:6;9628:220;9662:6;9657:3;9654:15;9628:220;;;9737:3;9766:37;9799:3;9787:10;9766:37;:::i;:::-;9761:3;9754:50;9833:4;9828:3;9824:14;9817:21;;9704:144;9688:4;9683:3;9679:14;9672:21;;9628:220;;;9632:21;9246:608;;9144:710;;;;;:::o;9877:370::-;9948:5;9997:3;9990:4;9982:6;9978:17;9974:27;9964:122;;10005:79;;:::i;:::-;9964:122;10122:6;10109:20;10147:94;10237:3;10229:6;10222:4;10214:6;10210:17;10147:94;:::i;:::-;10138:103;;9954:293;9877:370;;;;:::o;10253:539::-;10337:6;10386:2;10374:9;10365:7;10361:23;10357:32;10354:119;;;10392:79;;:::i;:::-;10354:119;10540:1;10529:9;10525:17;10512:31;10570:18;10562:6;10559:30;10556:117;;;10592:79;;:::i;:::-;10556:117;10697:78;10767:7;10758:6;10747:9;10743:22;10697:78;:::i;:::-;10687:88;;10483:302;10253:539;;;;:::o;10798:474::-;10866:6;10874;10923:2;10911:9;10902:7;10898:23;10894:32;10891:119;;;10929:79;;:::i;:::-;10891:119;11049:1;11074:53;11119:7;11110:6;11099:9;11095:22;11074:53;:::i;:::-;11064:63;;11020:117;11176:2;11202:53;11247:7;11238:6;11227:9;11223:22;11202:53;:::i;:::-;11192:63;;11147:118;10798:474;;;;;:::o;11278:116::-;11348:21;11363:5;11348:21;:::i;:::-;11341:5;11338:32;11328:60;;11384:1;11381;11374:12;11328:60;11278:116;:::o;11400:133::-;11443:5;11481:6;11468:20;11459:29;;11497:30;11521:5;11497:30;:::i;:::-;11400:133;;;;:::o;11539:323::-;11595:6;11644:2;11632:9;11623:7;11619:23;11615:32;11612:119;;;11650:79;;:::i;:::-;11612:119;11770:1;11795:50;11837:7;11828:6;11817:9;11813:22;11795:50;:::i;:::-;11785:60;;11741:114;11539:323;;;;:::o;11868:468::-;11933:6;11941;11990:2;11978:9;11969:7;11965:23;11961:32;11958:119;;;11996:79;;:::i;:::-;11958:119;12116:1;12141:53;12186:7;12177:6;12166:9;12162:22;12141:53;:::i;:::-;12131:63;;12087:117;12243:2;12269:50;12311:7;12302:6;12291:9;12287:22;12269:50;:::i;:::-;12259:60;;12214:115;11868:468;;;;;:::o;12342:60::-;12370:3;12391:5;12384:12;;12342:60;;;:::o;12408:142::-;12458:9;12491:53;12509:34;12518:24;12536:5;12518:24;:::i;:::-;12509:34;:::i;:::-;12491:53;:::i;:::-;12478:66;;12408:142;;;:::o;12556:126::-;12606:9;12639:37;12670:5;12639:37;:::i;:::-;12626:50;;12556:126;;;:::o;12688:141::-;12753:9;12786:37;12817:5;12786:37;:::i;:::-;12773:50;;12688:141;;;:::o;12835:161::-;12937:52;12983:5;12937:52;:::i;:::-;12932:3;12925:65;12835:161;;:::o;13002:252::-;13110:4;13148:2;13137:9;13133:18;13125:26;;13161:86;13244:1;13233:9;13229:17;13220:6;13161:86;:::i;:::-;13002:252;;;;:::o;13260:180::-;13308:77;13305:1;13298:88;13405:4;13402:1;13395:15;13429:4;13426:1;13419:15;13446:320;13490:6;13527:1;13521:4;13517:12;13507:22;;13574:1;13568:4;13564:12;13595:18;13585:81;;13651:4;13643:6;13639:17;13629:27;;13585:81;13713:2;13705:6;13702:14;13682:18;13679:38;13676:84;;;13732:18;;:::i;:::-;13676:84;13497:269;13446:320;;;:::o;13772:182::-;13912:34;13908:1;13900:6;13896:14;13889:58;13772:182;:::o;13960:366::-;14102:3;14123:67;14187:2;14182:3;14123:67;:::i;:::-;14116:74;;14199:93;14288:3;14199:93;:::i;:::-;14317:2;14312:3;14308:12;14301:19;;13960:366;;;:::o;14332:419::-;14498:4;14536:2;14525:9;14521:18;14513:26;;14585:9;14579:4;14575:20;14571:1;14560:9;14556:17;14549:47;14613:131;14739:4;14613:131;:::i;:::-;14605:139;;14332:419;;;:::o;14757:180::-;14805:77;14802:1;14795:88;14902:4;14899:1;14892:15;14926:4;14923:1;14916:15;14943:305;14983:3;15002:20;15020:1;15002:20;:::i;:::-;14997:25;;15036:20;15054:1;15036:20;:::i;:::-;15031:25;;15190:1;15122:66;15118:74;15115:1;15112:81;15109:107;;;15196:18;;:::i;:::-;15109:107;15240:1;15237;15233:9;15226:16;;14943:305;;;;:::o;15254:227::-;15394:34;15390:1;15382:6;15378:14;15371:58;15463:10;15458:2;15450:6;15446:15;15439:35;15254:227;:::o;15487:366::-;15629:3;15650:67;15714:2;15709:3;15650:67;:::i;:::-;15643:74;;15726:93;15815:3;15726:93;:::i;:::-;15844:2;15839:3;15835:12;15828:19;;15487:366;;;:::o;15859:419::-;16025:4;16063:2;16052:9;16048:18;16040:26;;16112:9;16106:4;16102:20;16098:1;16087:9;16083:17;16076:47;16140:131;16266:4;16140:131;:::i;:::-;16132:139;;15859:419;;;:::o;16284:191::-;16324:4;16344:20;16362:1;16344:20;:::i;:::-;16339:25;;16378:20;16396:1;16378:20;:::i;:::-;16373:25;;16417:1;16414;16411:8;16408:34;;;16422:18;;:::i;:::-;16408:34;16467:1;16464;16460:9;16452:17;;16284:191;;;;:::o;16481:348::-;16521:7;16544:20;16562:1;16544:20;:::i;:::-;16539:25;;16578:20;16596:1;16578:20;:::i;:::-;16573:25;;16766:1;16698:66;16694:74;16691:1;16688:81;16683:1;16676:9;16669:17;16665:105;16662:131;;;16773:18;;:::i;:::-;16662:131;16821:1;16818;16814:9;16803:20;;16481:348;;;;:::o;16835:180::-;16883:77;16880:1;16873:88;16980:4;16977:1;16970:15;17004:4;17001:1;16994:15;17021:185;17061:1;17078:20;17096:1;17078:20;:::i;:::-;17073:25;;17112:20;17130:1;17112:20;:::i;:::-;17107:25;;17151:1;17141:35;;17156:18;;:::i;:::-;17141:35;17198:1;17195;17191:9;17186:14;;17021:185;;;;:::o;17212:172::-;17352:24;17348:1;17340:6;17336:14;17329:48;17212:172;:::o;17390:366::-;17532:3;17553:67;17617:2;17612:3;17553:67;:::i;:::-;17546:74;;17629:93;17718:3;17629:93;:::i;:::-;17747:2;17742:3;17738:12;17731:19;;17390:366;;;:::o;17762:419::-;17928:4;17966:2;17955:9;17951:18;17943:26;;18015:9;18009:4;18005:20;18001:1;17990:9;17986:17;17979:47;18043:131;18169:4;18043:131;:::i;:::-;18035:139;;17762:419;;;:::o;18187:332::-;18308:4;18346:2;18335:9;18331:18;18323:26;;18359:71;18427:1;18416:9;18412:17;18403:6;18359:71;:::i;:::-;18440:72;18508:2;18497:9;18493:18;18484:6;18440:72;:::i;:::-;18187:332;;;;;:::o;18525:137::-;18579:5;18610:6;18604:13;18595:22;;18626:30;18650:5;18626:30;:::i;:::-;18525:137;;;;:::o;18668:345::-;18735:6;18784:2;18772:9;18763:7;18759:23;18755:32;18752:119;;;18790:79;;:::i;:::-;18752:119;18910:1;18935:61;18988:7;18979:6;18968:9;18964:22;18935:61;:::i;:::-;18925:71;;18881:125;18668:345;;;;:::o;19019:143::-;19076:5;19107:6;19101:13;19092:22;;19123:33;19150:5;19123:33;:::i;:::-;19019:143;;;;:::o;19168:351::-;19238:6;19287:2;19275:9;19266:7;19262:23;19258:32;19255:119;;;19293:79;;:::i;:::-;19255:119;19413:1;19438:64;19494:7;19485:6;19474:9;19470:22;19438:64;:::i;:::-;19428:74;;19384:128;19168:351;;;;:::o;19525:332::-;19646:4;19684:2;19673:9;19669:18;19661:26;;19697:71;19765:1;19754:9;19750:17;19741:6;19697:71;:::i;:::-;19778:72;19846:2;19835:9;19831:18;19822:6;19778:72;:::i;:::-;19525:332;;;;;:::o;19863:224::-;20003:34;19999:1;19991:6;19987:14;19980:58;20072:7;20067:2;20059:6;20055:15;20048:32;19863:224;:::o;20093:366::-;20235:3;20256:67;20320:2;20315:3;20256:67;:::i;:::-;20249:74;;20332:93;20421:3;20332:93;:::i;:::-;20450:2;20445:3;20441:12;20434:19;;20093:366;;;:::o;20465:419::-;20631:4;20669:2;20658:9;20654:18;20646:26;;20718:9;20712:4;20708:20;20704:1;20693:9;20689:17;20682:47;20746:131;20872:4;20746:131;:::i;:::-;20738:139;;20465:419;;;:::o;20890:180::-;20938:77;20935:1;20928:88;21035:4;21032:1;21025:15;21059:4;21056:1;21049:15;21076:233;21115:3;21138:24;21156:5;21138:24;:::i;:::-;21129:33;;21184:66;21177:5;21174:77;21171:103;;;21254:18;;:::i;:::-;21171:103;21301:1;21294:5;21290:13;21283:20;;21076:233;;;:::o;21315:225::-;21455:34;21451:1;21443:6;21439:14;21432:58;21524:8;21519:2;21511:6;21507:15;21500:33;21315:225;:::o;21546:366::-;21688:3;21709:67;21773:2;21768:3;21709:67;:::i;:::-;21702:74;;21785:93;21874:3;21785:93;:::i;:::-;21903:2;21898:3;21894:12;21887:19;;21546:366;;;:::o;21918:419::-;22084:4;22122:2;22111:9;22107:18;22099:26;;22171:9;22165:4;22161:20;22157:1;22146:9;22142:17;22135:47;22199:131;22325:4;22199:131;:::i;:::-;22191:139;;21918:419;;;:::o;22343:223::-;22483:34;22479:1;22471:6;22467:14;22460:58;22552:6;22547:2;22539:6;22535:15;22528:31;22343:223;:::o;22572:366::-;22714:3;22735:67;22799:2;22794:3;22735:67;:::i;:::-;22728:74;;22811:93;22900:3;22811:93;:::i;:::-;22929:2;22924:3;22920:12;22913:19;;22572:366;;;:::o;22944:419::-;23110:4;23148:2;23137:9;23133:18;23125:26;;23197:9;23191:4;23187:20;23183:1;23172:9;23168:17;23161:47;23225:131;23351:4;23225:131;:::i;:::-;23217:139;;22944:419;;;:::o;23369:221::-;23509:34;23505:1;23497:6;23493:14;23486:58;23578:4;23573:2;23565:6;23561:15;23554:29;23369:221;:::o;23596:366::-;23738:3;23759:67;23823:2;23818:3;23759:67;:::i;:::-;23752:74;;23835:93;23924:3;23835:93;:::i;:::-;23953:2;23948:3;23944:12;23937:19;;23596:366;;;:::o;23968:419::-;24134:4;24172:2;24161:9;24157:18;24149:26;;24221:9;24215:4;24211:20;24207:1;24196:9;24192:17;24185:47;24249:131;24375:4;24249:131;:::i;:::-;24241:139;;23968:419;;;:::o;24393:228::-;24533:34;24529:1;24521:6;24517:14;24510:58;24602:11;24597:2;24589:6;24585:15;24578:36;24393:228;:::o;24627:366::-;24769:3;24790:67;24854:2;24849:3;24790:67;:::i;:::-;24783:74;;24866:93;24955:3;24866:93;:::i;:::-;24984:2;24979:3;24975:12;24968:19;;24627:366;;;:::o;24999:419::-;25165:4;25203:2;25192:9;25188:18;25180:26;;25252:9;25246:4;25242:20;25238:1;25227:9;25223:17;25216:47;25280:131;25406:4;25280:131;:::i;:::-;25272:139;;24999:419;;;:::o;25424:175::-;25564:27;25560:1;25552:6;25548:14;25541:51;25424:175;:::o;25605:366::-;25747:3;25768:67;25832:2;25827:3;25768:67;:::i;:::-;25761:74;;25844:93;25933:3;25844:93;:::i;:::-;25962:2;25957:3;25953:12;25946:19;;25605:366;;;:::o;25977:419::-;26143:4;26181:2;26170:9;26166:18;26158:26;;26230:9;26224:4;26220:20;26216:1;26205:9;26201:17;26194:47;26258:131;26384:4;26258:131;:::i;:::-;26250:139;;25977:419;;;:::o;26402:172::-;26542:24;26538:1;26530:6;26526:14;26519:48;26402:172;:::o;26580:366::-;26722:3;26743:67;26807:2;26802:3;26743:67;:::i;:::-;26736:74;;26819:93;26908:3;26819:93;:::i;:::-;26937:2;26932:3;26928:12;26921:19;;26580:366;;;:::o;26952:419::-;27118:4;27156:2;27145:9;27141:18;27133:26;;27205:9;27199:4;27195:20;27191:1;27180:9;27176:17;27169:47;27233:131;27359:4;27233:131;:::i;:::-;27225:139;;26952:419;;;:::o;27377:179::-;27517:31;27513:1;27505:6;27501:14;27494:55;27377:179;:::o;27562:366::-;27704:3;27725:67;27789:2;27784:3;27725:67;:::i;:::-;27718:74;;27801:93;27890:3;27801:93;:::i;:::-;27919:2;27914:3;27910:12;27903:19;;27562:366;;;:::o;27934:419::-;28100:4;28138:2;28127:9;28123:18;28115:26;;28187:9;28181:4;28177:20;28173:1;28162:9;28158:17;28151:47;28215:131;28341:4;28215:131;:::i;:::-;28207:139;;27934:419;;;:::o;28359:220::-;28499:34;28495:1;28487:6;28483:14;28476:58;28568:3;28563:2;28555:6;28551:15;28544:28;28359:220;:::o;28585:366::-;28727:3;28748:67;28812:2;28807:3;28748:67;:::i;:::-;28741:74;;28824:93;28913:3;28824:93;:::i;:::-;28942:2;28937:3;28933:12;28926:19;;28585:366;;;:::o;28957:419::-;29123:4;29161:2;29150:9;29146:18;29138:26;;29210:9;29204:4;29200:20;29196:1;29185:9;29181:17;29174:47;29238:131;29364:4;29238:131;:::i;:::-;29230:139;;28957:419;;;:::o;29382:85::-;29427:7;29456:5;29445:16;;29382:85;;;:::o;29473:158::-;29531:9;29564:61;29582:42;29591:32;29617:5;29591:32;:::i;:::-;29582:42;:::i;:::-;29564:61;:::i;:::-;29551:74;;29473:158;;;:::o;29637:147::-;29732:45;29771:5;29732:45;:::i;:::-;29727:3;29720:58;29637:147;;:::o;29790:114::-;29857:6;29891:5;29885:12;29875:22;;29790:114;;;:::o;29910:184::-;30009:11;30043:6;30038:3;30031:19;30083:4;30078:3;30074:14;30059:29;;29910:184;;;;:::o;30100:132::-;30167:4;30190:3;30182:11;;30220:4;30215:3;30211:14;30203:22;;30100:132;;;:::o;30238:108::-;30315:24;30333:5;30315:24;:::i;:::-;30310:3;30303:37;30238:108;;:::o;30352:179::-;30421:10;30442:46;30484:3;30476:6;30442:46;:::i;:::-;30520:4;30515:3;30511:14;30497:28;;30352:179;;;;:::o;30537:113::-;30607:4;30639;30634:3;30630:14;30622:22;;30537:113;;;:::o;30686:732::-;30805:3;30834:54;30882:5;30834:54;:::i;:::-;30904:86;30983:6;30978:3;30904:86;:::i;:::-;30897:93;;31014:56;31064:5;31014:56;:::i;:::-;31093:7;31124:1;31109:284;31134:6;31131:1;31128:13;31109:284;;;31210:6;31204:13;31237:63;31296:3;31281:13;31237:63;:::i;:::-;31230:70;;31323:60;31376:6;31323:60;:::i;:::-;31313:70;;31169:224;31156:1;31153;31149:9;31144:14;;31109:284;;;31113:14;31409:3;31402:10;;30810:608;;;30686:732;;;;:::o;31424:831::-;31687:4;31725:3;31714:9;31710:19;31702:27;;31739:71;31807:1;31796:9;31792:17;31783:6;31739:71;:::i;:::-;31820:80;31896:2;31885:9;31881:18;31872:6;31820:80;:::i;:::-;31947:9;31941:4;31937:20;31932:2;31921:9;31917:18;31910:48;31975:108;32078:4;32069:6;31975:108;:::i;:::-;31967:116;;32093:72;32161:2;32150:9;32146:18;32137:6;32093:72;:::i;:::-;32175:73;32243:3;32232:9;32228:19;32219:6;32175:73;:::i;:::-;31424:831;;;;;;;;:::o;32261:179::-;32401:31;32397:1;32389:6;32385:14;32378:55;32261:179;:::o;32446:366::-;32588:3;32609:67;32673:2;32668:3;32609:67;:::i;:::-;32602:74;;32685:93;32774:3;32685:93;:::i;:::-;32803:2;32798:3;32794:12;32787:19;;32446:366;;;:::o;32818:419::-;32984:4;33022:2;33011:9;33007:18;32999:26;;33071:9;33065:4;33061:20;33057:1;33046:9;33042:17;33035:47;33099:131;33225:4;33099:131;:::i;:::-;33091:139;;32818:419;;;:::o;33243:147::-;33344:11;33381:3;33366:18;;33243:147;;;;:::o;33396:114::-;;:::o;33516:398::-;33675:3;33696:83;33777:1;33772:3;33696:83;:::i;:::-;33689:90;;33788:93;33877:3;33788:93;:::i;:::-;33906:1;33901:3;33897:11;33890:18;;33516:398;;;:::o;33920:379::-;34104:3;34126:147;34269:3;34126:147;:::i;:::-;34119:154;;34290:3;34283:10;;33920:379;;;:::o;34305:245::-;34445:34;34441:1;34433:6;34429:14;34422:58;34514:28;34509:2;34501:6;34497:15;34490:53;34305:245;:::o;34556:366::-;34698:3;34719:67;34783:2;34778:3;34719:67;:::i;:::-;34712:74;;34795:93;34884:3;34795:93;:::i;:::-;34913:2;34908:3;34904:12;34897:19;;34556:366;;;:::o;34928:419::-;35094:4;35132:2;35121:9;35117:18;35109:26;;35181:9;35175:4;35171:20;35167:1;35156:9;35152:17;35145:47;35209:131;35335:4;35209:131;:::i;:::-;35201:139;;34928:419;;;:::o;35353:224::-;35493:34;35489:1;35481:6;35477:14;35470:58;35562:7;35557:2;35549:6;35545:15;35538:32;35353:224;:::o;35583:366::-;35725:3;35746:67;35810:2;35805:3;35746:67;:::i;:::-;35739:74;;35822:93;35911:3;35822:93;:::i;:::-;35940:2;35935:3;35931:12;35924:19;;35583:366;;;:::o;35955:419::-;36121:4;36159:2;36148:9;36144:18;36136:26;;36208:9;36202:4;36198:20;36194:1;36183:9;36179:17;36172:47;36236:131;36362:4;36236:131;:::i;:::-;36228:139;;35955:419;;;:::o;36380:222::-;36520:34;36516:1;36508:6;36504:14;36497:58;36589:5;36584:2;36576:6;36572:15;36565:30;36380:222;:::o;36608:366::-;36750:3;36771:67;36835:2;36830:3;36771:67;:::i;:::-;36764:74;;36847:93;36936:3;36847:93;:::i;:::-;36965:2;36960:3;36956:12;36949:19;;36608:366;;;:::o;36980:419::-;37146:4;37184:2;37173:9;37169:18;37161:26;;37233:9;37227:4;37223:20;37219:1;37208:9;37204:17;37197:47;37261:131;37387:4;37261:131;:::i;:::-;37253:139;;36980:419;;;:::o;37405:225::-;37545:34;37541:1;37533:6;37529:14;37522:58;37614:8;37609:2;37601:6;37597:15;37590:33;37405:225;:::o;37636:366::-;37778:3;37799:67;37863:2;37858:3;37799:67;:::i;:::-;37792:74;;37875:93;37964:3;37875:93;:::i;:::-;37993:2;37988:3;37984:12;37977:19;;37636:366;;;:::o;38008:419::-;38174:4;38212:2;38201:9;38197:18;38189:26;;38261:9;38255:4;38251:20;38247:1;38236:9;38232:17;38225:47;38289:131;38415:4;38289:131;:::i;:::-;38281:139;;38008:419;;;:::o;38433:807::-;38682:4;38720:3;38709:9;38705:19;38697:27;;38734:71;38802:1;38791:9;38787:17;38778:6;38734:71;:::i;:::-;38815:72;38883:2;38872:9;38868:18;38859:6;38815:72;:::i;:::-;38897:80;38973:2;38962:9;38958:18;38949:6;38897:80;:::i;:::-;38987;39063:2;39052:9;39048:18;39039:6;38987:80;:::i;:::-;39077:73;39145:3;39134:9;39130:19;39121:6;39077:73;:::i;:::-;39160;39228:3;39217:9;39213:19;39204:6;39160:73;:::i;:::-;38433:807;;;;;;;;;:::o;39246:143::-;39303:5;39334:6;39328:13;39319:22;;39350:33;39377:5;39350:33;:::i;:::-;39246:143;;;;:::o;39395:663::-;39483:6;39491;39499;39548:2;39536:9;39527:7;39523:23;39519:32;39516:119;;;39554:79;;:::i;:::-;39516:119;39674:1;39699:64;39755:7;39746:6;39735:9;39731:22;39699:64;:::i;:::-;39689:74;;39645:128;39812:2;39838:64;39894:7;39885:6;39874:9;39870:22;39838:64;:::i;:::-;39828:74;;39783:129;39951:2;39977:64;40033:7;40024:6;40013:9;40009:22;39977:64;:::i;:::-;39967:74;;39922:129;39395:663;;;;;:::o

Swarm Source

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