ETH Price: $3,245.39 (-12.43%)

Token

FORTUNA (FTNA)
 

Overview

Max Total Supply

1,000,000,000 FTNA

Holders

161

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
191,028.890820822 FTNA

Value
$0.00
0x8b31ce4542efdbd0de8a39c474788210753d15d5
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:
FortunaTokenContract

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-23
*/

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

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

// Dex Factory contract interface
interface IDexFactory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

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

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

contract FortunaTokenContract is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private _name = "FORTUNA";
    string private _symbol = "FTNA";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 1_000_000_000 * 1e9;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isBot;

    IDexRouter public dexRouter;
    address public dexPair;
    address public marketingWallet;

    uint256 public marketingFeeOnBuying = 20; // 2% will be added to the marketing address
    uint256 public marketingFeeOnSelling = 20; // 2% will be added to the marketing address
    uint256 public minTokenToSwap = _totalSupply.div(1000); // this amount will trigger swap and distribute
    uint256 public maxTxnLimit = _totalSupply; // this is the max transaction limit
    uint256 public botFee = 999;
    uint256 public percentDivider = 1000;
    uint256 public snipingTime = 60 seconds;
    uint256 public launchedAt;

    bool public autoSwapStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus; // enable by default
    bool public trading; // once enable can't be disable afterwards

    constructor() {
        _balances[owner()] = _totalSupply;
        marketingWallet = address(msg.sender);

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "NT Coin: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function includeOrExcludeFromFee(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxTxn[account] = value;
    }

    function addOrRemoveBots(address account, bool _exmpt)
        external
        onlyOwner
    {
        isBot[account] = _exmpt;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        require(_amount > 0, "NT Coin: can't be 0");
        minTokenToSwap = _amount;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        require(
            _amount >= _totalSupply / percentDivider,
            "NT Coin: should be greater than 0.1%"
        );
        maxTxnLimit = _amount;
    }

    function setBuyFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnBuying = _marketingFee;
        require(
            _marketingFee <= percentDivider.div(10),
            "NT Coin: can't be more than 10%"
        );
    }

    function setSellFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnSelling = _marketingFee;
        require(
            _marketingFee <= percentDivider.div(10),
            "NT Coin: can't be more than 10%"
        );
    }

    function setAutoSwapStatus(bool _value) public onlyOwner {
        autoSwapStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

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

    function enableTrading() external onlyOwner {
        require(!trading, "NT Coin: already enabled");
        trading = true;
        feesStatus = true;
        autoSwapStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function removeStuckToken(
        address _token,
        address _receiver
    ) public onlyOwner {
        IERC20(_token).transfer(_receiver, address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount.mul(marketingFeeOnBuying).div(percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount.mul(marketingFeeOnSelling).div(percentDivider);
        return fee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "NT Coin: approve from the zero address");
        require(spender != address(0), "NT Coin: approve to the zero address");

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "NT Coin: transfer from the zero address");
        require(to != address(0), "NT Coin: transfer to the zero address");
        require(amount > 0, "NT Coin: Amount must be greater than zero");
        require(!isBot[from], "NT Coin: Bot detected");

        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, "NT Coin: max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    "NT Coin: trading is disable"
                );
            }
        }

        // swap
        autoSwap(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender].sub(
            amount,
            "NT Coin: insufficient balance"
        );
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            // antibot
            if (
                block.timestamp < launchedAt + snipingTime &&
                sender != address(dexRouter)
            ) {
                isBot[recipient] = true;
                allFee = amount.mul(botFee).div(percentDivider);
            } else {
                allFee = totalBuyFeePerTx(amount);
            }
            tTransferAmount = amount.sub(allFee);
            takeTokenFee(sender, allFee);

            _balances[recipient] = _balances[recipient].add(tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            takeTokenFee(sender, allFee);

            _balances[recipient] = _balances[recipient].add(tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);
        } else {
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)].add(amount);

        emit Transfer(sender, address(this), amount);
    }

    function autoSwap(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is Dex pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            autoSwapStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), contractTokenBalance);

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minTokenToSwap);

            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(marketingWallet).transfer(ethForMarketing);
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

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

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

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":"account","type":"address"},{"internalType":"bool","name":"_exmpt","type":"bool"}],"name":"addOrRemoveBots","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":[],"name":"autoSwapStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","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":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setAutoSwapStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","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":"trading","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":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600781526020017f464f5254554e410000000000000000000000000000000000000000000000000081525060019080519060200190620000519291906200085a565b506040518060400160405280600481526020017f46544e4100000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f9291906200085a565b506009600360006101000a81548160ff021916908360ff160217905550670de0b6b3a76400006004556014600d556014600e55620000f06103e86004546200076f60201b62001e621790919060201c565b600f556004546010556103e76011556103e8601255603c6013553480156200011757600080fd5b5062000128620007c160201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360045460056000620001f9620007c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000305919062000974565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000393919062000974565b6040518363ffffffff1660e01b8152600401620003b2929190620009b7565b6020604051808303816000875af1158015620003d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f8919062000974565b905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016007600062000492620007c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620005cb620007c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006fe620007c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200075f9190620009ff565b60405180910390a3505062000bb0565b6000620007b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007f260201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080831182906200083c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000833919062000ac0565b60405180910390fd5b50600083856200084d919062000b13565b9050809150509392505050565b828054620008689062000b7a565b90600052602060002090601f0160209004810192826200088c5760008555620008d8565b82601f10620008a757805160ff1916838001178555620008d8565b82800160010185558215620008d8579182015b82811115620008d7578251825591602001919060010190620008ba565b5b509050620008e79190620008eb565b5090565b5b8082111562000906576000816000905550600101620008ec565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200093c826200090f565b9050919050565b6200094e816200092f565b81146200095a57600080fd5b50565b6000815190506200096e8162000943565b92915050565b6000602082840312156200098d576200098c6200090a565b5b60006200099d848285016200095d565b91505092915050565b620009b1816200092f565b82525050565b6000604082019050620009ce6000830185620009a6565b620009dd6020830184620009a6565b9392505050565b6000819050919050565b620009f981620009e4565b82525050565b600060208201905062000a166000830184620009ee565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000a5857808201518184015260208101905062000a3b565b8381111562000a68576000848401525b50505050565b6000601f19601f8301169050919050565b600062000a8c8262000a1c565b62000a98818562000a27565b935062000aaa81856020860162000a38565b62000ab58162000a6e565b840191505092915050565b6000602082019050818103600083015262000adc818462000a7f565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b2082620009e4565b915062000b2d83620009e4565b92508262000b405762000b3f62000ae4565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b9357607f821691505b6020821081141562000baa5762000ba962000b4b565b5b50919050565b6142868062000bc06000396000f3fe60806040526004361061026b5760003560e01c8063950eb5d511610144578063bf862391116100b6578063ed4214291161007a578063ed4214291461092b578063f097ea1a14610968578063f242ab4114610991578063f2fde38b146109bc578063f4b3dbc3146109e5578063fe6f1b0514610a2257610272565b8063bf86239114610846578063ca6b062814610871578063dd62ed3e1461089a578063ea5b9e85146108d7578063ec44acf21461090057610272565b8063a643c1a011610108578063a643c1a01461073a578063a7c29b4014610763578063a9059cbb1461078c578063b0bc2a2d146107c9578063b7e85d90146107f2578063bf56b3711461081b57610272565b8063950eb5d51461065757806395d89b411461068057806399b102b5146106ab5780639b6a2750146106e8578063a2b8a9471461071157610272565b8063679a3c59116101dd5780637c6a9a9c116101a15780637c6a9a9c146105695780637d99c66d14610594578063844af78e146105bf578063879dd3c5146105ea5780638a8c523c146106155780638da5cb5b1461062c57610272565b8063679a3c5914610496578063681aa362146104bf57806370a08231146104ea578063715018a61461052757806375f0a8741461053e57610272565b806323b872dd1161022f57806323b872dd14610360578063267fb9871461039d578063313ce567146103c85780633bbac579146103f35780635342acb4146104305780635b91d4341461046d57610272565b806306fdde03146102775780630758d924146102a2578063095ea7b3146102cd57806318160ddd1461030a5780631884f1e61461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a4d565b6040516102999190613248565b60405180910390f35b3480156102ae57600080fd5b506102b7610adf565b6040516102c491906132e9565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef919061337d565b610b05565b60405161030191906133d8565b60405180910390f35b34801561031657600080fd5b5061031f610b23565b60405161032c9190613402565b60405180910390f35b34801561034157600080fd5b5061034a610b2d565b6040516103579190613402565b60405180910390f35b34801561036c57600080fd5b506103876004803603810190610382919061341d565b610b33565b60405161039491906133d8565b60405180910390f35b3480156103a957600080fd5b506103b2610c0c565b6040516103bf91906133d8565b60405180910390f35b3480156103d457600080fd5b506103dd610c1f565b6040516103ea919061348c565b60405180910390f35b3480156103ff57600080fd5b5061041a600480360381019061041591906134a7565b610c36565b60405161042791906133d8565b60405180910390f35b34801561043c57600080fd5b50610457600480360381019061045291906134a7565b610c56565b60405161046491906133d8565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f91906134d4565b610c76565b005b3480156104a257600080fd5b506104bd60048036038101906104b891906134a7565b610d8e565b005b3480156104cb57600080fd5b506104d4610e6d565b6040516104e19190613402565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c91906134a7565b610e73565b60405161051e9190613402565b60405180910390f35b34801561053357600080fd5b5061053c610ebc565b005b34801561054a57600080fd5b5061055361100f565b6040516105609190613523565b60405180910390f35b34801561057557600080fd5b5061057e611035565b60405161058b9190613402565b60405180910390f35b3480156105a057600080fd5b506105a961103b565b6040516105b69190613402565b60405180910390f35b3480156105cb57600080fd5b506105d4611041565b6040516105e19190613402565b60405180910390f35b3480156105f657600080fd5b506105ff611047565b60405161060c91906133d8565b60405180910390f35b34801561062157600080fd5b5061062a61105a565b005b34801561063857600080fd5b50610641611199565b60405161064e9190613523565b60405180910390f35b34801561066357600080fd5b5061067e6004803603810190610679919061353e565b6111c2565b005b34801561068c57600080fd5b506106956112b9565b6040516106a29190613248565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906134a7565b61134b565b6040516106df91906133d8565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a919061353e565b61136b565b005b34801561071d57600080fd5b506107386004803603810190610733919061353e565b61145c565b005b34801561074657600080fd5b50610761600480360381019061075c91906134a7565b611553565b005b34801561076f57600080fd5b5061078a60048036038101906107859190613597565b61162c565b005b34801561079857600080fd5b506107b360048036038101906107ae919061337d565b61171c565b6040516107c091906133d8565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb91906135d7565b61173a565b005b3480156107fe57600080fd5b5061081960048036038101906108149190613597565b6117ec565b005b34801561082757600080fd5b506108306118dc565b60405161083d9190613402565b60405180910390f35b34801561085257600080fd5b5061085b6118e2565b6040516108689190613402565b60405180910390f35b34801561087d57600080fd5b50610898600480360381019061089391906135d7565b6118e8565b005b3480156108a657600080fd5b506108c160048036038101906108bc91906134d4565b61199a565b6040516108ce9190613402565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f99190613597565b611a21565b005b34801561090c57600080fd5b50610915611b11565b60405161092291906133d8565b60405180910390f35b34801561093757600080fd5b50610952600480360381019061094d919061353e565b611b24565b60405161095f9190613402565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a919061353e565b611b5b565b005b34801561099d57600080fd5b506109a6611c3d565b6040516109b39190613523565b60405180910390f35b3480156109c857600080fd5b506109e360048036038101906109de91906134a7565b611c63565b005b3480156109f157600080fd5b50610a0c6004803603810190610a07919061353e565b611e25565b604051610a199190613402565b60405180910390f35b348015610a2e57600080fd5b50610a37611e5c565b604051610a449190613402565b60405180910390f35b606060018054610a5c90613633565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8890613633565b8015610ad55780601f10610aaa57610100808354040283529160200191610ad5565b820191906000526020600020905b815481529060010190602001808311610ab857829003601f168201915b5050505050905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b19610b12611eac565b8484611eb4565b6001905092915050565b6000600454905090565b600f5481565b6000610b4084848461207f565b610c0184610b4c611eac565b610bfc856040518060600160405280602a8152602001614227602a9139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bb2611eac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125039092919063ffffffff16565b611eb4565b600190509392505050565b601560009054906101000a900460ff1681565b6000600360009054906101000a900460ff16905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b610c7e611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d02906136b1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82476040518363ffffffff1660e01b8152600401610d469291906136d1565b6020604051808303816000875af1158015610d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d89919061370f565b505050565b610d96611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a906136b1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e69573d6000803e3d6000fd5b5050565b60105481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec4611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f48906136b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60135481565b600e5481565b601560019054906101000a900460ff1681565b611062611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e6906136b1565b60405180910390fd5b601560029054906101000a900460ff161561113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690613788565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111ca611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e906136b1565b60405180910390fd5b80600d81905550611274600a601254611e6290919063ffffffff16565b8111156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad906137f4565b60405180910390fd5b50565b6060600280546112c890613633565b80601f01602080910402602001604051908101604052809291908181526020018280546112f490613633565b80156113415780601f1061131657610100808354040283529160200191611341565b820191906000526020600020905b81548152906001019060200180831161132457829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b611373611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f7906136b1565b60405180910390fd5b6012546004546114109190613872565b811015611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990613915565b60405180910390fd5b8060108190555050565b611464611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e8906136b1565b60405180910390fd5b80600e8190555061150e600a601254611e6290919063ffffffff16565b811115611550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611547906137f4565b60405180910390fd5b50565b61155b611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df906136b1565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611634611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b8906136b1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611730611729611eac565b848461207f565b6001905092915050565b611742611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906136b1565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b6117f4611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611878906136b1565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60115481565b6118f0611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611974906136b1565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a29611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad906136b1565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b600080611b50601254611b42600d548661256790919063ffffffff16565b611e6290919063ffffffff16565b905080915050919050565b611b63611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be7906136b1565b60405180910390fd5b60008111611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613981565b60405180910390fd5b80600f8190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c6b611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef906136b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90613a13565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080611e51601254611e43600e548661256790919063ffffffff16565b611e6290919063ffffffff16565b905080915050919050565b60125481565b6000611ea483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e2565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b90613aa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90613b37565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120729190613402565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690613bc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561215f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215690613c5b565b60405180910390fd5b600081116121a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219990613ced565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561222f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222690613d59565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d35750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561241e5760105481111561231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231490613dc5565b60405180910390fd5b601560029054906101000a900460ff1661241d578273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156123dd57508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61241c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241390613e31565b60405180910390fd5b5b5b6124288383612645565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124cf5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124e75750601560019054906101000a900460ff16155b156124f157600090505b6124fd84848484612840565b50505050565b600083831115829061254b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125429190613248565b60405180910390fd5b506000838561255a9190613e51565b9050809150509392505050565b60008083141561257a57600090506125dc565b600082846125889190613e85565b90508284826125979190613872565b146125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90613f51565b60405180910390fd5b809150505b92915050565b60008083118290612629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126209190613248565b60405180910390fd5b50600083856126389190613872565b9050809150509392505050565b600061265030610e73565b90506000600f5482101590508080156126b75750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126cf5750601560009054906101000a900460ff165b801561276057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561275e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b1561283a5761279230600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611eb4565b6127c0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f54612e23565b6000479050600081111561283857600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612836573d6000803e3d6000fd5b505b505b50505050565b6128c9826040518060400160405280601d81526020017f4e5420436f696e3a20696e73756666696369656e742062616c616e6365000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156129665750805b15612b935760008060135460145461297e9190613f71565b421080156129da5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15612a67576001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612a60601254612a526011548761256790919063ffffffff16565b611e6290919063ffffffff16565b9150612a73565b612a7084611b24565b91505b612a86828561300990919063ffffffff16565b9050612a928683613053565b612ae481600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b849190613402565b60405180910390a35050612e1d565b8273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612bed5750805b15612d21576000612bfd83611e25565b90506000612c14828561300990919063ffffffff16565b9050612c208683613053565b612c7281600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d129190613402565b60405180910390a35050612e1c565b612d7382600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e139190613402565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612e4557612e44613fc7565b5b604051908082528060200260200182016040528015612e735781602001602082028036833780820191505090505b5090503081600081518110612e8b57612e8a613ff6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f34919061403a565b81600181518110612f4857612f47613ff6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42612fb19190613f71565b6040518663ffffffff1660e01b8152600401612fd1959493929190614160565b600060405180830381600087803b158015612feb57600080fd5b505af1158015612fff573d6000803e3d6000fd5b5050505050505050565b600061304b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612503565b905092915050565b6130a581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131459190613402565b60405180910390a35050565b60008082846131609190613f71565b9050838110156131a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319c90614206565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131e95780820151818401526020810190506131ce565b838111156131f8576000848401525b50505050565b6000601f19601f8301169050919050565b600061321a826131af565b61322481856131ba565b93506132348185602086016131cb565b61323d816131fe565b840191505092915050565b60006020820190508181036000830152613262818461320f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006132af6132aa6132a58461326a565b61328a565b61326a565b9050919050565b60006132c182613294565b9050919050565b60006132d3826132b6565b9050919050565b6132e3816132c8565b82525050565b60006020820190506132fe60008301846132da565b92915050565b600080fd5b60006133148261326a565b9050919050565b61332481613309565b811461332f57600080fd5b50565b6000813590506133418161331b565b92915050565b6000819050919050565b61335a81613347565b811461336557600080fd5b50565b60008135905061337781613351565b92915050565b6000806040838503121561339457613393613304565b5b60006133a285828601613332565b92505060206133b385828601613368565b9150509250929050565b60008115159050919050565b6133d2816133bd565b82525050565b60006020820190506133ed60008301846133c9565b92915050565b6133fc81613347565b82525050565b600060208201905061341760008301846133f3565b92915050565b60008060006060848603121561343657613435613304565b5b600061344486828701613332565b935050602061345586828701613332565b925050604061346686828701613368565b9150509250925092565b600060ff82169050919050565b61348681613470565b82525050565b60006020820190506134a1600083018461347d565b92915050565b6000602082840312156134bd576134bc613304565b5b60006134cb84828501613332565b91505092915050565b600080604083850312156134eb576134ea613304565b5b60006134f985828601613332565b925050602061350a85828601613332565b9150509250929050565b61351d81613309565b82525050565b60006020820190506135386000830184613514565b92915050565b60006020828403121561355457613553613304565b5b600061356284828501613368565b91505092915050565b613574816133bd565b811461357f57600080fd5b50565b6000813590506135918161356b565b92915050565b600080604083850312156135ae576135ad613304565b5b60006135bc85828601613332565b92505060206135cd85828601613582565b9150509250929050565b6000602082840312156135ed576135ec613304565b5b60006135fb84828501613582565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061364b57607f821691505b6020821081141561365f5761365e613604565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061369b6020836131ba565b91506136a682613665565b602082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b60006040820190506136e66000830185613514565b6136f360208301846133f3565b9392505050565b6000815190506137098161356b565b92915050565b60006020828403121561372557613724613304565b5b6000613733848285016136fa565b91505092915050565b7f4e5420436f696e3a20616c726561647920656e61626c65640000000000000000600082015250565b60006137726018836131ba565b915061377d8261373c565b602082019050919050565b600060208201905081810360008301526137a181613765565b9050919050565b7f4e5420436f696e3a2063616e2774206265206d6f7265207468616e2031302500600082015250565b60006137de601f836131ba565b91506137e9826137a8565b602082019050919050565b6000602082019050818103600083015261380d816137d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061387d82613347565b915061388883613347565b92508261389857613897613814565b5b828204905092915050565b7f4e5420436f696e3a2073686f756c642062652067726561746572207468616e2060008201527f302e312500000000000000000000000000000000000000000000000000000000602082015250565b60006138ff6024836131ba565b915061390a826138a3565b604082019050919050565b6000602082019050818103600083015261392e816138f2565b9050919050565b7f4e5420436f696e3a2063616e2774206265203000000000000000000000000000600082015250565b600061396b6013836131ba565b915061397682613935565b602082019050919050565b6000602082019050818103600083015261399a8161395e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139fd6026836131ba565b9150613a08826139a1565b604082019050919050565b60006020820190508181036000830152613a2c816139f0565b9050919050565b7f4e5420436f696e3a20617070726f76652066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a8f6026836131ba565b9150613a9a82613a33565b604082019050919050565b60006020820190508181036000830152613abe81613a82565b9050919050565b7f4e5420436f696e3a20617070726f766520746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b216024836131ba565b9150613b2c82613ac5565b604082019050919050565b60006020820190508181036000830152613b5081613b14565b9050919050565b7f4e5420436f696e3a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613bb36027836131ba565b9150613bbe82613b57565b604082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f4e5420436f696e3a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613c456025836131ba565b9150613c5082613be9565b604082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f4e5420436f696e3a20416d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613cd76029836131ba565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4e5420436f696e3a20426f742064657465637465640000000000000000000000600082015250565b6000613d436015836131ba565b9150613d4e82613d0d565b602082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f4e5420436f696e3a206d61782074786e206c696d697420657863656564730000600082015250565b6000613daf601e836131ba565b9150613dba82613d79565b602082019050919050565b60006020820190508181036000830152613dde81613da2565b9050919050565b7f4e5420436f696e3a2074726164696e672069732064697361626c650000000000600082015250565b6000613e1b601b836131ba565b9150613e2682613de5565b602082019050919050565b60006020820190508181036000830152613e4a81613e0e565b9050919050565b6000613e5c82613347565b9150613e6783613347565b925082821015613e7a57613e79613843565b5b828203905092915050565b6000613e9082613347565b9150613e9b83613347565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ed457613ed3613843565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f3b6021836131ba565b9150613f4682613edf565b604082019050919050565b60006020820190508181036000830152613f6a81613f2e565b9050919050565b6000613f7c82613347565b9150613f8783613347565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fbc57613fbb613843565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506140348161331b565b92915050565b6000602082840312156140505761404f613304565b5b600061405e84828501614025565b91505092915050565b6000819050919050565b600061408c61408761408284614067565b61328a565b613347565b9050919050565b61409c81614071565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140d781613309565b82525050565b60006140e983836140ce565b60208301905092915050565b6000602082019050919050565b600061410d826140a2565b61411781856140ad565b9350614122836140be565b8060005b8381101561415357815161413a88826140dd565b9750614145836140f5565b925050600181019050614126565b5085935050505092915050565b600060a08201905061417560008301886133f3565b6141826020830187614093565b81810360408301526141948186614102565b90506141a36060830185613514565b6141b060808301846133f3565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006141f0601b836131ba565b91506141fb826141ba565b602082019050919050565b6000602082019050818103600083015261421f816141e3565b905091905056fe4e5420436f696e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202c10216cea3b59631e88d94ecf2580a2f0b123d3cf6b7f57ff5557fc53800f7164736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063950eb5d511610144578063bf862391116100b6578063ed4214291161007a578063ed4214291461092b578063f097ea1a14610968578063f242ab4114610991578063f2fde38b146109bc578063f4b3dbc3146109e5578063fe6f1b0514610a2257610272565b8063bf86239114610846578063ca6b062814610871578063dd62ed3e1461089a578063ea5b9e85146108d7578063ec44acf21461090057610272565b8063a643c1a011610108578063a643c1a01461073a578063a7c29b4014610763578063a9059cbb1461078c578063b0bc2a2d146107c9578063b7e85d90146107f2578063bf56b3711461081b57610272565b8063950eb5d51461065757806395d89b411461068057806399b102b5146106ab5780639b6a2750146106e8578063a2b8a9471461071157610272565b8063679a3c59116101dd5780637c6a9a9c116101a15780637c6a9a9c146105695780637d99c66d14610594578063844af78e146105bf578063879dd3c5146105ea5780638a8c523c146106155780638da5cb5b1461062c57610272565b8063679a3c5914610496578063681aa362146104bf57806370a08231146104ea578063715018a61461052757806375f0a8741461053e57610272565b806323b872dd1161022f57806323b872dd14610360578063267fb9871461039d578063313ce567146103c85780633bbac579146103f35780635342acb4146104305780635b91d4341461046d57610272565b806306fdde03146102775780630758d924146102a2578063095ea7b3146102cd57806318160ddd1461030a5780631884f1e61461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a4d565b6040516102999190613248565b60405180910390f35b3480156102ae57600080fd5b506102b7610adf565b6040516102c491906132e9565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef919061337d565b610b05565b60405161030191906133d8565b60405180910390f35b34801561031657600080fd5b5061031f610b23565b60405161032c9190613402565b60405180910390f35b34801561034157600080fd5b5061034a610b2d565b6040516103579190613402565b60405180910390f35b34801561036c57600080fd5b506103876004803603810190610382919061341d565b610b33565b60405161039491906133d8565b60405180910390f35b3480156103a957600080fd5b506103b2610c0c565b6040516103bf91906133d8565b60405180910390f35b3480156103d457600080fd5b506103dd610c1f565b6040516103ea919061348c565b60405180910390f35b3480156103ff57600080fd5b5061041a600480360381019061041591906134a7565b610c36565b60405161042791906133d8565b60405180910390f35b34801561043c57600080fd5b50610457600480360381019061045291906134a7565b610c56565b60405161046491906133d8565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f91906134d4565b610c76565b005b3480156104a257600080fd5b506104bd60048036038101906104b891906134a7565b610d8e565b005b3480156104cb57600080fd5b506104d4610e6d565b6040516104e19190613402565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c91906134a7565b610e73565b60405161051e9190613402565b60405180910390f35b34801561053357600080fd5b5061053c610ebc565b005b34801561054a57600080fd5b5061055361100f565b6040516105609190613523565b60405180910390f35b34801561057557600080fd5b5061057e611035565b60405161058b9190613402565b60405180910390f35b3480156105a057600080fd5b506105a961103b565b6040516105b69190613402565b60405180910390f35b3480156105cb57600080fd5b506105d4611041565b6040516105e19190613402565b60405180910390f35b3480156105f657600080fd5b506105ff611047565b60405161060c91906133d8565b60405180910390f35b34801561062157600080fd5b5061062a61105a565b005b34801561063857600080fd5b50610641611199565b60405161064e9190613523565b60405180910390f35b34801561066357600080fd5b5061067e6004803603810190610679919061353e565b6111c2565b005b34801561068c57600080fd5b506106956112b9565b6040516106a29190613248565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906134a7565b61134b565b6040516106df91906133d8565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a919061353e565b61136b565b005b34801561071d57600080fd5b506107386004803603810190610733919061353e565b61145c565b005b34801561074657600080fd5b50610761600480360381019061075c91906134a7565b611553565b005b34801561076f57600080fd5b5061078a60048036038101906107859190613597565b61162c565b005b34801561079857600080fd5b506107b360048036038101906107ae919061337d565b61171c565b6040516107c091906133d8565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb91906135d7565b61173a565b005b3480156107fe57600080fd5b5061081960048036038101906108149190613597565b6117ec565b005b34801561082757600080fd5b506108306118dc565b60405161083d9190613402565b60405180910390f35b34801561085257600080fd5b5061085b6118e2565b6040516108689190613402565b60405180910390f35b34801561087d57600080fd5b50610898600480360381019061089391906135d7565b6118e8565b005b3480156108a657600080fd5b506108c160048036038101906108bc91906134d4565b61199a565b6040516108ce9190613402565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f99190613597565b611a21565b005b34801561090c57600080fd5b50610915611b11565b60405161092291906133d8565b60405180910390f35b34801561093757600080fd5b50610952600480360381019061094d919061353e565b611b24565b60405161095f9190613402565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a919061353e565b611b5b565b005b34801561099d57600080fd5b506109a6611c3d565b6040516109b39190613523565b60405180910390f35b3480156109c857600080fd5b506109e360048036038101906109de91906134a7565b611c63565b005b3480156109f157600080fd5b50610a0c6004803603810190610a07919061353e565b611e25565b604051610a199190613402565b60405180910390f35b348015610a2e57600080fd5b50610a37611e5c565b604051610a449190613402565b60405180910390f35b606060018054610a5c90613633565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8890613633565b8015610ad55780601f10610aaa57610100808354040283529160200191610ad5565b820191906000526020600020905b815481529060010190602001808311610ab857829003601f168201915b5050505050905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b19610b12611eac565b8484611eb4565b6001905092915050565b6000600454905090565b600f5481565b6000610b4084848461207f565b610c0184610b4c611eac565b610bfc856040518060600160405280602a8152602001614227602a9139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bb2611eac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125039092919063ffffffff16565b611eb4565b600190509392505050565b601560009054906101000a900460ff1681565b6000600360009054906101000a900460ff16905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b610c7e611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d02906136b1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82476040518363ffffffff1660e01b8152600401610d469291906136d1565b6020604051808303816000875af1158015610d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d89919061370f565b505050565b610d96611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a906136b1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e69573d6000803e3d6000fd5b5050565b60105481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec4611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f48906136b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60135481565b600e5481565b601560019054906101000a900460ff1681565b611062611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e6906136b1565b60405180910390fd5b601560029054906101000a900460ff161561113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690613788565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111ca611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e906136b1565b60405180910390fd5b80600d81905550611274600a601254611e6290919063ffffffff16565b8111156112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad906137f4565b60405180910390fd5b50565b6060600280546112c890613633565b80601f01602080910402602001604051908101604052809291908181526020018280546112f490613633565b80156113415780601f1061131657610100808354040283529160200191611341565b820191906000526020600020905b81548152906001019060200180831161132457829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b611373611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f7906136b1565b60405180910390fd5b6012546004546114109190613872565b811015611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990613915565b60405180910390fd5b8060108190555050565b611464611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e8906136b1565b60405180910390fd5b80600e8190555061150e600a601254611e6290919063ffffffff16565b811115611550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611547906137f4565b60405180910390fd5b50565b61155b611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df906136b1565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611634611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b8906136b1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611730611729611eac565b848461207f565b6001905092915050565b611742611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906136b1565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b6117f4611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611878906136b1565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60115481565b6118f0611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611974906136b1565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a29611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad906136b1565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b600080611b50601254611b42600d548661256790919063ffffffff16565b611e6290919063ffffffff16565b905080915050919050565b611b63611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be7906136b1565b60405180910390fd5b60008111611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613981565b60405180910390fd5b80600f8190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c6b611eac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef906136b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90613a13565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080611e51601254611e43600e548661256790919063ffffffff16565b611e6290919063ffffffff16565b905080915050919050565b60125481565b6000611ea483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e2565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b90613aa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90613b37565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120729190613402565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690613bc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561215f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215690613c5b565b60405180910390fd5b600081116121a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219990613ced565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561222f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222690613d59565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d35750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561241e5760105481111561231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231490613dc5565b60405180910390fd5b601560029054906101000a900460ff1661241d578273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156123dd57508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61241c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241390613e31565b60405180910390fd5b5b5b6124288383612645565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124cf5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124e75750601560019054906101000a900460ff16155b156124f157600090505b6124fd84848484612840565b50505050565b600083831115829061254b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125429190613248565b60405180910390fd5b506000838561255a9190613e51565b9050809150509392505050565b60008083141561257a57600090506125dc565b600082846125889190613e85565b90508284826125979190613872565b146125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90613f51565b60405180910390fd5b809150505b92915050565b60008083118290612629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126209190613248565b60405180910390fd5b50600083856126389190613872565b9050809150509392505050565b600061265030610e73565b90506000600f5482101590508080156126b75750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126cf5750601560009054906101000a900460ff165b801561276057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561275e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b1561283a5761279230600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611eb4565b6127c0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f54612e23565b6000479050600081111561283857600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612836573d6000803e3d6000fd5b505b505b50505050565b6128c9826040518060400160405280601d81526020017f4e5420436f696e3a20696e73756666696369656e742062616c616e6365000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156129665750805b15612b935760008060135460145461297e9190613f71565b421080156129da5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15612a67576001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612a60601254612a526011548761256790919063ffffffff16565b611e6290919063ffffffff16565b9150612a73565b612a7084611b24565b91505b612a86828561300990919063ffffffff16565b9050612a928683613053565b612ae481600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b849190613402565b60405180910390a35050612e1d565b8273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612bed5750805b15612d21576000612bfd83611e25565b90506000612c14828561300990919063ffffffff16565b9050612c208683613053565b612c7281600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d129190613402565b60405180910390a35050612e1c565b612d7382600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e139190613402565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612e4557612e44613fc7565b5b604051908082528060200260200182016040528015612e735781602001602082028036833780820191505090505b5090503081600081518110612e8b57612e8a613ff6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f34919061403a565b81600181518110612f4857612f47613ff6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42612fb19190613f71565b6040518663ffffffff1660e01b8152600401612fd1959493929190614160565b600060405180830381600087803b158015612feb57600080fd5b505af1158015612fff573d6000803e3d6000fd5b5050505050505050565b600061304b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612503565b905092915050565b6130a581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131459190613402565b60405180910390a35050565b60008082846131609190613f71565b9050838110156131a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319c90614206565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131e95780820151818401526020810190506131ce565b838111156131f8576000848401525b50505050565b6000601f19601f8301169050919050565b600061321a826131af565b61322481856131ba565b93506132348185602086016131cb565b61323d816131fe565b840191505092915050565b60006020820190508181036000830152613262818461320f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006132af6132aa6132a58461326a565b61328a565b61326a565b9050919050565b60006132c182613294565b9050919050565b60006132d3826132b6565b9050919050565b6132e3816132c8565b82525050565b60006020820190506132fe60008301846132da565b92915050565b600080fd5b60006133148261326a565b9050919050565b61332481613309565b811461332f57600080fd5b50565b6000813590506133418161331b565b92915050565b6000819050919050565b61335a81613347565b811461336557600080fd5b50565b60008135905061337781613351565b92915050565b6000806040838503121561339457613393613304565b5b60006133a285828601613332565b92505060206133b385828601613368565b9150509250929050565b60008115159050919050565b6133d2816133bd565b82525050565b60006020820190506133ed60008301846133c9565b92915050565b6133fc81613347565b82525050565b600060208201905061341760008301846133f3565b92915050565b60008060006060848603121561343657613435613304565b5b600061344486828701613332565b935050602061345586828701613332565b925050604061346686828701613368565b9150509250925092565b600060ff82169050919050565b61348681613470565b82525050565b60006020820190506134a1600083018461347d565b92915050565b6000602082840312156134bd576134bc613304565b5b60006134cb84828501613332565b91505092915050565b600080604083850312156134eb576134ea613304565b5b60006134f985828601613332565b925050602061350a85828601613332565b9150509250929050565b61351d81613309565b82525050565b60006020820190506135386000830184613514565b92915050565b60006020828403121561355457613553613304565b5b600061356284828501613368565b91505092915050565b613574816133bd565b811461357f57600080fd5b50565b6000813590506135918161356b565b92915050565b600080604083850312156135ae576135ad613304565b5b60006135bc85828601613332565b92505060206135cd85828601613582565b9150509250929050565b6000602082840312156135ed576135ec613304565b5b60006135fb84828501613582565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061364b57607f821691505b6020821081141561365f5761365e613604565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061369b6020836131ba565b91506136a682613665565b602082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b60006040820190506136e66000830185613514565b6136f360208301846133f3565b9392505050565b6000815190506137098161356b565b92915050565b60006020828403121561372557613724613304565b5b6000613733848285016136fa565b91505092915050565b7f4e5420436f696e3a20616c726561647920656e61626c65640000000000000000600082015250565b60006137726018836131ba565b915061377d8261373c565b602082019050919050565b600060208201905081810360008301526137a181613765565b9050919050565b7f4e5420436f696e3a2063616e2774206265206d6f7265207468616e2031302500600082015250565b60006137de601f836131ba565b91506137e9826137a8565b602082019050919050565b6000602082019050818103600083015261380d816137d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061387d82613347565b915061388883613347565b92508261389857613897613814565b5b828204905092915050565b7f4e5420436f696e3a2073686f756c642062652067726561746572207468616e2060008201527f302e312500000000000000000000000000000000000000000000000000000000602082015250565b60006138ff6024836131ba565b915061390a826138a3565b604082019050919050565b6000602082019050818103600083015261392e816138f2565b9050919050565b7f4e5420436f696e3a2063616e2774206265203000000000000000000000000000600082015250565b600061396b6013836131ba565b915061397682613935565b602082019050919050565b6000602082019050818103600083015261399a8161395e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139fd6026836131ba565b9150613a08826139a1565b604082019050919050565b60006020820190508181036000830152613a2c816139f0565b9050919050565b7f4e5420436f696e3a20617070726f76652066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a8f6026836131ba565b9150613a9a82613a33565b604082019050919050565b60006020820190508181036000830152613abe81613a82565b9050919050565b7f4e5420436f696e3a20617070726f766520746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b216024836131ba565b9150613b2c82613ac5565b604082019050919050565b60006020820190508181036000830152613b5081613b14565b9050919050565b7f4e5420436f696e3a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613bb36027836131ba565b9150613bbe82613b57565b604082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f4e5420436f696e3a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613c456025836131ba565b9150613c5082613be9565b604082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f4e5420436f696e3a20416d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613cd76029836131ba565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4e5420436f696e3a20426f742064657465637465640000000000000000000000600082015250565b6000613d436015836131ba565b9150613d4e82613d0d565b602082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f4e5420436f696e3a206d61782074786e206c696d697420657863656564730000600082015250565b6000613daf601e836131ba565b9150613dba82613d79565b602082019050919050565b60006020820190508181036000830152613dde81613da2565b9050919050565b7f4e5420436f696e3a2074726164696e672069732064697361626c650000000000600082015250565b6000613e1b601b836131ba565b9150613e2682613de5565b602082019050919050565b60006020820190508181036000830152613e4a81613e0e565b9050919050565b6000613e5c82613347565b9150613e6783613347565b925082821015613e7a57613e79613843565b5b828203905092915050565b6000613e9082613347565b9150613e9b83613347565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ed457613ed3613843565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f3b6021836131ba565b9150613f4682613edf565b604082019050919050565b60006020820190508181036000830152613f6a81613f2e565b9050919050565b6000613f7c82613347565b9150613f8783613347565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fbc57613fbb613843565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506140348161331b565b92915050565b6000602082840312156140505761404f613304565b5b600061405e84828501614025565b91505092915050565b6000819050919050565b600061408c61408761408284614067565b61328a565b613347565b9050919050565b61409c81614071565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140d781613309565b82525050565b60006140e983836140ce565b60208301905092915050565b6000602082019050919050565b600061410d826140a2565b61411781856140ad565b9350614122836140be565b8060005b8381101561415357815161413a88826140dd565b9750614145836140f5565b925050600181019050614126565b5085935050505092915050565b600060a08201905061417560008301886133f3565b6141826020830187614093565b81810360408301526141948186614102565b90506141a36060830185613514565b6141b060808301846133f3565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006141f0601b836131ba565b91506141fb826141ba565b602082019050919050565b6000602082019050818103600083015261421f816141e3565b905091905056fe4e5420436f696e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202c10216cea3b59631e88d94ecf2580a2f0b123d3cf6b7f57ff5557fc53800f7164736f6c634300080a0033

Deployed Bytecode Sourcemap

3138:11307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5652:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3695:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6540:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5929:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3982:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6734:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4333:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5838:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3649:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3534:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9354:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9217:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4091:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6037:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2685:157;;;;;;;;;;;;;:::i;:::-;;3758:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3797:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4253:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3889:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4417:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8977:232;;;;;;;;;;;;;:::i;:::-;;2471:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8090:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5743:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3590:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7845:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8352:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8830:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7357:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6164:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8723:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7530:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4299:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4176:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8616:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6364:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7190:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4467:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9541:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7677:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3729:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2850:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9727:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4210:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5652:83;5689:13;5722:5;5715:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5652:83;:::o;3695:27::-;;;;;;;;;;;;;:::o;6540:186::-;6640:4;6657:39;6666:12;:10;:12::i;:::-;6680:7;6689:6;6657:8;:39::i;:::-;6714:4;6707:11;;6540:186;;;;:::o;5929:100::-;5982:7;6009:12;;6002:19;;5929:100;:::o;3982:54::-;;;;:::o;6734:448::-;6866:4;6883:36;6893:6;6901:9;6912:6;6883:9;:36::i;:::-;6930:222;6953:6;6974:12;:10;:12::i;:::-;7001:140;7057:6;7001:140;;;;;;;;;;;;;;;;;:11;:19;7013:6;7001:19;;;;;;;;;;;;;;;:33;7021:12;:10;:12::i;:::-;7001:33;;;;;;;;;;;;;;;;:37;;:140;;;;;:::i;:::-;6930:8;:222::i;:::-;7170:4;7163:11;;6734:448;;;;;:::o;4333:26::-;;;;;;;;;;;;;:::o;5838:83::-;5879:5;5904:9;;;;;;;;;;;5897:16;;5838:83;:::o;3649:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;3534:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;9354:179::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9475:6:::1;9468:23;;;9492:9;9503:21;9468:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9354:179:::0;;:::o;9217:129::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9296:9:::1;9288:27;;:50;9316:21;9288:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9217:129:::0;:::o;4091:41::-;;;;:::o;6037:119::-;6103:7;6130:9;:18;6140:7;6130:18;;;;;;;;;;;;;;;;6123:25;;6037:119;;;:::o;2685:157::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2792:1:::1;2755:40;;2776:6;::::0;::::1;;;;;;;;2755:40;;;;;;;;;;;;2831:1;2806:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2685:157::o:0;3758:30::-;;;;;;;;;;;;;:::o;3797:40::-;;;;:::o;4253:39::-;;;;:::o;3889:41::-;;;;:::o;4417:22::-;;;;;;;;;;;;;:::o;8977:232::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9041:7:::1;;;;;;;;;;;9040:8;9032:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;9098:4;9088:7;;:14;;;;;;;;;;;;;;;;;;9126:4;9113:10;;:17;;;;;;;;;;;;;;;;;;9158:4;9141:14;;:21;;;;;;;;;;;;;;;;;;9186:15;9173:10;:28;;;;8977:232::o:0;2471:79::-;2509:7;2536:6;;;;;;;;;;;2529:13;;2471:79;:::o;8090:254::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8192:13:::1;8169:20;:36;;;;8255:22;8274:2;8255:14;;:18;;:22;;;;:::i;:::-;8238:13;:39;;8216:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;8090:254:::0;:::o;5743:87::-;5782:13;5815:7;5808:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5743:87;:::o;3590:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;7845:237::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7964:14:::1;;7949:12;;:29;;;;:::i;:::-;7938:7;:40;;7916:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;8067:7;8053:11;:21;;;;7845:237:::0;:::o;8352:256::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8456:13:::1;8432:21;:37;;;;8519:22;8538:2;8519:14;;:18;;:22;;;;:::i;:::-;8502:13;:39;;8480:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;8352:256:::0;:::o;8830:139::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8945:16:::1;8927:15;;:34;;;;;;;;;;;;;;;;;;8830:139:::0;:::o;7357:165::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7509:5:::1;7477:20;:29;7498:7;7477:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7357:165:::0;;:::o;6164:192::-;6267:4;6284:42;6294:12;:10;:12::i;:::-;6308:9;6319:6;6284:9;:42::i;:::-;6344:4;6337:11;;6164:192;;;;:::o;8723:99::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8808:6:::1;8795:10;;:19;;;;;;;;;;;;;;;;;;8723:99:::0;:::o;7530:139::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7655:6:::1;7638:5;:14;7644:7;7638:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;7530:139:::0;;:::o;4299:25::-;;;;:::o;4176:27::-;;;;:::o;8616:99::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8701:6:::1;8684:14;;:23;;;;;;;;;;;;;;;;;;8616:99:::0;:::o;6364:168::-;6470:7;6497:11;:18;6509:5;6497:18;;;;;;;;;;;;;;;:27;6516:7;6497:27;;;;;;;;;;;;;;;;6490:34;;6364:168;;;;:::o;7190:159::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7336:5:::1;7307:17;:26;7325:7;7307:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7190:159:::0;;:::o;4467:19::-;;;;;;;;;;;;;:::o;9541:178::-;9604:7;9624:11;9638:52;9675:14;;9638:32;9649:20;;9638:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;9624:66;;9708:3;9701:10;;;9541:178;;;:::o;7677:160::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7769:1:::1;7759:7;:11;7751:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;7822:7;7805:14;:24;;;;7677:160:::0;:::o;3729:22::-;;;;;;;;;;;;;:::o;2850:281::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2973:1:::1;2953:22;;:8;:22;;;;2931:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3086:8;3057:38;;3078:6;::::0;::::1;;;;;;;;3057:38;;;;;;;;;;;;3115:8;3106:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2850:281:::0;:::o;9727:180::-;9791:7;9811:11;9825:53;9863:14;;9825:33;9836:21;;9825:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;9811:67;;9896:3;9889:10;;;9727:180;;;:::o;4210:36::-;;;;:::o;16232:132::-;16290:7;16317:39;16321:1;16324;16317:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;16310:46;;16232:132;;;;:::o;1807:115::-;1860:15;1903:10;1888:26;;1807:115;:::o;9915:341::-;10025:1;10008:19;;:5;:19;;;;10000:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10108:1;10089:21;;:7;:21;;;;10081:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10194:6;10164:11;:18;10176:5;10164:18;;;;;;;;;;;;;;;:27;10183:7;10164:27;;;;;;;;;;;;;;;:36;;;;10232:7;10216:32;;10225:5;10216:32;;;10241:6;10216:32;;;;;;:::i;:::-;;;;;;;;9915:341;;;:::o;10264:1241::-;10368:1;10352:18;;:4;:18;;;;10344:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10447:1;10433:16;;:2;:16;;;;10425:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10519:1;10510:6;:10;10502:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10586:5;:11;10592:4;10586:11;;;;;;;;;;;;;;;;;;;;;;;;;10585:12;10577:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10641:20;:26;10662:4;10641:26;;;;;;;;;;;;;;;;;;;;;;;;;10640:27;:56;;;;;10672:20;:24;10693:2;10672:24;;;;;;;;;;;;;;;;;;;;;;;;;10671:25;10640:56;10636:395;;;10731:11;;10721:6;:21;;10713:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10843:7;;;;;;;;;;;10838:182;;10912:4;10901:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;10931:2;10920:13;;:7;;;;;;;;;;;:13;;;;10901:32;10871:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;10838:182;10636:395;11060:18;11069:4;11075:2;11060:8;:18::i;:::-;11152:12;11167:4;11152:19;;11271:17;:23;11289:4;11271:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11298:17;:21;11316:2;11298:21;;;;;;;;;;;;;;;;;;;;;;;;;11271:48;:63;;;;11324:10;;;;;;;;;;;11323:11;11271:63;11267:111;;;11361:5;11351:15;;11267:111;11456:41;11471:4;11477:2;11481:6;11489:7;11456:14;:41::i;:::-;10333:1172;10264:1241;;;:::o;15519:226::-;15639:7;15672:1;15667;:6;;15675:12;15659:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15699:9;15715:1;15711;:5;;;;:::i;:::-;15699:17;;15736:1;15729:8;;;15519:226;;;;;:::o;15753:471::-;15811:7;16061:1;16056;:6;16052:47;;;16086:1;16079:8;;;;16052:47;16111:9;16127:1;16123;:5;;;;:::i;:::-;16111:17;;16156:1;16151;16147;:5;;;;:::i;:::-;:10;16139:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16215:1;16208:8;;;15753:471;;;;;:::o;16372:312::-;16492:7;16524:1;16520;:5;16527:12;16512:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;16551:9;16567:1;16563;:5;;;;:::i;:::-;16551:17;;16675:1;16668:8;;;16372:312;;;;;:::o;13310:1132::-;13651:28;13682:24;13700:4;13682:9;:24::i;:::-;13651:55;;13719:15;13761:14;;13737:20;:38;;13719:56;;13806:10;:42;;;;;13841:7;;;;;;;;;;;13833:15;;:4;:15;;;;13806:42;:73;;;;;13865:14;;;;;;;;;;;13806:73;:131;;;;;13914:4;13898:21;;:4;:21;;;:38;;;;;13929:7;;;;;;;;;;;13923:13;;:2;:13;;;13898:38;13896:41;13806:131;13788:647;;;14012:65;14029:4;14044:9;;;;;;;;;;;14056:20;14012:8;:65::i;:::-;14144:58;14175:9;;;;;;;;;;;14187:14;;14144:22;:58::i;:::-;14219:23;14245:21;14219:47;;14353:1;14335:15;:19;14331:92;;;14381:15;;;;;;;;;;;14373:33;;:50;14407:15;14373:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14331:92;13964:471;13788:647;13362:1080;;13310:1132;;:::o;11586:1507::-;11757:99;11793:6;11757:99;;;;;;;;;;;;;;;;;:9;:17;11767:6;11757:17;;;;;;;;;;;;;;;;:21;;:99;;;;;:::i;:::-;11737:9;:17;11747:6;11737:17;;;;;;;;;;;;;;;:119;;;;11882:6;11871:17;;:7;;;;;;;;;;;:17;;;:28;;;;;11892:7;11871:28;11867:1219;;;11916:14;11945:23;12060:11;;12047:10;;:24;;;;:::i;:::-;12029:15;:42;:91;;;;;12110:9;;;;;;;;;;;12092:28;;:6;:28;;;;12029:91;12007:327;;;12174:4;12155:5;:16;12161:9;12155:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12206:38;12229:14;;12206:18;12217:6;;12206;:10;;:18;;;;:::i;:::-;:22;;:38;;;;:::i;:::-;12197:47;;12007:327;;;12294:24;12311:6;12294:16;:24::i;:::-;12285:33;;12007:327;12366:18;12377:6;12366;:10;;:18;;;;:::i;:::-;12348:36;;12399:28;12412:6;12420;12399:12;:28::i;:::-;12467:41;12492:15;12467:9;:20;12477:9;12467:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;12444:9;:20;12454:9;12444:20;;;;;;;;;;;;;;;:64;;;;12545:9;12528:44;;12537:6;12528:44;;;12556:15;12528:44;;;;;;:::i;:::-;;;;;;;;11901:683;;11867:1219;;;12605:9;12594:20;;:7;;;;;;;;;;;:20;;;:31;;;;;12618:7;12594:31;12590:496;;;12642:14;12659:25;12677:6;12659:17;:25::i;:::-;12642:42;;12699:23;12725:18;12736:6;12725;:10;;:18;;;;:::i;:::-;12699:44;;12758:28;12771:6;12779;12758:12;:28::i;:::-;12826:41;12851:15;12826:9;:20;12836:9;12826:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;12803:9;:20;12813:9;12803:20;;;;;;;;;;;;;;;:64;;;;12904:9;12887:44;;12896:6;12887:44;;;12915:15;12887:44;;;;;;:::i;:::-;;;;;;;;12627:316;;12590:496;;;12987:32;13012:6;12987:9;:20;12997:9;12987:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12964:9;:20;12974:9;12964:20;;;;;;;;;;;;;;;:55;;;;13056:9;13039:35;;13048:6;13039:35;;;13067:6;13039:35;;;;;;:::i;:::-;;;;;;;;12590:496;11867:1219;11586:1507;;;;:::o;14541:614::-;14656:20;14690:13;14656:48;;14773:21;14811:1;14797:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14773:40;;14842:4;14824;14829:1;14824:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14868:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14858:4;14863:1;14858:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;14923:9;:60;;;14998:11;15024:1;15068:4;15095;15133:3;15115:15;:21;;;;:::i;:::-;14923:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14645:510;;14541:614;;:::o;15375:136::-;15433:7;15460:43;15464:1;15467;15460:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;15453:50;;15375:136;;;;:::o;13101:201::-;13201:36;13230:6;13201:9;:24;13219:4;13201:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;13174:9;:24;13192:4;13174:24;;;;;;;;;;;;;;;:63;;;;13280:4;13255:39;;13264:6;13255:39;;;13287:6;13255:39;;;;;;:::i;:::-;;;;;;;;13101:201;;:::o;15186:181::-;15244:7;15264:9;15280:1;15276;:5;;;;:::i;:::-;15264:17;;15305:1;15300;:6;;15292:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15358:1;15351:8;;;15186:181;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2543:117::-;2652:1;2649;2642:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:118::-;4514:24;4532:5;4514:24;:::i;:::-;4509:3;4502:37;4427:118;;:::o;4551:222::-;4644:4;4682:2;4671:9;4667:18;4659:26;;4695:71;4763:1;4752:9;4748:17;4739:6;4695:71;:::i;:::-;4551:222;;;;:::o;4779:619::-;4856:6;4864;4872;4921:2;4909:9;4900:7;4896:23;4892:32;4889:119;;;4927:79;;:::i;:::-;4889:119;5047:1;5072:53;5117:7;5108:6;5097:9;5093:22;5072:53;:::i;:::-;5062:63;;5018:117;5174:2;5200:53;5245:7;5236:6;5225:9;5221:22;5200:53;:::i;:::-;5190:63;;5145:118;5302:2;5328:53;5373:7;5364:6;5353:9;5349:22;5328:53;:::i;:::-;5318:63;;5273:118;4779:619;;;;;:::o;5404:86::-;5439:7;5479:4;5472:5;5468:16;5457:27;;5404:86;;;:::o;5496:112::-;5579:22;5595:5;5579:22;:::i;:::-;5574:3;5567:35;5496:112;;:::o;5614:214::-;5703:4;5741:2;5730:9;5726:18;5718:26;;5754:67;5818:1;5807:9;5803:17;5794:6;5754:67;:::i;:::-;5614:214;;;;:::o;5834:329::-;5893:6;5942:2;5930:9;5921:7;5917:23;5913:32;5910:119;;;5948:79;;:::i;:::-;5910:119;6068:1;6093:53;6138:7;6129:6;6118:9;6114:22;6093:53;:::i;:::-;6083:63;;6039:117;5834:329;;;;:::o;6169:474::-;6237:6;6245;6294:2;6282:9;6273:7;6269:23;6265:32;6262:119;;;6300:79;;:::i;:::-;6262:119;6420:1;6445:53;6490:7;6481:6;6470:9;6466:22;6445:53;:::i;:::-;6435:63;;6391:117;6547:2;6573:53;6618:7;6609:6;6598:9;6594:22;6573:53;:::i;:::-;6563:63;;6518:118;6169:474;;;;;:::o;6649:118::-;6736:24;6754:5;6736:24;:::i;:::-;6731:3;6724:37;6649:118;;:::o;6773:222::-;6866:4;6904:2;6893:9;6889:18;6881:26;;6917:71;6985:1;6974:9;6970:17;6961:6;6917:71;:::i;:::-;6773:222;;;;:::o;7001:329::-;7060:6;7109:2;7097:9;7088:7;7084:23;7080:32;7077:119;;;7115:79;;:::i;:::-;7077:119;7235:1;7260:53;7305:7;7296:6;7285:9;7281:22;7260:53;:::i;:::-;7250:63;;7206:117;7001:329;;;;:::o;7336:116::-;7406:21;7421:5;7406:21;:::i;:::-;7399:5;7396:32;7386:60;;7442:1;7439;7432:12;7386:60;7336:116;:::o;7458:133::-;7501:5;7539:6;7526:20;7517:29;;7555:30;7579:5;7555:30;:::i;:::-;7458:133;;;;:::o;7597:468::-;7662:6;7670;7719:2;7707:9;7698:7;7694:23;7690:32;7687:119;;;7725:79;;:::i;:::-;7687:119;7845:1;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7816:117;7972:2;7998:50;8040:7;8031:6;8020:9;8016:22;7998:50;:::i;:::-;7988:60;;7943:115;7597:468;;;;;:::o;8071:323::-;8127:6;8176:2;8164:9;8155:7;8151:23;8147:32;8144:119;;;8182:79;;:::i;:::-;8144:119;8302:1;8327:50;8369:7;8360:6;8349:9;8345:22;8327:50;:::i;:::-;8317:60;;8273:114;8071:323;;;;:::o;8400:180::-;8448:77;8445:1;8438:88;8545:4;8542:1;8535:15;8569:4;8566:1;8559:15;8586:320;8630:6;8667:1;8661:4;8657:12;8647:22;;8714:1;8708:4;8704:12;8735:18;8725:81;;8791:4;8783:6;8779:17;8769:27;;8725:81;8853:2;8845:6;8842:14;8822:18;8819:38;8816:84;;;8872:18;;:::i;:::-;8816:84;8637:269;8586:320;;;:::o;8912:182::-;9052:34;9048:1;9040:6;9036:14;9029:58;8912:182;:::o;9100:366::-;9242:3;9263:67;9327:2;9322:3;9263:67;:::i;:::-;9256:74;;9339:93;9428:3;9339:93;:::i;:::-;9457:2;9452:3;9448:12;9441:19;;9100:366;;;:::o;9472:419::-;9638:4;9676:2;9665:9;9661:18;9653:26;;9725:9;9719:4;9715:20;9711:1;9700:9;9696:17;9689:47;9753:131;9879:4;9753:131;:::i;:::-;9745:139;;9472:419;;;:::o;9897:332::-;10018:4;10056:2;10045:9;10041:18;10033:26;;10069:71;10137:1;10126:9;10122:17;10113:6;10069:71;:::i;:::-;10150:72;10218:2;10207:9;10203:18;10194:6;10150:72;:::i;:::-;9897:332;;;;;:::o;10235:137::-;10289:5;10320:6;10314:13;10305:22;;10336:30;10360:5;10336:30;:::i;:::-;10235:137;;;;:::o;10378:345::-;10445:6;10494:2;10482:9;10473:7;10469:23;10465:32;10462:119;;;10500:79;;:::i;:::-;10462:119;10620:1;10645:61;10698:7;10689:6;10678:9;10674:22;10645:61;:::i;:::-;10635:71;;10591:125;10378:345;;;;:::o;10729:174::-;10869:26;10865:1;10857:6;10853:14;10846:50;10729:174;:::o;10909:366::-;11051:3;11072:67;11136:2;11131:3;11072:67;:::i;:::-;11065:74;;11148:93;11237:3;11148:93;:::i;:::-;11266:2;11261:3;11257:12;11250:19;;10909:366;;;:::o;11281:419::-;11447:4;11485:2;11474:9;11470:18;11462:26;;11534:9;11528:4;11524:20;11520:1;11509:9;11505:17;11498:47;11562:131;11688:4;11562:131;:::i;:::-;11554:139;;11281:419;;;:::o;11706:181::-;11846:33;11842:1;11834:6;11830:14;11823:57;11706:181;:::o;11893:366::-;12035:3;12056:67;12120:2;12115:3;12056:67;:::i;:::-;12049:74;;12132:93;12221:3;12132:93;:::i;:::-;12250:2;12245:3;12241:12;12234:19;;11893:366;;;:::o;12265:419::-;12431:4;12469:2;12458:9;12454:18;12446:26;;12518:9;12512:4;12508:20;12504:1;12493:9;12489:17;12482:47;12546:131;12672:4;12546:131;:::i;:::-;12538:139;;12265:419;;;:::o;12690:180::-;12738:77;12735:1;12728:88;12835:4;12832:1;12825:15;12859:4;12856:1;12849:15;12876:180;12924:77;12921:1;12914:88;13021:4;13018:1;13011:15;13045:4;13042:1;13035:15;13062:185;13102:1;13119:20;13137:1;13119:20;:::i;:::-;13114:25;;13153:20;13171:1;13153:20;:::i;:::-;13148:25;;13192:1;13182:35;;13197:18;;:::i;:::-;13182:35;13239:1;13236;13232:9;13227:14;;13062:185;;;;:::o;13253:223::-;13393:34;13389:1;13381:6;13377:14;13370:58;13462:6;13457:2;13449:6;13445:15;13438:31;13253:223;:::o;13482:366::-;13624:3;13645:67;13709:2;13704:3;13645:67;:::i;:::-;13638:74;;13721:93;13810:3;13721:93;:::i;:::-;13839:2;13834:3;13830:12;13823:19;;13482:366;;;:::o;13854:419::-;14020:4;14058:2;14047:9;14043:18;14035:26;;14107:9;14101:4;14097:20;14093:1;14082:9;14078:17;14071:47;14135:131;14261:4;14135:131;:::i;:::-;14127:139;;13854:419;;;:::o;14279:169::-;14419:21;14415:1;14407:6;14403:14;14396:45;14279:169;:::o;14454:366::-;14596:3;14617:67;14681:2;14676:3;14617:67;:::i;:::-;14610:74;;14693:93;14782:3;14693:93;:::i;:::-;14811:2;14806:3;14802:12;14795:19;;14454:366;;;:::o;14826:419::-;14992:4;15030:2;15019:9;15015:18;15007:26;;15079:9;15073:4;15069:20;15065:1;15054:9;15050:17;15043:47;15107:131;15233:4;15107:131;:::i;:::-;15099:139;;14826:419;;;:::o;15251:225::-;15391:34;15387:1;15379:6;15375:14;15368:58;15460:8;15455:2;15447:6;15443:15;15436:33;15251:225;:::o;15482:366::-;15624:3;15645:67;15709:2;15704:3;15645:67;:::i;:::-;15638:74;;15721:93;15810:3;15721:93;:::i;:::-;15839:2;15834:3;15830:12;15823:19;;15482:366;;;:::o;15854:419::-;16020:4;16058:2;16047:9;16043:18;16035:26;;16107:9;16101:4;16097:20;16093:1;16082:9;16078:17;16071:47;16135:131;16261:4;16135:131;:::i;:::-;16127:139;;15854:419;;;:::o;16279:225::-;16419:34;16415:1;16407:6;16403:14;16396:58;16488:8;16483:2;16475:6;16471:15;16464:33;16279:225;:::o;16510:366::-;16652:3;16673:67;16737:2;16732:3;16673:67;:::i;:::-;16666:74;;16749:93;16838:3;16749:93;:::i;:::-;16867:2;16862:3;16858:12;16851:19;;16510:366;;;:::o;16882:419::-;17048:4;17086:2;17075:9;17071:18;17063:26;;17135:9;17129:4;17125:20;17121:1;17110:9;17106:17;17099:47;17163:131;17289:4;17163:131;:::i;:::-;17155:139;;16882:419;;;:::o;17307:223::-;17447:34;17443:1;17435:6;17431:14;17424:58;17516:6;17511:2;17503:6;17499:15;17492:31;17307:223;:::o;17536:366::-;17678:3;17699:67;17763:2;17758:3;17699:67;:::i;:::-;17692:74;;17775:93;17864:3;17775:93;:::i;:::-;17893:2;17888:3;17884:12;17877:19;;17536:366;;;:::o;17908:419::-;18074:4;18112:2;18101:9;18097:18;18089:26;;18161:9;18155:4;18151:20;18147:1;18136:9;18132:17;18125:47;18189:131;18315:4;18189:131;:::i;:::-;18181:139;;17908:419;;;:::o;18333:226::-;18473:34;18469:1;18461:6;18457:14;18450:58;18542:9;18537:2;18529:6;18525:15;18518:34;18333:226;:::o;18565:366::-;18707:3;18728:67;18792:2;18787:3;18728:67;:::i;:::-;18721:74;;18804:93;18893:3;18804:93;:::i;:::-;18922:2;18917:3;18913:12;18906:19;;18565:366;;;:::o;18937:419::-;19103:4;19141:2;19130:9;19126:18;19118:26;;19190:9;19184:4;19180:20;19176:1;19165:9;19161:17;19154:47;19218:131;19344:4;19218:131;:::i;:::-;19210:139;;18937:419;;;:::o;19362:224::-;19502:34;19498:1;19490:6;19486:14;19479:58;19571:7;19566:2;19558:6;19554:15;19547:32;19362:224;:::o;19592:366::-;19734:3;19755:67;19819:2;19814:3;19755:67;:::i;:::-;19748:74;;19831:93;19920:3;19831:93;:::i;:::-;19949:2;19944:3;19940:12;19933:19;;19592:366;;;:::o;19964:419::-;20130:4;20168:2;20157:9;20153:18;20145:26;;20217:9;20211:4;20207:20;20203:1;20192:9;20188:17;20181:47;20245:131;20371:4;20245:131;:::i;:::-;20237:139;;19964:419;;;:::o;20389:228::-;20529:34;20525:1;20517:6;20513:14;20506:58;20598:11;20593:2;20585:6;20581:15;20574:36;20389:228;:::o;20623:366::-;20765:3;20786:67;20850:2;20845:3;20786:67;:::i;:::-;20779:74;;20862:93;20951:3;20862:93;:::i;:::-;20980:2;20975:3;20971:12;20964:19;;20623:366;;;:::o;20995:419::-;21161:4;21199:2;21188:9;21184:18;21176:26;;21248:9;21242:4;21238:20;21234:1;21223:9;21219:17;21212:47;21276:131;21402:4;21276:131;:::i;:::-;21268:139;;20995:419;;;:::o;21420:171::-;21560:23;21556:1;21548:6;21544:14;21537:47;21420:171;:::o;21597:366::-;21739:3;21760:67;21824:2;21819:3;21760:67;:::i;:::-;21753:74;;21836:93;21925:3;21836:93;:::i;:::-;21954:2;21949:3;21945:12;21938:19;;21597:366;;;:::o;21969:419::-;22135:4;22173:2;22162:9;22158:18;22150:26;;22222:9;22216:4;22212:20;22208:1;22197:9;22193:17;22186:47;22250:131;22376:4;22250:131;:::i;:::-;22242:139;;21969:419;;;:::o;22394:180::-;22534:32;22530:1;22522:6;22518:14;22511:56;22394:180;:::o;22580:366::-;22722:3;22743:67;22807:2;22802:3;22743:67;:::i;:::-;22736:74;;22819:93;22908:3;22819:93;:::i;:::-;22937:2;22932:3;22928:12;22921:19;;22580:366;;;:::o;22952:419::-;23118:4;23156:2;23145:9;23141:18;23133:26;;23205:9;23199:4;23195:20;23191:1;23180:9;23176:17;23169:47;23233:131;23359:4;23233:131;:::i;:::-;23225:139;;22952:419;;;:::o;23377:177::-;23517:29;23513:1;23505:6;23501:14;23494:53;23377:177;:::o;23560:366::-;23702:3;23723:67;23787:2;23782:3;23723:67;:::i;:::-;23716:74;;23799:93;23888:3;23799:93;:::i;:::-;23917:2;23912:3;23908:12;23901:19;;23560:366;;;:::o;23932:419::-;24098:4;24136:2;24125:9;24121:18;24113:26;;24185:9;24179:4;24175:20;24171:1;24160:9;24156:17;24149:47;24213:131;24339:4;24213:131;:::i;:::-;24205:139;;23932:419;;;:::o;24357:191::-;24397:4;24417:20;24435:1;24417:20;:::i;:::-;24412:25;;24451:20;24469:1;24451:20;:::i;:::-;24446:25;;24490:1;24487;24484:8;24481:34;;;24495:18;;:::i;:::-;24481:34;24540:1;24537;24533:9;24525:17;;24357:191;;;;:::o;24554:348::-;24594:7;24617:20;24635:1;24617:20;:::i;:::-;24612:25;;24651:20;24669:1;24651:20;:::i;:::-;24646:25;;24839:1;24771:66;24767:74;24764:1;24761:81;24756:1;24749:9;24742:17;24738:105;24735:131;;;24846:18;;:::i;:::-;24735:131;24894:1;24891;24887:9;24876:20;;24554:348;;;;:::o;24908:220::-;25048:34;25044:1;25036:6;25032:14;25025:58;25117:3;25112:2;25104:6;25100:15;25093:28;24908:220;:::o;25134:366::-;25276:3;25297:67;25361:2;25356:3;25297:67;:::i;:::-;25290:74;;25373:93;25462:3;25373:93;:::i;:::-;25491:2;25486:3;25482:12;25475:19;;25134:366;;;:::o;25506:419::-;25672:4;25710:2;25699:9;25695:18;25687:26;;25759:9;25753:4;25749:20;25745:1;25734:9;25730:17;25723:47;25787:131;25913:4;25787:131;:::i;:::-;25779:139;;25506:419;;;:::o;25931:305::-;25971:3;25990:20;26008:1;25990:20;:::i;:::-;25985:25;;26024:20;26042:1;26024:20;:::i;:::-;26019:25;;26178:1;26110:66;26106:74;26103:1;26100:81;26097:107;;;26184:18;;:::i;:::-;26097:107;26228:1;26225;26221:9;26214:16;;25931:305;;;;:::o;26242:180::-;26290:77;26287:1;26280:88;26387:4;26384:1;26377:15;26411:4;26408:1;26401:15;26428:180;26476:77;26473:1;26466:88;26573:4;26570:1;26563:15;26597:4;26594:1;26587:15;26614:143;26671:5;26702:6;26696:13;26687:22;;26718:33;26745:5;26718:33;:::i;:::-;26614:143;;;;:::o;26763:351::-;26833:6;26882:2;26870:9;26861:7;26857:23;26853:32;26850:119;;;26888:79;;:::i;:::-;26850:119;27008:1;27033:64;27089:7;27080:6;27069:9;27065:22;27033:64;:::i;:::-;27023:74;;26979:128;26763:351;;;;:::o;27120:85::-;27165:7;27194:5;27183:16;;27120:85;;;:::o;27211:158::-;27269:9;27302:61;27320:42;27329:32;27355:5;27329:32;:::i;:::-;27320:42;:::i;:::-;27302:61;:::i;:::-;27289:74;;27211:158;;;:::o;27375:147::-;27470:45;27509:5;27470:45;:::i;:::-;27465:3;27458:58;27375:147;;:::o;27528:114::-;27595:6;27629:5;27623:12;27613:22;;27528:114;;;:::o;27648:184::-;27747:11;27781:6;27776:3;27769:19;27821:4;27816:3;27812:14;27797:29;;27648:184;;;;:::o;27838:132::-;27905:4;27928:3;27920:11;;27958:4;27953:3;27949:14;27941:22;;27838:132;;;:::o;27976:108::-;28053:24;28071:5;28053:24;:::i;:::-;28048:3;28041:37;27976:108;;:::o;28090:179::-;28159:10;28180:46;28222:3;28214:6;28180:46;:::i;:::-;28258:4;28253:3;28249:14;28235:28;;28090:179;;;;:::o;28275:113::-;28345:4;28377;28372:3;28368:14;28360:22;;28275:113;;;:::o;28424:732::-;28543:3;28572:54;28620:5;28572:54;:::i;:::-;28642:86;28721:6;28716:3;28642:86;:::i;:::-;28635:93;;28752:56;28802:5;28752:56;:::i;:::-;28831:7;28862:1;28847:284;28872:6;28869:1;28866:13;28847:284;;;28948:6;28942:13;28975:63;29034:3;29019:13;28975:63;:::i;:::-;28968:70;;29061:60;29114:6;29061:60;:::i;:::-;29051:70;;28907:224;28894:1;28891;28887:9;28882:14;;28847:284;;;28851:14;29147:3;29140:10;;28548:608;;;28424:732;;;;:::o;29162:831::-;29425:4;29463:3;29452:9;29448:19;29440:27;;29477:71;29545:1;29534:9;29530:17;29521:6;29477:71;:::i;:::-;29558:80;29634:2;29623:9;29619:18;29610:6;29558:80;:::i;:::-;29685:9;29679:4;29675:20;29670:2;29659:9;29655:18;29648:48;29713:108;29816:4;29807:6;29713:108;:::i;:::-;29705:116;;29831:72;29899:2;29888:9;29884:18;29875:6;29831:72;:::i;:::-;29913:73;29981:3;29970:9;29966:19;29957:6;29913:73;:::i;:::-;29162:831;;;;;;;;:::o;29999:177::-;30139:29;30135:1;30127:6;30123:14;30116:53;29999:177;:::o;30182:366::-;30324:3;30345:67;30409:2;30404:3;30345:67;:::i;:::-;30338:74;;30421:93;30510:3;30421:93;:::i;:::-;30539:2;30534:3;30530:12;30523:19;;30182:366;;;:::o;30554:419::-;30720:4;30758:2;30747:9;30743:18;30735:26;;30807:9;30801:4;30797:20;30793:1;30782:9;30778:17;30771:47;30835:131;30961:4;30835:131;:::i;:::-;30827:139;;30554:419;;;:::o

Swarm Source

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