ETH Price: $3,421.46 (-0.55%)
Gas: 2 Gwei

Token

Inscription Pattern Theory (IPT)
 

Overview

Max Total Supply

22,250,000 IPT

Holders

99

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
maneteecapital.eth
Balance
70,458.85996647420668857 IPT

Value
$0.00
0x65e71a159034c56799baf7e087b302752ec86b74
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:
IPT

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-27
*/

// SPDX-License-Identifier: MIT

// Inscription Pattern Theory (IPT) leverages AI to uncover hidden patterns within the Bitcoin blockchain, unlocking new applications, promoting innovation, and fostering community engagement.

// Telegram: https://t.me/inscriptionpatterntheory

// X: https://x.com/iptbtc

// Website: https://inscriptionpatterntheory.com/


pragma solidity 0.8.20;

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

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

contract IPT is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;

    uint256 public swapThreshold;
    address public taxWallet;
    uint256 public maxSupply;
    uint256 public cirSupply;


    uint256 public buyTax = 0;
    uint256 public sellTax = 0;

    mapping(address => bool) public excludedFromFees;
    mapping(address => bool) private isBot;

  
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }

    constructor() ERC20("Inscription Pattern Theory", "IPT") {
        maxSupply= 100000000 * 10 ** decimals(); // 100 million total supply
        cirSupply = 22250000 * 10 ** decimals();

        _mint(_msgSender(), cirSupply);

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;

        excludedFromFees[address(this)] = true;
        excludedFromFees[_msgSender()] = true;
        excludedFromFees[address(0xdead)] = true;
        taxWallet = _msgSender();

        swapThreshold = totalSupply() * 1 / 10_000;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");

        if (!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping) {
            require(tradingEnabled, "Trading not active yet");
            if (genesis_block + deadblocks > block.number) {
                if (recipient != pair) isBot[recipient] = true;
                if (sender != pair) isBot[sender] = true;
            }
        }

        uint256 fee;

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

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

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

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

            swapTokensForETH(toSwap);

            uint256 marketingAmt = address(this).balance;
            if (marketingAmt > 0) {
                payable(taxWallet).sendValue(marketingAmt);
            }
        }
    }

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

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

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

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

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

    function mintIptToken(uint256 amount) external onlyOwner {
        require(totalSupply() + amount <= maxSupply, "ERROR: cannot mint more than total supply");
        cirSupply += amount;
        _mint(owner(), amount);
    }

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

    function setaxes(uint256 _buytax, uint256 _sellTax) external onlyOwner {
        buyTax = _buytax;
        sellTax = _sellTax;
    }

    function updateTaxWallet(address newWallet) external onlyOwner {
        taxWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner {
        router = _router;
        pair = _pair;
    }

    function addBots(address[] memory isBot_) public onlyOwner {
        for (uint256 i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
    }

    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }

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

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

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

    // fallbacks
    receive() external payable { }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cirSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintIptToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buytax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"setaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6009555f600e555f600f553480156200001c575f80fd5b506040518060400160405280601a81526020017f496e736372697074696f6e205061747465726e205468656f72790000000000008152506040518060400160405280600381526020017f495054000000000000000000000000000000000000000000000000000000000081525081600390816200009a919062000990565b508060049081620000ac919062000990565b505050620000cf620000c3620004ef60201b60201c565b620004f660201b60201c565b620000df620005b960201b60201c565b600a620000ed919062000bfd565b6305f5e100620000fe919062000c4d565b600c8190555062000114620005b960201b60201c565b600a62000122919062000bfd565b630153821062000133919062000c4d565b600d819055506200015c6200014d620004ef60201b60201c565b600d54620005c160201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e5919062000cfc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000271919062000cfc565b6040518363ffffffff1660e01b81526004016200029092919062000d3d565b6020604051808303815f875af1158015620002ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d3919062000cfc565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f620003bf620004ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000475620004ef60201b60201c565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506127106001620004c96200071e60201b60201c565b620004d5919062000c4d565b620004e1919062000d95565b600a81905550505062000eb0565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000632576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006299062000e2a565b60405180910390fd5b620006455f83836200072760201b60201c565b8060025f82825462000658919062000e4a565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620006ac919062000e4a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000712919062000e95565b60405180910390a35050565b5f600254905090565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007a857607f821691505b602082108103620007be57620007bd62000763565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008227fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007e5565b6200082e8683620007e5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000878620008726200086c8462000846565b6200084f565b62000846565b9050919050565b5f819050919050565b620008938362000858565b620008ab620008a2826200087f565b848454620007f1565b825550505050565b5f90565b620008c1620008b3565b620008ce81848462000888565b505050565b5b81811015620008f557620008e95f82620008b7565b600181019050620008d4565b5050565b601f82111562000944576200090e81620007c4565b6200091984620007d6565b8101602085101562000929578190505b620009416200093885620007d6565b830182620008d3565b50505b505050565b5f82821c905092915050565b5f620009665f198460080262000949565b1980831691505092915050565b5f62000980838362000955565b9150826002028217905092915050565b6200099b826200072c565b67ffffffffffffffff811115620009b757620009b662000736565b5b620009c3825462000790565b620009d0828285620008f9565b5f60209050601f83116001811462000a06575f8415620009f1578287015190505b620009fd858262000973565b86555062000a6c565b601f19841662000a1686620007c4565b5f5b8281101562000a3f5784890151825560018201915060208501945060208101905062000a18565b8683101562000a5f578489015162000a5b601f89168262000955565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000afe5780860481111562000ad65762000ad562000a74565b5b600185161562000ae65780820291505b808102905062000af68562000aa1565b945062000ab6565b94509492505050565b5f8262000b18576001905062000bea565b8162000b27575f905062000bea565b816001811462000b40576002811462000b4b5762000b81565b600191505062000bea565b60ff84111562000b605762000b5f62000a74565b5b8360020a91508482111562000b7a5762000b7962000a74565b5b5062000bea565b5060208310610133831016604e8410600b841016171562000bbb5782820a90508381111562000bb55762000bb462000a74565b5b62000bea565b62000bca848484600162000aad565b9250905081840481111562000be45762000be362000a74565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000c098262000846565b915062000c168362000bf1565b925062000c457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b07565b905092915050565b5f62000c598262000846565b915062000c668362000846565b925082820262000c768162000846565b9150828204841483151762000c905762000c8f62000a74565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000cc68262000c9b565b9050919050565b62000cd88162000cba565b811462000ce3575f80fd5b50565b5f8151905062000cf68162000ccd565b92915050565b5f6020828403121562000d145762000d1362000c97565b5b5f62000d238482850162000ce6565b91505092915050565b62000d378162000cba565b82525050565b5f60408201905062000d525f83018562000d2c565b62000d61602083018462000d2c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000da18262000846565b915062000dae8362000846565b92508262000dc15762000dc062000d68565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e12601f8362000dcc565b915062000e1f8262000ddc565b602082019050919050565b5f6020820190508181035f83015262000e438162000e04565b9050919050565b5f62000e568262000846565b915062000e638362000846565b925082820190508082111562000e7e5762000e7d62000a74565b5b92915050565b62000e8f8162000846565b82525050565b5f60208201905062000eaa5f83018462000e84565b92915050565b613cf98062000ebe5f395ff3fe608060405260043610610233575f3560e01c806382aa7c681161012d578063a9059cbb116100aa578063dd62ed3e1161006e578063dd62ed3e14610828578063e01af92c14610864578063e545fd6d1461088c578063f2fde38b146108b4578063f887ea40146108dc5761023a565b8063a9059cbb14610734578063cc1776d314610770578063d34628cc1461079a578063d5abeb01146107c2578063dbe66ca0146107ec5761023a565b80639e252f00116100f15780639e252f0014610654578063a3d17f1c1461067c578063a457c2d7146106a4578063a5616026146106e0578063a8aa1b311461070a5761023a565b806382aa7c68146105885780638cd4426d146105b05780638da5cb5b146105d857806395d89b41146106025780639d0014b11461062c5761023a565b806339509351116101bb57806356faae961161017f57806356faae96146104bc5780636ddd1713146104e457806370a082311461050e578063715018a61461054a57806374c9f603146105605761023a565b806339509351146103da57806340b28c2f146104165780634ada218b1461043e5780634f7041a51461046857806350c9a88f146104925761023a565b80631fcc662a116102025780631fcc662a146102f857806323b872dd14610320578063274a533c1461035c5780632dc0562d14610386578063313ce567146103b05761023a565b80630445b6671461023e57806306fdde0314610268578063095ea7b31461029257806318160ddd146102ce5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610252610906565b60405161025f91906129bb565b60405180910390f35b348015610273575f80fd5b5061027c61090c565b6040516102899190612a5e565b60405180910390f35b34801561029d575f80fd5b506102b860048036038101906102b39190612b13565b61099c565b6040516102c59190612b6b565b60405180910390f35b3480156102d9575f80fd5b506102e26109b9565b6040516102ef91906129bb565b60405180910390f35b348015610303575f80fd5b5061031e60048036038101906103199190612b84565b6109c2565b005b34801561032b575f80fd5b5061034660048036038101906103419190612baf565b610ac1565b6040516103539190612b6b565b60405180910390f35b348015610367575f80fd5b50610370610bbc565b60405161037d91906129bb565b60405180910390f35b348015610391575f80fd5b5061039a610bc2565b6040516103a79190612c0e565b60405180910390f35b3480156103bb575f80fd5b506103c4610be7565b6040516103d19190612c42565b60405180910390f35b3480156103e5575f80fd5b5061040060048036038101906103fb9190612b13565b610bef565b60405161040d9190612b6b565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190612c96565b610c96565b005b348015610449575f80fd5b50610452610d96565b60405161045f9190612b6b565b60405180910390f35b348015610473575f80fd5b5061047c610da9565b60405161048991906129bb565b60405180910390f35b34801561049d575f80fd5b506104a6610daf565b6040516104b391906129bb565b60405180910390f35b3480156104c7575f80fd5b506104e260048036038101906104dd9190612cd4565b610db5565b005b3480156104ef575f80fd5b506104f8610ebc565b6040516105059190612b6b565b60405180910390f35b348015610519575f80fd5b50610534600480360381019061052f9190612d12565b610ecf565b60405161054191906129bb565b60405180910390f35b348015610555575f80fd5b5061055e610f14565b005b34801561056b575f80fd5b5061058660048036038101906105819190612d12565b610f9b565b005b348015610593575f80fd5b506105ae60048036038101906105a99190612b84565b61105a565b005b3480156105bb575f80fd5b506105d660048036038101906105d19190612b13565b61117d565b005b3480156105e3575f80fd5b506105ec61121e565b6040516105f99190612c0e565b60405180910390f35b34801561060d575f80fd5b50610616611246565b6040516106239190612a5e565b60405180910390f35b348015610637575f80fd5b50610652600480360381019061064d9190612b84565b6112d6565b005b34801561065f575f80fd5b5061067a60048036038101906106759190612b84565b61135c565b005b348015610687575f80fd5b506106a2600480360381019061069d9190612cd4565b6113a9565b005b3480156106af575f80fd5b506106ca60048036038101906106c59190612b13565b611437565b6040516106d79190612b6b565b60405180910390f35b3480156106eb575f80fd5b506106f4611526565b60405161070191906129bb565b60405180910390f35b348015610715575f80fd5b5061071e61152c565b60405161072b9190612c0e565b60405180910390f35b34801561073f575f80fd5b5061075a60048036038101906107559190612b13565b611551565b6040516107679190612b6b565b60405180910390f35b34801561077b575f80fd5b5061078461156e565b60405161079191906129bb565b60405180910390f35b3480156107a5575f80fd5b506107c060048036038101906107bb9190612e7d565b611574565b005b3480156107cd575f80fd5b506107d6611681565b6040516107e391906129bb565b60405180910390f35b3480156107f7575f80fd5b50610812600480360381019061080d9190612d12565b611687565b60405161081f9190612b6b565b60405180910390f35b348015610833575f80fd5b5061084e60048036038101906108499190612ec4565b6116a4565b60405161085b91906129bb565b60405180910390f35b34801561086f575f80fd5b5061088a60048036038101906108859190612f2c565b611726565b005b348015610897575f80fd5b506108b260048036038101906108ad9190612f57565b6117bf565b005b3480156108bf575f80fd5b506108da60048036038101906108d59190612d12565b611893565b005b3480156108e7575f80fd5b506108f0611989565b6040516108fd9190612ff0565b60405180910390f35b600a5481565b60606003805461091b90613036565b80601f016020809104026020016040519081016040528092919081815260200182805461094790613036565b80156109925780601f1061096957610100808354040283529160200191610992565b820191905f5260205f20905b81548152906001019060200180831161097557829003601f168201915b5050505050905090565b5f6109af6109a86119ae565b84846119b5565b6001905092915050565b5f600254905090565b6109ca6119ae565b73ffffffffffffffffffffffffffffffffffffffff166109e861121e565b73ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a35906130b0565b60405180910390fd5b600c5481610a4a6109b9565b610a5491906130fb565b1115610a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8c9061319e565b60405180910390fd5b80600d5f828254610aa691906130fb565b92505081905550610abe610ab861121e565b82611b78565b50565b5f610acd848484611cc4565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b146119ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a9061322c565b60405180910390fd5b610bb085610b9f6119ae565b8584610bab919061324a565b6119b5565b60019150509392505050565b60085481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f610c8c610bfb6119ae565b848460015f610c086119ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c8791906130fb565b6119b5565b6001905092915050565b610c9e6119ae565b73ffffffffffffffffffffffffffffffffffffffff16610cbc61121e565b73ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d09906130b0565b60405180910390fd5b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b600e5481565b60095481565b610dbd6119ae565b73ffffffffffffffffffffffffffffffffffffffff16610ddb61121e565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e28906130b0565b60405180910390fd5b5f479050610e3e83612279565b5f8147610e4b919061324a565b90505f831115610eb657610eb5838483610e65919061327d565b610e6f91906132eb565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124af90919063ffffffff16565b5b50505050565b600760159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f1c6119ae565b73ffffffffffffffffffffffffffffffffffffffff16610f3a61121e565b73ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f87906130b0565b60405180910390fd5b610f995f61259f565b565b610fa36119ae565b73ffffffffffffffffffffffffffffffffffffffff16610fc161121e565b73ffffffffffffffffffffffffffffffffffffffff1614611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e906130b0565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110626119ae565b73ffffffffffffffffffffffffffffffffffffffff1661108061121e565b73ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd906130b0565b60405180910390fd5b600760169054906101000a900460ff1615611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d90613365565b60405180910390fd5b6028600e819055506028600f819055506001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111d9929190613383565b6020604051808303815f875af11580156111f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121991906133be565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461125590613036565b80601f016020809104026020016040519081016040528092919081815260200182805461128190613036565b80156112cc5780601f106112a3576101008083540402835291602001916112cc565b820191905f5260205f20905b8154815290600101906020018083116112af57829003601f168201915b5050505050905090565b6112de6119ae565b73ffffffffffffffffffffffffffffffffffffffff166112fc61121e565b73ffffffffffffffffffffffffffffffffffffffff1614611352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611349906130b0565b60405180910390fd5b80600a8190555050565b6113a681600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124af90919063ffffffff16565b50565b6113b16119ae565b73ffffffffffffffffffffffffffffffffffffffff166113cf61121e565b73ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906130b0565b60405180910390fd5b81600e8190555080600f819055505050565b5f8060015f6114446119ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590613459565b60405180910390fd5b61151b6115096119ae565b858584611516919061324a565b6119b5565b600191505092915050565b600d5481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61156461155d6119ae565b8484611cc4565b6001905092915050565b600f5481565b61157c6119ae565b73ffffffffffffffffffffffffffffffffffffffff1661159a61121e565b73ffffffffffffffffffffffffffffffffffffffff16146115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e7906130b0565b60405180910390fd5b5f5b815181101561167d57600160115f84848151811061161357611612613477565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611675906134a4565b9150506115f2565b5050565b600c5481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61172e6119ae565b73ffffffffffffffffffffffffffffffffffffffff1661174c61121e565b73ffffffffffffffffffffffffffffffffffffffff16146117a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611799906130b0565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6117c76119ae565b73ffffffffffffffffffffffffffffffffffffffff166117e561121e565b73ffffffffffffffffffffffffffffffffffffffff161461183b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611832906130b0565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61189b6119ae565b73ffffffffffffffffffffffffffffffffffffffff166118b961121e565b73ffffffffffffffffffffffffffffffffffffffff161461190f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611906906130b0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361197d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119749061355b565b60405180910390fd5b6119868161259f565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a906135e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8890613677565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b6b91906129bb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdd906136df565b60405180910390fd5b611bf15f8383612662565b8060025f828254611c0291906130fb565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611c5491906130fb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb891906129bb565b60405180910390a35050565b5f8111611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd9061376d565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611da4575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906137d5565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e81575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e9a5750600760149054906101000a900460ff16155b1561205b57600760169054906101000a900460ff16611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee59061383d565b60405180910390fd5b43600954600854611eff91906130fb565b111561205a5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611faf57600160115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461205957600160115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5b5b5f600760149054906101000a900460ff16806120bd575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061210e575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561211b575f90506121ae565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612190576064600f548361217f919061327d565b61218991906132eb565b90506121ad565b6064600e54836121a0919061327d565b6121aa91906132eb565b90505b5b600760159054906101000a900460ff1680156121d75750600760149054906101000a900460ff16155b8015612230575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561223b57505f81115b1561224957612248612667565b5b61225f8484838561225a919061324a565b612730565b5f81111561227357612272843083612730565b5b50505050565b5f600267ffffffffffffffff81111561229557612294612d41565b5b6040519080825280602002602001820160405280156122c35781602001602082028036833780820191505090505b50905030815f815181106122da576122d9613477565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a2919061386f565b816001815181106123b6576123b5613477565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061241c3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119b5565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161247e95949392919061398a565b5f604051808303815f87803b158015612495575f80fd5b505af11580156124a7573d5f803e3d5ffd5b505050505050565b804710156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990613a2c565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161251790613a77565b5f6040518083038185875af1925050503d805f8114612551576040519150601f19603f3d011682016040523d82523d5f602084013e612556565b606091505b505090508061259a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259190613afb565b60405180910390fd5b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b600760149054906101000a900460ff1661272e576001600760146101000a81548160ff0219169083151502179055505f6126a030610ecf565b9050600a548110612712575f8190506126b881612279565b5f4790505f81111561270f5761270e81600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124af90919063ffffffff16565b5b50505b505f600760146101000a81548160ff0219169083151502179055505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361279e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279590613b89565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361280c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280390613c17565b60405180910390fd5b612817838383612662565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561289a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289190613ca5565b60405180910390fd5b81816128a6919061324a565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461293191906130fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161299591906129bb565b60405180910390a350505050565b5f819050919050565b6129b5816129a3565b82525050565b5f6020820190506129ce5f8301846129ac565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a0b5780820151818401526020810190506129f0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a30826129d4565b612a3a81856129de565b9350612a4a8185602086016129ee565b612a5381612a16565b840191505092915050565b5f6020820190508181035f830152612a768184612a26565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ab882612a8f565b9050919050565b612ac881612aae565b8114612ad2575f80fd5b50565b5f81359050612ae381612abf565b92915050565b612af2816129a3565b8114612afc575f80fd5b50565b5f81359050612b0d81612ae9565b92915050565b5f8060408385031215612b2957612b28612a87565b5b5f612b3685828601612ad5565b9250506020612b4785828601612aff565b9150509250929050565b5f8115159050919050565b612b6581612b51565b82525050565b5f602082019050612b7e5f830184612b5c565b92915050565b5f60208284031215612b9957612b98612a87565b5b5f612ba684828501612aff565b91505092915050565b5f805f60608486031215612bc657612bc5612a87565b5b5f612bd386828701612ad5565b9350506020612be486828701612ad5565b9250506040612bf586828701612aff565b9150509250925092565b612c0881612aae565b82525050565b5f602082019050612c215f830184612bff565b92915050565b5f60ff82169050919050565b612c3c81612c27565b82525050565b5f602082019050612c555f830184612c33565b92915050565b5f612c6582612aae565b9050919050565b612c7581612c5b565b8114612c7f575f80fd5b50565b5f81359050612c9081612c6c565b92915050565b5f8060408385031215612cac57612cab612a87565b5b5f612cb985828601612c82565b9250506020612cca85828601612ad5565b9150509250929050565b5f8060408385031215612cea57612ce9612a87565b5b5f612cf785828601612aff565b9250506020612d0885828601612aff565b9150509250929050565b5f60208284031215612d2757612d26612a87565b5b5f612d3484828501612ad5565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d7782612a16565b810181811067ffffffffffffffff82111715612d9657612d95612d41565b5b80604052505050565b5f612da8612a7e565b9050612db48282612d6e565b919050565b5f67ffffffffffffffff821115612dd357612dd2612d41565b5b602082029050602081019050919050565b5f80fd5b5f612dfa612df584612db9565b612d9f565b90508083825260208201905060208402830185811115612e1d57612e1c612de4565b5b835b81811015612e465780612e328882612ad5565b845260208401935050602081019050612e1f565b5050509392505050565b5f82601f830112612e6457612e63612d3d565b5b8135612e74848260208601612de8565b91505092915050565b5f60208284031215612e9257612e91612a87565b5b5f82013567ffffffffffffffff811115612eaf57612eae612a8b565b5b612ebb84828501612e50565b91505092915050565b5f8060408385031215612eda57612ed9612a87565b5b5f612ee785828601612ad5565b9250506020612ef885828601612ad5565b9150509250929050565b612f0b81612b51565b8114612f15575f80fd5b50565b5f81359050612f2681612f02565b92915050565b5f60208284031215612f4157612f40612a87565b5b5f612f4e84828501612f18565b91505092915050565b5f8060408385031215612f6d57612f6c612a87565b5b5f612f7a85828601612ad5565b9250506020612f8b85828601612f18565b9150509250929050565b5f819050919050565b5f612fb8612fb3612fae84612a8f565b612f95565b612a8f565b9050919050565b5f612fc982612f9e565b9050919050565b5f612fda82612fbf565b9050919050565b612fea81612fd0565b82525050565b5f6020820190506130035f830184612fe1565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061304d57607f821691505b6020821081036130605761305f613009565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61309a6020836129de565b91506130a582613066565b602082019050919050565b5f6020820190508181035f8301526130c78161308e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613105826129a3565b9150613110836129a3565b9250828201905080821115613128576131276130ce565b5b92915050565b7f4552524f523a2063616e6e6f74206d696e74206d6f7265207468616e20746f745f8201527f616c20737570706c790000000000000000000000000000000000000000000000602082015250565b5f6131886029836129de565b91506131938261312e565b604082019050919050565b5f6020820190508181035f8301526131b58161317c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6132166028836129de565b9150613221826131bc565b604082019050919050565b5f6020820190508181035f8301526132438161320a565b9050919050565b5f613254826129a3565b915061325f836129a3565b9250828203905081811115613277576132766130ce565b5b92915050565b5f613287826129a3565b9150613292836129a3565b92508282026132a0816129a3565b915082820484148315176132b7576132b66130ce565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132f5826129a3565b9150613300836129a3565b9250826133105761330f6132be565b5b828204905092915050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f61334f6016836129de565b915061335a8261331b565b602082019050919050565b5f6020820190508181035f83015261337c81613343565b9050919050565b5f6040820190506133965f830185612bff565b6133a360208301846129ac565b9392505050565b5f815190506133b881612f02565b92915050565b5f602082840312156133d3576133d2612a87565b5b5f6133e0848285016133aa565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6134436025836129de565b915061344e826133e9565b604082019050919050565b5f6020820190508181035f83015261347081613437565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6134ae826129a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134e0576134df6130ce565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135456026836129de565b9150613550826134eb565b604082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6135d36024836129de565b91506135de82613579565b604082019050919050565b5f6020820190508181035f830152613600816135c7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136616022836129de565b915061366c82613607565b604082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6136c9601f836129de565b91506136d482613695565b602082019050919050565b5f6020820190508181035f8301526136f6816136bd565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137576029836129de565b9150613762826136fd565b604082019050919050565b5f6020820190508181035f8301526137848161374b565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f6137bf6019836129de565b91506137ca8261378b565b602082019050919050565b5f6020820190508181035f8301526137ec816137b3565b9050919050565b7f54726164696e67206e6f742061637469766520796574000000000000000000005f82015250565b5f6138276016836129de565b9150613832826137f3565b602082019050919050565b5f6020820190508181035f8301526138548161381b565b9050919050565b5f8151905061386981612abf565b92915050565b5f6020828403121561388457613883612a87565b5b5f6138918482850161385b565b91505092915050565b5f819050919050565b5f6138bd6138b86138b38461389a565b612f95565b6129a3565b9050919050565b6138cd816138a3565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61390581612aae565b82525050565b5f61391683836138fc565b60208301905092915050565b5f602082019050919050565b5f613938826138d3565b61394281856138dd565b935061394d836138ed565b805f5b8381101561397d578151613964888261390b565b975061396f83613922565b925050600181019050613950565b5085935050505092915050565b5f60a08201905061399d5f8301886129ac565b6139aa60208301876138c4565b81810360408301526139bc818661392e565b90506139cb6060830185612bff565b6139d860808301846129ac565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613a16601d836129de565b9150613a21826139e2565b602082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b5f81905092915050565b50565b5f613a625f83613a4a565b9150613a6d82613a54565b5f82019050919050565b5f613a8182613a57565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f613ae5603a836129de565b9150613af082613a8b565b604082019050919050565b5f6020820190508181035f830152613b1281613ad9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b736025836129de565b9150613b7e82613b19565b604082019050919050565b5f6020820190508181035f830152613ba081613b67565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c016023836129de565b9150613c0c82613ba7565b604082019050919050565b5f6020820190508181035f830152613c2e81613bf5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c8f6026836129de565b9150613c9a82613c35565b604082019050919050565b5f6020820190508181035f830152613cbc81613c83565b905091905056fea2646970667358221220f37f93ab8f702908ab749ebd41b986f717d52e25770bbeb82120c351732ca87664736f6c63430008140033

Deployed Bytecode

0x608060405260043610610233575f3560e01c806382aa7c681161012d578063a9059cbb116100aa578063dd62ed3e1161006e578063dd62ed3e14610828578063e01af92c14610864578063e545fd6d1461088c578063f2fde38b146108b4578063f887ea40146108dc5761023a565b8063a9059cbb14610734578063cc1776d314610770578063d34628cc1461079a578063d5abeb01146107c2578063dbe66ca0146107ec5761023a565b80639e252f00116100f15780639e252f0014610654578063a3d17f1c1461067c578063a457c2d7146106a4578063a5616026146106e0578063a8aa1b311461070a5761023a565b806382aa7c68146105885780638cd4426d146105b05780638da5cb5b146105d857806395d89b41146106025780639d0014b11461062c5761023a565b806339509351116101bb57806356faae961161017f57806356faae96146104bc5780636ddd1713146104e457806370a082311461050e578063715018a61461054a57806374c9f603146105605761023a565b806339509351146103da57806340b28c2f146104165780634ada218b1461043e5780634f7041a51461046857806350c9a88f146104925761023a565b80631fcc662a116102025780631fcc662a146102f857806323b872dd14610320578063274a533c1461035c5780632dc0562d14610386578063313ce567146103b05761023a565b80630445b6671461023e57806306fdde0314610268578063095ea7b31461029257806318160ddd146102ce5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610252610906565b60405161025f91906129bb565b60405180910390f35b348015610273575f80fd5b5061027c61090c565b6040516102899190612a5e565b60405180910390f35b34801561029d575f80fd5b506102b860048036038101906102b39190612b13565b61099c565b6040516102c59190612b6b565b60405180910390f35b3480156102d9575f80fd5b506102e26109b9565b6040516102ef91906129bb565b60405180910390f35b348015610303575f80fd5b5061031e60048036038101906103199190612b84565b6109c2565b005b34801561032b575f80fd5b5061034660048036038101906103419190612baf565b610ac1565b6040516103539190612b6b565b60405180910390f35b348015610367575f80fd5b50610370610bbc565b60405161037d91906129bb565b60405180910390f35b348015610391575f80fd5b5061039a610bc2565b6040516103a79190612c0e565b60405180910390f35b3480156103bb575f80fd5b506103c4610be7565b6040516103d19190612c42565b60405180910390f35b3480156103e5575f80fd5b5061040060048036038101906103fb9190612b13565b610bef565b60405161040d9190612b6b565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190612c96565b610c96565b005b348015610449575f80fd5b50610452610d96565b60405161045f9190612b6b565b60405180910390f35b348015610473575f80fd5b5061047c610da9565b60405161048991906129bb565b60405180910390f35b34801561049d575f80fd5b506104a6610daf565b6040516104b391906129bb565b60405180910390f35b3480156104c7575f80fd5b506104e260048036038101906104dd9190612cd4565b610db5565b005b3480156104ef575f80fd5b506104f8610ebc565b6040516105059190612b6b565b60405180910390f35b348015610519575f80fd5b50610534600480360381019061052f9190612d12565b610ecf565b60405161054191906129bb565b60405180910390f35b348015610555575f80fd5b5061055e610f14565b005b34801561056b575f80fd5b5061058660048036038101906105819190612d12565b610f9b565b005b348015610593575f80fd5b506105ae60048036038101906105a99190612b84565b61105a565b005b3480156105bb575f80fd5b506105d660048036038101906105d19190612b13565b61117d565b005b3480156105e3575f80fd5b506105ec61121e565b6040516105f99190612c0e565b60405180910390f35b34801561060d575f80fd5b50610616611246565b6040516106239190612a5e565b60405180910390f35b348015610637575f80fd5b50610652600480360381019061064d9190612b84565b6112d6565b005b34801561065f575f80fd5b5061067a60048036038101906106759190612b84565b61135c565b005b348015610687575f80fd5b506106a2600480360381019061069d9190612cd4565b6113a9565b005b3480156106af575f80fd5b506106ca60048036038101906106c59190612b13565b611437565b6040516106d79190612b6b565b60405180910390f35b3480156106eb575f80fd5b506106f4611526565b60405161070191906129bb565b60405180910390f35b348015610715575f80fd5b5061071e61152c565b60405161072b9190612c0e565b60405180910390f35b34801561073f575f80fd5b5061075a60048036038101906107559190612b13565b611551565b6040516107679190612b6b565b60405180910390f35b34801561077b575f80fd5b5061078461156e565b60405161079191906129bb565b60405180910390f35b3480156107a5575f80fd5b506107c060048036038101906107bb9190612e7d565b611574565b005b3480156107cd575f80fd5b506107d6611681565b6040516107e391906129bb565b60405180910390f35b3480156107f7575f80fd5b50610812600480360381019061080d9190612d12565b611687565b60405161081f9190612b6b565b60405180910390f35b348015610833575f80fd5b5061084e60048036038101906108499190612ec4565b6116a4565b60405161085b91906129bb565b60405180910390f35b34801561086f575f80fd5b5061088a60048036038101906108859190612f2c565b611726565b005b348015610897575f80fd5b506108b260048036038101906108ad9190612f57565b6117bf565b005b3480156108bf575f80fd5b506108da60048036038101906108d59190612d12565b611893565b005b3480156108e7575f80fd5b506108f0611989565b6040516108fd9190612ff0565b60405180910390f35b600a5481565b60606003805461091b90613036565b80601f016020809104026020016040519081016040528092919081815260200182805461094790613036565b80156109925780601f1061096957610100808354040283529160200191610992565b820191905f5260205f20905b81548152906001019060200180831161097557829003601f168201915b5050505050905090565b5f6109af6109a86119ae565b84846119b5565b6001905092915050565b5f600254905090565b6109ca6119ae565b73ffffffffffffffffffffffffffffffffffffffff166109e861121e565b73ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a35906130b0565b60405180910390fd5b600c5481610a4a6109b9565b610a5491906130fb565b1115610a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8c9061319e565b60405180910390fd5b80600d5f828254610aa691906130fb565b92505081905550610abe610ab861121e565b82611b78565b50565b5f610acd848484611cc4565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b146119ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a9061322c565b60405180910390fd5b610bb085610b9f6119ae565b8584610bab919061324a565b6119b5565b60019150509392505050565b60085481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f610c8c610bfb6119ae565b848460015f610c086119ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c8791906130fb565b6119b5565b6001905092915050565b610c9e6119ae565b73ffffffffffffffffffffffffffffffffffffffff16610cbc61121e565b73ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d09906130b0565b60405180910390fd5b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b600e5481565b60095481565b610dbd6119ae565b73ffffffffffffffffffffffffffffffffffffffff16610ddb61121e565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e28906130b0565b60405180910390fd5b5f479050610e3e83612279565b5f8147610e4b919061324a565b90505f831115610eb657610eb5838483610e65919061327d565b610e6f91906132eb565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124af90919063ffffffff16565b5b50505050565b600760159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f1c6119ae565b73ffffffffffffffffffffffffffffffffffffffff16610f3a61121e565b73ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f87906130b0565b60405180910390fd5b610f995f61259f565b565b610fa36119ae565b73ffffffffffffffffffffffffffffffffffffffff16610fc161121e565b73ffffffffffffffffffffffffffffffffffffffff1614611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e906130b0565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110626119ae565b73ffffffffffffffffffffffffffffffffffffffff1661108061121e565b73ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd906130b0565b60405180910390fd5b600760169054906101000a900460ff1615611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d90613365565b60405180910390fd5b6028600e819055506028600f819055506001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111d9929190613383565b6020604051808303815f875af11580156111f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121991906133be565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461125590613036565b80601f016020809104026020016040519081016040528092919081815260200182805461128190613036565b80156112cc5780601f106112a3576101008083540402835291602001916112cc565b820191905f5260205f20905b8154815290600101906020018083116112af57829003601f168201915b5050505050905090565b6112de6119ae565b73ffffffffffffffffffffffffffffffffffffffff166112fc61121e565b73ffffffffffffffffffffffffffffffffffffffff1614611352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611349906130b0565b60405180910390fd5b80600a8190555050565b6113a681600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124af90919063ffffffff16565b50565b6113b16119ae565b73ffffffffffffffffffffffffffffffffffffffff166113cf61121e565b73ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906130b0565b60405180910390fd5b81600e8190555080600f819055505050565b5f8060015f6114446119ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590613459565b60405180910390fd5b61151b6115096119ae565b858584611516919061324a565b6119b5565b600191505092915050565b600d5481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61156461155d6119ae565b8484611cc4565b6001905092915050565b600f5481565b61157c6119ae565b73ffffffffffffffffffffffffffffffffffffffff1661159a61121e565b73ffffffffffffffffffffffffffffffffffffffff16146115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e7906130b0565b60405180910390fd5b5f5b815181101561167d57600160115f84848151811061161357611612613477565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611675906134a4565b9150506115f2565b5050565b600c5481565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61172e6119ae565b73ffffffffffffffffffffffffffffffffffffffff1661174c61121e565b73ffffffffffffffffffffffffffffffffffffffff16146117a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611799906130b0565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6117c76119ae565b73ffffffffffffffffffffffffffffffffffffffff166117e561121e565b73ffffffffffffffffffffffffffffffffffffffff161461183b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611832906130b0565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61189b6119ae565b73ffffffffffffffffffffffffffffffffffffffff166118b961121e565b73ffffffffffffffffffffffffffffffffffffffff161461190f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611906906130b0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361197d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119749061355b565b60405180910390fd5b6119868161259f565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a906135e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8890613677565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b6b91906129bb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdd906136df565b60405180910390fd5b611bf15f8383612662565b8060025f828254611c0291906130fb565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611c5491906130fb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb891906129bb565b60405180910390a35050565b5f8111611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd9061376d565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611da4575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906137d5565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e81575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e9a5750600760149054906101000a900460ff16155b1561205b57600760169054906101000a900460ff16611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee59061383d565b60405180910390fd5b43600954600854611eff91906130fb565b111561205a5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611faf57600160115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461205957600160115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5b5b5f600760149054906101000a900460ff16806120bd575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061210e575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561211b575f90506121ae565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612190576064600f548361217f919061327d565b61218991906132eb565b90506121ad565b6064600e54836121a0919061327d565b6121aa91906132eb565b90505b5b600760159054906101000a900460ff1680156121d75750600760149054906101000a900460ff16155b8015612230575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561223b57505f81115b1561224957612248612667565b5b61225f8484838561225a919061324a565b612730565b5f81111561227357612272843083612730565b5b50505050565b5f600267ffffffffffffffff81111561229557612294612d41565b5b6040519080825280602002602001820160405280156122c35781602001602082028036833780820191505090505b50905030815f815181106122da576122d9613477565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561237e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a2919061386f565b816001815181106123b6576123b5613477565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061241c3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119b5565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161247e95949392919061398a565b5f604051808303815f87803b158015612495575f80fd5b505af11580156124a7573d5f803e3d5ffd5b505050505050565b804710156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990613a2c565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161251790613a77565b5f6040518083038185875af1925050503d805f8114612551576040519150601f19603f3d011682016040523d82523d5f602084013e612556565b606091505b505090508061259a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259190613afb565b60405180910390fd5b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b600760149054906101000a900460ff1661272e576001600760146101000a81548160ff0219169083151502179055505f6126a030610ecf565b9050600a548110612712575f8190506126b881612279565b5f4790505f81111561270f5761270e81600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124af90919063ffffffff16565b5b50505b505f600760146101000a81548160ff0219169083151502179055505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361279e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279590613b89565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361280c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280390613c17565b60405180910390fd5b612817838383612662565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561289a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289190613ca5565b60405180910390fd5b81816128a6919061324a565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461293191906130fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161299591906129bb565b60405180910390a350505050565b5f819050919050565b6129b5816129a3565b82525050565b5f6020820190506129ce5f8301846129ac565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a0b5780820151818401526020810190506129f0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a30826129d4565b612a3a81856129de565b9350612a4a8185602086016129ee565b612a5381612a16565b840191505092915050565b5f6020820190508181035f830152612a768184612a26565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ab882612a8f565b9050919050565b612ac881612aae565b8114612ad2575f80fd5b50565b5f81359050612ae381612abf565b92915050565b612af2816129a3565b8114612afc575f80fd5b50565b5f81359050612b0d81612ae9565b92915050565b5f8060408385031215612b2957612b28612a87565b5b5f612b3685828601612ad5565b9250506020612b4785828601612aff565b9150509250929050565b5f8115159050919050565b612b6581612b51565b82525050565b5f602082019050612b7e5f830184612b5c565b92915050565b5f60208284031215612b9957612b98612a87565b5b5f612ba684828501612aff565b91505092915050565b5f805f60608486031215612bc657612bc5612a87565b5b5f612bd386828701612ad5565b9350506020612be486828701612ad5565b9250506040612bf586828701612aff565b9150509250925092565b612c0881612aae565b82525050565b5f602082019050612c215f830184612bff565b92915050565b5f60ff82169050919050565b612c3c81612c27565b82525050565b5f602082019050612c555f830184612c33565b92915050565b5f612c6582612aae565b9050919050565b612c7581612c5b565b8114612c7f575f80fd5b50565b5f81359050612c9081612c6c565b92915050565b5f8060408385031215612cac57612cab612a87565b5b5f612cb985828601612c82565b9250506020612cca85828601612ad5565b9150509250929050565b5f8060408385031215612cea57612ce9612a87565b5b5f612cf785828601612aff565b9250506020612d0885828601612aff565b9150509250929050565b5f60208284031215612d2757612d26612a87565b5b5f612d3484828501612ad5565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d7782612a16565b810181811067ffffffffffffffff82111715612d9657612d95612d41565b5b80604052505050565b5f612da8612a7e565b9050612db48282612d6e565b919050565b5f67ffffffffffffffff821115612dd357612dd2612d41565b5b602082029050602081019050919050565b5f80fd5b5f612dfa612df584612db9565b612d9f565b90508083825260208201905060208402830185811115612e1d57612e1c612de4565b5b835b81811015612e465780612e328882612ad5565b845260208401935050602081019050612e1f565b5050509392505050565b5f82601f830112612e6457612e63612d3d565b5b8135612e74848260208601612de8565b91505092915050565b5f60208284031215612e9257612e91612a87565b5b5f82013567ffffffffffffffff811115612eaf57612eae612a8b565b5b612ebb84828501612e50565b91505092915050565b5f8060408385031215612eda57612ed9612a87565b5b5f612ee785828601612ad5565b9250506020612ef885828601612ad5565b9150509250929050565b612f0b81612b51565b8114612f15575f80fd5b50565b5f81359050612f2681612f02565b92915050565b5f60208284031215612f4157612f40612a87565b5b5f612f4e84828501612f18565b91505092915050565b5f8060408385031215612f6d57612f6c612a87565b5b5f612f7a85828601612ad5565b9250506020612f8b85828601612f18565b9150509250929050565b5f819050919050565b5f612fb8612fb3612fae84612a8f565b612f95565b612a8f565b9050919050565b5f612fc982612f9e565b9050919050565b5f612fda82612fbf565b9050919050565b612fea81612fd0565b82525050565b5f6020820190506130035f830184612fe1565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061304d57607f821691505b6020821081036130605761305f613009565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61309a6020836129de565b91506130a582613066565b602082019050919050565b5f6020820190508181035f8301526130c78161308e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613105826129a3565b9150613110836129a3565b9250828201905080821115613128576131276130ce565b5b92915050565b7f4552524f523a2063616e6e6f74206d696e74206d6f7265207468616e20746f745f8201527f616c20737570706c790000000000000000000000000000000000000000000000602082015250565b5f6131886029836129de565b91506131938261312e565b604082019050919050565b5f6020820190508181035f8301526131b58161317c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6132166028836129de565b9150613221826131bc565b604082019050919050565b5f6020820190508181035f8301526132438161320a565b9050919050565b5f613254826129a3565b915061325f836129a3565b9250828203905081811115613277576132766130ce565b5b92915050565b5f613287826129a3565b9150613292836129a3565b92508282026132a0816129a3565b915082820484148315176132b7576132b66130ce565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132f5826129a3565b9150613300836129a3565b9250826133105761330f6132be565b5b828204905092915050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f61334f6016836129de565b915061335a8261331b565b602082019050919050565b5f6020820190508181035f83015261337c81613343565b9050919050565b5f6040820190506133965f830185612bff565b6133a360208301846129ac565b9392505050565b5f815190506133b881612f02565b92915050565b5f602082840312156133d3576133d2612a87565b5b5f6133e0848285016133aa565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6134436025836129de565b915061344e826133e9565b604082019050919050565b5f6020820190508181035f83015261347081613437565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6134ae826129a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134e0576134df6130ce565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135456026836129de565b9150613550826134eb565b604082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6135d36024836129de565b91506135de82613579565b604082019050919050565b5f6020820190508181035f830152613600816135c7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136616022836129de565b915061366c82613607565b604082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6136c9601f836129de565b91506136d482613695565b602082019050919050565b5f6020820190508181035f8301526136f6816136bd565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137576029836129de565b9150613762826136fd565b604082019050919050565b5f6020820190508181035f8301526137848161374b565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f6137bf6019836129de565b91506137ca8261378b565b602082019050919050565b5f6020820190508181035f8301526137ec816137b3565b9050919050565b7f54726164696e67206e6f742061637469766520796574000000000000000000005f82015250565b5f6138276016836129de565b9150613832826137f3565b602082019050919050565b5f6020820190508181035f8301526138548161381b565b9050919050565b5f8151905061386981612abf565b92915050565b5f6020828403121561388457613883612a87565b5b5f6138918482850161385b565b91505092915050565b5f819050919050565b5f6138bd6138b86138b38461389a565b612f95565b6129a3565b9050919050565b6138cd816138a3565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61390581612aae565b82525050565b5f61391683836138fc565b60208301905092915050565b5f602082019050919050565b5f613938826138d3565b61394281856138dd565b935061394d836138ed565b805f5b8381101561397d578151613964888261390b565b975061396f83613922565b925050600181019050613950565b5085935050505092915050565b5f60a08201905061399d5f8301886129ac565b6139aa60208301876138c4565b81810360408301526139bc818661392e565b90506139cb6060830185612bff565b6139d860808301846129ac565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613a16601d836129de565b9150613a21826139e2565b602082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b5f81905092915050565b50565b5f613a625f83613a4a565b9150613a6d82613a54565b5f82019050919050565b5f613a8182613a57565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f613ae5603a836129de565b9150613af082613a8b565b604082019050919050565b5f6020820190508181035f830152613b1281613ad9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b736025836129de565b9150613b7e82613b19565b604082019050919050565b5f6020820190508181035f830152613ba081613b67565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c016023836129de565b9150613c0c82613ba7565b604082019050919050565b5f6020820190508181035f830152613c2e81613bf5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c8f6026836129de565b9150613c9a82613c35565b604082019050919050565b5f6020820190508181035f830152613cbc81613c83565b905091905056fea2646970667358221220f37f93ab8f702908ab749ebd41b986f717d52e25770bbeb82120c351732ca87664736f6c63430008140033

Deployed Bytecode Sourcemap

7796:5649:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8098:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1983:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2897:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2304:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11445:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3074:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8025:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8133:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2203:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3504:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12263:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7990:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8230:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8060:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12986:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7960:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2420:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6827:94;;;;;;;;;;;;;:::i;:::-;;12152:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11681:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12730:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6604:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2091:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11327:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12873:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12009:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3727:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8195:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7904:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2555:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8262:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12409:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8164:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8297:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2738:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11226:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12588:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6929:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7876:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8098:28;;;;:::o;1983:100::-;2037:13;2070:5;2063:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1983:100;:::o;2897:169::-;2980:4;2997:39;3006:12;:10;:12::i;:::-;3020:7;3029:6;2997:8;:39::i;:::-;3054:4;3047:11;;2897:169;;;;:::o;2304:108::-;2365:7;2392:12;;2385:19;;2304:108;:::o;11445:228::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11547:9:::1;;11537:6;11521:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:35;;11513:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11626:6;11613:9;;:19;;;;;;;:::i;:::-;;;;;;;;11643:22;11649:7;:5;:7::i;:::-;11658:6;11643:5;:22::i;:::-;11445:228:::0;:::o;3074:422::-;3180:4;3197:36;3207:6;3215:9;3226:6;3197:9;:36::i;:::-;3246:24;3273:11;:19;3285:6;3273:19;;;;;;;;;;;;;;;:33;3293:12;:10;:12::i;:::-;3273:33;;;;;;;;;;;;;;;;3246:60;;3345:6;3325:16;:26;;3317:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3407:57;3416:6;3424:12;:10;:12::i;:::-;3457:6;3438:16;:25;;;;:::i;:::-;3407:8;:57::i;:::-;3484:4;3477:11;;;3074:422;;;;;:::o;8025:28::-;;;;:::o;8133:24::-;;;;;;;;;;;;;:::o;2203:93::-;2261:5;2286:2;2279:9;;2203:93;:::o;3504:215::-;3592:4;3609:80;3618:12;:10;:12::i;:::-;3632:7;3678:10;3641:11;:25;3653:12;:10;:12::i;:::-;3641:25;;;;;;;;;;;;;;;:34;3667:7;3641:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3609:8;:80::i;:::-;3707:4;3700:11;;3504:215;;;;:::o;12263:138::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12363:7:::1;12354:6;;:16;;;;;;;;;;;;;;;;;;12388:5;12381:4;;:12;;;;;;;;;;;;;;;;;;12263:138:::0;;:::o;7990:26::-;;;;;;;;;;;;;:::o;8230:25::-;;;;:::o;8060:29::-;;;;:::o;12986:400::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13081:19:::1;13103:21;13081:43;;13135:24;13152:6;13135:16;:24::i;:::-;13170:18;13215:11;13191:21;:35;;;;:::i;:::-;13170:56;;13263:1;13241:19;:23;13237:142;;;13281:86;13346:19;13323;13310:10;:32;;;;:::i;:::-;:56;;;;:::i;:::-;13289:9;;;;;;;;;;;13281:28;;;;:86;;;;:::i;:::-;13237:142;13070:316;;12986:400:::0;;:::o;7960:23::-;;;;;;;;;;;;;:::o;2420:127::-;2494:7;2521:9;:18;2531:7;2521:18;;;;;;;;;;;;;;;;2514:25;;2420:127;;;:::o;6827:94::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6892:21:::1;6910:1;6892:9;:21::i;:::-;6827:94::o:0;12152:103::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12238:9:::1;12226;;:21;;;;;;;;;;;;;;;;;;12152:103:::0;:::o;11681:320::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11768:14:::1;;;;;;;;;;;11767:15;11759:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11829:2;11820:6;:11;;;;11852:2;11842:7;:12;;;;11882:4;11865:14;;:21;;;;;;;;;;;;;;;;;;11911:4;11897:11;;:18;;;;;;;;;;;;;;;;;;11942:12;11926:13;:28;;;;11978:15;11965:10;:28;;;;11681:320:::0;:::o;12730:135::-;12816:12;12809:29;;;12839:9;;;;;;;;;;;12850:6;12809:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12730:135;;:::o;6604:87::-;6650:7;6677:6;;;;;;;;;;;6670:13;;6604:87;:::o;2091:104::-;2147:13;2180:7;2173:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:104;:::o;11327:110::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11419:10:::1;11403:13;:26;;;;11327:110:::0;:::o;12873:105::-;12931:39;12960:9;12939;;;;;;;;;;;12931:28;;;;:39;;;;:::i;:::-;12873:105;:::o;12009:135::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12100:7:::1;12091:6;:16;;;;12128:8;12118:7;:18;;;;12009:135:::0;;:::o;3727:377::-;3820:4;3837:24;3864:11;:25;3876:12;:10;:12::i;:::-;3864:25;;;;;;;;;;;;;;;:34;3890:7;3864:34;;;;;;;;;;;;;;;;3837:61;;3937:15;3917:16;:35;;3909:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4005:67;4014:12;:10;:12::i;:::-;4028:7;4056:15;4037:16;:34;;;;:::i;:::-;4005:8;:67::i;:::-;4092:4;4085:11;;;3727:377;;;;:::o;8195:24::-;;;;:::o;7904:19::-;;;;;;;;;;;;;:::o;2555:175::-;2641:4;2658:42;2668:12;:10;:12::i;:::-;2682:9;2693:6;2658:9;:42::i;:::-;2718:4;2711:11;;2555:175;;;;:::o;8262:26::-;;;;:::o;12409:171::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12484:9:::1;12479:94;12503:6;:13;12499:1;:17;12479:94;;;12557:4;12538:5;:16;12544:6;12551:1;12544:9;;;;;;;;:::i;:::-;;;;;;;;12538:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12518:3;;;;;:::i;:::-;;;;12479:94;;;;12409:171:::0;:::o;8164:24::-;;;;:::o;8297:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2738:151::-;2827:7;2854:11;:18;2866:5;2854:18;;;;;;;;;;;;;;;:27;2873:7;2854:27;;;;;;;;;;;;;;;;2847:34;;2738:151;;;;:::o;11226:93::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11306:5:::1;11292:11;;:19;;;;;;;;;;;;;;;;;;11226:93:::0;:::o;12588:134::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12709:5:::1;12680:16;:26;12697:8;12680:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12588:134:::0;;:::o;6929:192::-;6750:12;:10;:12::i;:::-;6739:23;;:7;:5;:7::i;:::-;:23;;;6731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7038:1:::1;7018:22;;:8;:22;;::::0;7010:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7094:19;7104:8;7094:9;:19::i;:::-;6929:192:::0;:::o;7876:21::-;;;;;;;;;;;;;:::o;430:98::-;483:7;510:10;503:17;;430:98;:::o;5572:346::-;5691:1;5674:19;;:5;:19;;;5666:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5772:1;5753:21;;:7;:21;;;5745:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5856:6;5826:11;:18;5838:5;5826:18;;;;;;;;;;;;;;;:27;5845:7;5826:27;;;;;;;;;;;;;;;:36;;;;5894:7;5878:32;;5887:5;5878:32;;;5903:6;5878:32;;;;;;:::i;:::-;;;;;;;;5572:346;;;:::o;4724:338::-;4827:1;4808:21;;:7;:21;;;4800:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4878:49;4907:1;4911:7;4920:6;4878:20;:49::i;:::-;4956:6;4940:12;;:22;;;;;;;:::i;:::-;;;;;;;;4995:6;4973:9;:18;4983:7;4973:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;5038:7;5017:37;;5034:1;5017:37;;;5047:6;5017:37;;;;;;:::i;:::-;;;;;;;;4724:338;;:::o;9267:1108::-;9383:1;9374:6;:10;9366:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9450:5;:13;9456:6;9450:13;;;;;;;;;;;;;;;;;;;;;;;;;9449:14;:35;;;;;9468:5;:16;9474:9;9468:16;;;;;;;;;;;;;;;;;;;;;;;;;9467:17;9449:35;9441:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9532:16;:24;9549:6;9532:24;;;;;;;;;;;;;;;;;;;;;;;;;9531:25;:57;;;;;9561:16;:27;9578:9;9561:27;;;;;;;;;;;;;;;;;;;;;;;;;9560:28;9531:57;:70;;;;;9593:8;;;;;;;;;;;9592:9;9531:70;9527:353;;;9626:14;;;;;;;;;;;9618:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9715:12;9702:10;;9686:13;;:26;;;;:::i;:::-;:41;9682:187;;;9765:4;;;;;;;;;;;9752:17;;:9;:17;;;9748:46;;9790:4;9771:5;:16;9777:9;9771:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;9748:46;9827:4;;;;;;;;;;;9817:14;;:6;:14;;;9813:40;;9849:4;9833:5;:13;9839:6;9833:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;9813:40;9682:187;9527:353;9892:11;9920:8;;;;;;;;;;;:36;;;;9932:16;:24;9949:6;9932:24;;;;;;;;;;;;;;;;;;;;;;;;;9920:36;:67;;;;9960:16;:27;9977:9;9960:27;;;;;;;;;;;;;;;;;;;;;;;;;9920:67;9916:238;;;10010:1;10004:7;;9916:238;;;10061:4;;;;;;;;;;;10048:17;;:9;:17;;;10044:98;;10092:3;10082:7;;10073:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10067:28;;10044:98;;;10139:3;10130:6;;10121;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10115:27;;10044:98;9916:238;10170:11;;;;;;;;;;;:24;;;;;10186:8;;;;;;;;;;;10185:9;10170:24;:42;;;;;10208:4;;;;;;;;;;;10198:14;;:6;:14;;;;10170:42;:53;;;;;10222:1;10216:3;:7;10170:53;10166:73;;;10226:13;:11;:13::i;:::-;10166:73;10252:48;10268:6;10276:9;10296:3;10287:6;:12;;;;:::i;:::-;10252:15;:48::i;:::-;10321:1;10315:3;:7;10311:56;;;10324:43;10340:6;10356:4;10363:3;10324:15;:43::i;:::-;10311:56;9355:1020;9267:1108;;;:::o;10820:398::-;10886:21;10924:1;10910:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10886:40;;10955:4;10937;10942:1;10937:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10981:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10971:4;10976:1;10971:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11007:53;11024:4;11039:6;;;;;;;;;;;11048:11;11007:8;:53::i;:::-;11099:6;;;;;;;;;;;:57;;;11157:11;11170:1;11173:4;11187;11194:15;11099:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10875:343;10820:398;:::o;6048:318::-;6163:6;6138:21;:31;;6130:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6217:12;6234:9;:14;;6257:6;6234:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6216:53;;;6288:7;6280:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6119:247;6048:318;;:::o;7129:173::-;7185:16;7204:6;;;;;;;;;;;7185:25;;7230:8;7221:6;;:17;;;;;;;;;;;;;;;;;;7285:8;7254:40;;7275:8;7254:40;;;;;;;;;;;;7174:128;7129:173;:::o;5926:92::-;;;;:::o;10383:429::-;8437:8;;;;;;;;;;;8432:104;;8473:4;8462:8;;:15;;;;;;;;;;;;;;;;;;10432:23:::1;10458:24;10476:4;10458:9;:24::i;:::-;10432:50;;10516:13;;10497:15;:32;10493:312;;10546:14;10563:15;10546:32;;10595:24;10612:6;10595:16;:24::i;:::-;10636:20;10659:21;10636:44;;10714:1;10699:12;:16;10695:99;;;10736:42;10765:12;10744:9;;;;;;;;;;;10736:28;;;;:42;;;;:::i;:::-;10695:99;10531:274;;10493:312;10421:391;8519:5:::0;8508:8;;:16;;;;;;;;;;;;;;;;;;8432:104;10383:429::o;4112:604::-;4236:1;4218:20;;:6;:20;;;4210:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4320:1;4299:23;;:9;:23;;;4291:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4375:47;4396:6;4404:9;4415:6;4375:20;:47::i;:::-;4435:21;4459:9;:17;4469:6;4459:17;;;;;;;;;;;;;;;;4435:41;;4512:6;4495:13;:23;;4487:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4608:6;4592:13;:22;;;;:::i;:::-;4572:9;:17;4582:6;4572:17;;;;;;;;;;;;;;;:42;;;;4649:6;4625:9;:20;4635:9;4625:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4690:9;4673:35;;4682:6;4673:35;;;4701:6;4673:35;;;;;;:::i;:::-;;;;;;;;4199:517;4112:604;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:118::-;4845:24;4863:5;4845:24;:::i;:::-;4840:3;4833:37;4758:118;;:::o;4882:222::-;4975:4;5013:2;5002:9;4998:18;4990:26;;5026:71;5094:1;5083:9;5079:17;5070:6;5026:71;:::i;:::-;4882:222;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:111::-;5592:7;5621:24;5639:5;5621:24;:::i;:::-;5610:35;;5540:111;;;:::o;5657:152::-;5745:39;5778:5;5745:39;:::i;:::-;5738:5;5735:50;5725:78;;5799:1;5796;5789:12;5725:78;5657:152;:::o;5815:169::-;5876:5;5914:6;5901:20;5892:29;;5930:48;5972:5;5930:48;:::i;:::-;5815:169;;;;:::o;5990:504::-;6073:6;6081;6130:2;6118:9;6109:7;6105:23;6101:32;6098:119;;;6136:79;;:::i;:::-;6098:119;6256:1;6281:68;6341:7;6332:6;6321:9;6317:22;6281:68;:::i;:::-;6271:78;;6227:132;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;5990:504;;;;;:::o;6500:474::-;6568:6;6576;6625:2;6613:9;6604:7;6600:23;6596:32;6593:119;;;6631:79;;:::i;:::-;6593:119;6751:1;6776:53;6821:7;6812:6;6801:9;6797:22;6776:53;:::i;:::-;6766:63;;6722:117;6878:2;6904:53;6949:7;6940:6;6929:9;6925:22;6904:53;:::i;:::-;6894:63;;6849:118;6500:474;;;;;:::o;6980:329::-;7039:6;7088:2;7076:9;7067:7;7063:23;7059:32;7056:119;;;7094:79;;:::i;:::-;7056:119;7214:1;7239:53;7284:7;7275:6;7264:9;7260:22;7239:53;:::i;:::-;7229:63;;7185:117;6980:329;;;;:::o;7315:117::-;7424:1;7421;7414:12;7438:180;7486:77;7483:1;7476:88;7583:4;7580:1;7573:15;7607:4;7604:1;7597:15;7624:281;7707:27;7729:4;7707:27;:::i;:::-;7699:6;7695:40;7837:6;7825:10;7822:22;7801:18;7789:10;7786:34;7783:62;7780:88;;;7848:18;;:::i;:::-;7780:88;7888:10;7884:2;7877:22;7667:238;7624:281;;:::o;7911:129::-;7945:6;7972:20;;:::i;:::-;7962:30;;8001:33;8029:4;8021:6;8001:33;:::i;:::-;7911:129;;;:::o;8046:311::-;8123:4;8213:18;8205:6;8202:30;8199:56;;;8235:18;;:::i;:::-;8199:56;8285:4;8277:6;8273:17;8265:25;;8345:4;8339;8335:15;8327:23;;8046:311;;;:::o;8363:117::-;8472:1;8469;8462:12;8503:710;8599:5;8624:81;8640:64;8697:6;8640:64;:::i;:::-;8624:81;:::i;:::-;8615:90;;8725:5;8754:6;8747:5;8740:21;8788:4;8781:5;8777:16;8770:23;;8841:4;8833:6;8829:17;8821:6;8817:30;8870:3;8862:6;8859:15;8856:122;;;8889:79;;:::i;:::-;8856:122;9004:6;8987:220;9021:6;9016:3;9013:15;8987:220;;;9096:3;9125:37;9158:3;9146:10;9125:37;:::i;:::-;9120:3;9113:50;9192:4;9187:3;9183:14;9176:21;;9063:144;9047:4;9042:3;9038:14;9031:21;;8987:220;;;8991:21;8605:608;;8503:710;;;;;:::o;9236:370::-;9307:5;9356:3;9349:4;9341:6;9337:17;9333:27;9323:122;;9364:79;;:::i;:::-;9323:122;9481:6;9468:20;9506:94;9596:3;9588:6;9581:4;9573:6;9569:17;9506:94;:::i;:::-;9497:103;;9313:293;9236:370;;;;:::o;9612:539::-;9696:6;9745:2;9733:9;9724:7;9720:23;9716:32;9713:119;;;9751:79;;:::i;:::-;9713:119;9899:1;9888:9;9884:17;9871:31;9929:18;9921:6;9918:30;9915:117;;;9951:79;;:::i;:::-;9915:117;10056:78;10126:7;10117:6;10106:9;10102:22;10056:78;:::i;:::-;10046:88;;9842:302;9612:539;;;;:::o;10157:474::-;10225:6;10233;10282:2;10270:9;10261:7;10257:23;10253:32;10250:119;;;10288:79;;:::i;:::-;10250:119;10408:1;10433:53;10478:7;10469:6;10458:9;10454:22;10433:53;:::i;:::-;10423:63;;10379:117;10535:2;10561:53;10606:7;10597:6;10586:9;10582:22;10561:53;:::i;:::-;10551:63;;10506:118;10157:474;;;;;:::o;10637:116::-;10707:21;10722:5;10707:21;:::i;:::-;10700:5;10697:32;10687:60;;10743:1;10740;10733:12;10687:60;10637:116;:::o;10759:133::-;10802:5;10840:6;10827:20;10818:29;;10856:30;10880:5;10856:30;:::i;:::-;10759:133;;;;:::o;10898:323::-;10954:6;11003:2;10991:9;10982:7;10978:23;10974:32;10971:119;;;11009:79;;:::i;:::-;10971:119;11129:1;11154:50;11196:7;11187:6;11176:9;11172:22;11154:50;:::i;:::-;11144:60;;11100:114;10898:323;;;;:::o;11227:468::-;11292:6;11300;11349:2;11337:9;11328:7;11324:23;11320:32;11317:119;;;11355:79;;:::i;:::-;11317:119;11475:1;11500:53;11545:7;11536:6;11525:9;11521:22;11500:53;:::i;:::-;11490:63;;11446:117;11602:2;11628:50;11670:7;11661:6;11650:9;11646:22;11628:50;:::i;:::-;11618:60;;11573:115;11227:468;;;;;:::o;11701:60::-;11729:3;11750:5;11743:12;;11701:60;;;:::o;11767:142::-;11817:9;11850:53;11868:34;11877:24;11895:5;11877:24;:::i;:::-;11868:34;:::i;:::-;11850:53;:::i;:::-;11837:66;;11767:142;;;:::o;11915:126::-;11965:9;11998:37;12029:5;11998:37;:::i;:::-;11985:50;;11915:126;;;:::o;12047:141::-;12112:9;12145:37;12176:5;12145:37;:::i;:::-;12132:50;;12047:141;;;:::o;12194:161::-;12296:52;12342:5;12296:52;:::i;:::-;12291:3;12284:65;12194:161;;:::o;12361:252::-;12469:4;12507:2;12496:9;12492:18;12484:26;;12520:86;12603:1;12592:9;12588:17;12579:6;12520:86;:::i;:::-;12361:252;;;;:::o;12619:180::-;12667:77;12664:1;12657:88;12764:4;12761:1;12754:15;12788:4;12785:1;12778:15;12805:320;12849:6;12886:1;12880:4;12876:12;12866:22;;12933:1;12927:4;12923:12;12954:18;12944:81;;13010:4;13002:6;12998:17;12988:27;;12944:81;13072:2;13064:6;13061:14;13041:18;13038:38;13035:84;;13091:18;;:::i;:::-;13035:84;12856:269;12805:320;;;:::o;13131:182::-;13271:34;13267:1;13259:6;13255:14;13248:58;13131:182;:::o;13319:366::-;13461:3;13482:67;13546:2;13541:3;13482:67;:::i;:::-;13475:74;;13558:93;13647:3;13558:93;:::i;:::-;13676:2;13671:3;13667:12;13660:19;;13319:366;;;:::o;13691:419::-;13857:4;13895:2;13884:9;13880:18;13872:26;;13944:9;13938:4;13934:20;13930:1;13919:9;13915:17;13908:47;13972:131;14098:4;13972:131;:::i;:::-;13964:139;;13691:419;;;:::o;14116:180::-;14164:77;14161:1;14154:88;14261:4;14258:1;14251:15;14285:4;14282:1;14275:15;14302:191;14342:3;14361:20;14379:1;14361:20;:::i;:::-;14356:25;;14395:20;14413:1;14395:20;:::i;:::-;14390:25;;14438:1;14435;14431:9;14424:16;;14459:3;14456:1;14453:10;14450:36;;;14466:18;;:::i;:::-;14450:36;14302:191;;;;:::o;14499:228::-;14639:34;14635:1;14627:6;14623:14;14616:58;14708:11;14703:2;14695:6;14691:15;14684:36;14499:228;:::o;14733:366::-;14875:3;14896:67;14960:2;14955:3;14896:67;:::i;:::-;14889:74;;14972:93;15061:3;14972:93;:::i;:::-;15090:2;15085:3;15081:12;15074:19;;14733:366;;;:::o;15105:419::-;15271:4;15309:2;15298:9;15294:18;15286:26;;15358:9;15352:4;15348:20;15344:1;15333:9;15329:17;15322:47;15386:131;15512:4;15386:131;:::i;:::-;15378:139;;15105:419;;;:::o;15530:227::-;15670:34;15666:1;15658:6;15654:14;15647:58;15739:10;15734:2;15726:6;15722:15;15715:35;15530:227;:::o;15763:366::-;15905:3;15926:67;15990:2;15985:3;15926:67;:::i;:::-;15919:74;;16002:93;16091:3;16002:93;:::i;:::-;16120:2;16115:3;16111:12;16104:19;;15763:366;;;:::o;16135:419::-;16301:4;16339:2;16328:9;16324:18;16316:26;;16388:9;16382:4;16378:20;16374:1;16363:9;16359:17;16352:47;16416:131;16542:4;16416:131;:::i;:::-;16408:139;;16135:419;;;:::o;16560:194::-;16600:4;16620:20;16638:1;16620:20;:::i;:::-;16615:25;;16654:20;16672:1;16654:20;:::i;:::-;16649:25;;16698:1;16695;16691:9;16683:17;;16722:1;16716:4;16713:11;16710:37;;;16727:18;;:::i;:::-;16710:37;16560:194;;;;:::o;16760:410::-;16800:7;16823:20;16841:1;16823:20;:::i;:::-;16818:25;;16857:20;16875:1;16857:20;:::i;:::-;16852:25;;16912:1;16909;16905:9;16934:30;16952:11;16934:30;:::i;:::-;16923:41;;17113:1;17104:7;17100:15;17097:1;17094:22;17074:1;17067:9;17047:83;17024:139;;17143:18;;:::i;:::-;17024:139;16808:362;16760:410;;;;:::o;17176:180::-;17224:77;17221:1;17214:88;17321:4;17318:1;17311:15;17345:4;17342:1;17335:15;17362:185;17402:1;17419:20;17437:1;17419:20;:::i;:::-;17414:25;;17453:20;17471:1;17453:20;:::i;:::-;17448:25;;17492:1;17482:35;;17497:18;;:::i;:::-;17482:35;17539:1;17536;17532:9;17527:14;;17362:185;;;;:::o;17553:172::-;17693:24;17689:1;17681:6;17677:14;17670:48;17553:172;:::o;17731:366::-;17873:3;17894:67;17958:2;17953:3;17894:67;:::i;:::-;17887:74;;17970:93;18059:3;17970:93;:::i;:::-;18088:2;18083:3;18079:12;18072:19;;17731:366;;;:::o;18103:419::-;18269:4;18307:2;18296:9;18292:18;18284:26;;18356:9;18350:4;18346:20;18342:1;18331:9;18327:17;18320:47;18384:131;18510:4;18384:131;:::i;:::-;18376:139;;18103:419;;;:::o;18528:332::-;18649:4;18687:2;18676:9;18672:18;18664:26;;18700:71;18768:1;18757:9;18753:17;18744:6;18700:71;:::i;:::-;18781:72;18849:2;18838:9;18834:18;18825:6;18781:72;:::i;:::-;18528:332;;;;;:::o;18866:137::-;18920:5;18951:6;18945:13;18936:22;;18967:30;18991:5;18967:30;:::i;:::-;18866:137;;;;:::o;19009:345::-;19076:6;19125:2;19113:9;19104:7;19100:23;19096:32;19093:119;;;19131:79;;:::i;:::-;19093:119;19251:1;19276:61;19329:7;19320:6;19309:9;19305:22;19276:61;:::i;:::-;19266:71;;19222:125;19009:345;;;;:::o;19360:224::-;19500:34;19496:1;19488:6;19484:14;19477:58;19569:7;19564:2;19556:6;19552:15;19545:32;19360:224;:::o;19590:366::-;19732:3;19753:67;19817:2;19812:3;19753:67;:::i;:::-;19746:74;;19829:93;19918:3;19829:93;:::i;:::-;19947:2;19942:3;19938:12;19931:19;;19590:366;;;:::o;19962:419::-;20128:4;20166:2;20155:9;20151:18;20143:26;;20215:9;20209:4;20205:20;20201:1;20190:9;20186:17;20179:47;20243:131;20369:4;20243:131;:::i;:::-;20235:139;;19962:419;;;:::o;20387:180::-;20435:77;20432:1;20425:88;20532:4;20529:1;20522:15;20556:4;20553:1;20546:15;20573:233;20612:3;20635:24;20653:5;20635:24;:::i;:::-;20626:33;;20681:66;20674:5;20671:77;20668:103;;20751:18;;:::i;:::-;20668:103;20798:1;20791:5;20787:13;20780:20;;20573:233;;;:::o;20812:225::-;20952:34;20948:1;20940:6;20936:14;20929:58;21021:8;21016:2;21008:6;21004:15;20997:33;20812:225;:::o;21043:366::-;21185:3;21206:67;21270:2;21265:3;21206:67;:::i;:::-;21199:74;;21282:93;21371:3;21282:93;:::i;:::-;21400:2;21395:3;21391:12;21384:19;;21043:366;;;:::o;21415:419::-;21581:4;21619:2;21608:9;21604:18;21596:26;;21668:9;21662:4;21658:20;21654:1;21643:9;21639:17;21632:47;21696:131;21822:4;21696:131;:::i;:::-;21688:139;;21415:419;;;:::o;21840:223::-;21980:34;21976:1;21968:6;21964:14;21957:58;22049:6;22044:2;22036:6;22032:15;22025:31;21840:223;:::o;22069:366::-;22211:3;22232:67;22296:2;22291:3;22232:67;:::i;:::-;22225:74;;22308:93;22397:3;22308:93;:::i;:::-;22426:2;22421:3;22417:12;22410:19;;22069:366;;;:::o;22441:419::-;22607:4;22645:2;22634:9;22630:18;22622:26;;22694:9;22688:4;22684:20;22680:1;22669:9;22665:17;22658:47;22722:131;22848:4;22722:131;:::i;:::-;22714:139;;22441:419;;;:::o;22866:221::-;23006:34;23002:1;22994:6;22990:14;22983:58;23075:4;23070:2;23062:6;23058:15;23051:29;22866:221;:::o;23093:366::-;23235:3;23256:67;23320:2;23315:3;23256:67;:::i;:::-;23249:74;;23332:93;23421:3;23332:93;:::i;:::-;23450:2;23445:3;23441:12;23434:19;;23093:366;;;:::o;23465:419::-;23631:4;23669:2;23658:9;23654:18;23646:26;;23718:9;23712:4;23708:20;23704:1;23693:9;23689:17;23682:47;23746:131;23872:4;23746:131;:::i;:::-;23738:139;;23465:419;;;:::o;23890:181::-;24030:33;24026:1;24018:6;24014:14;24007:57;23890:181;:::o;24077:366::-;24219:3;24240:67;24304:2;24299:3;24240:67;:::i;:::-;24233:74;;24316:93;24405:3;24316:93;:::i;:::-;24434:2;24429:3;24425:12;24418:19;;24077:366;;;:::o;24449:419::-;24615:4;24653:2;24642:9;24638:18;24630:26;;24702:9;24696:4;24692:20;24688:1;24677:9;24673:17;24666:47;24730:131;24856:4;24730:131;:::i;:::-;24722:139;;24449:419;;;:::o;24874:228::-;25014:34;25010:1;25002:6;24998:14;24991:58;25083:11;25078:2;25070:6;25066:15;25059:36;24874:228;:::o;25108:366::-;25250:3;25271:67;25335:2;25330:3;25271:67;:::i;:::-;25264:74;;25347:93;25436:3;25347:93;:::i;:::-;25465:2;25460:3;25456:12;25449:19;;25108:366;;;:::o;25480:419::-;25646:4;25684:2;25673:9;25669:18;25661:26;;25733:9;25727:4;25723:20;25719:1;25708:9;25704:17;25697:47;25761:131;25887:4;25761:131;:::i;:::-;25753:139;;25480:419;;;:::o;25905:175::-;26045:27;26041:1;26033:6;26029:14;26022:51;25905:175;:::o;26086:366::-;26228:3;26249:67;26313:2;26308:3;26249:67;:::i;:::-;26242:74;;26325:93;26414:3;26325:93;:::i;:::-;26443:2;26438:3;26434:12;26427:19;;26086:366;;;:::o;26458:419::-;26624:4;26662:2;26651:9;26647:18;26639:26;;26711:9;26705:4;26701:20;26697:1;26686:9;26682:17;26675:47;26739:131;26865:4;26739:131;:::i;:::-;26731:139;;26458:419;;;:::o;26883:172::-;27023:24;27019:1;27011:6;27007:14;27000:48;26883:172;:::o;27061:366::-;27203:3;27224:67;27288:2;27283:3;27224:67;:::i;:::-;27217:74;;27300:93;27389:3;27300:93;:::i;:::-;27418:2;27413:3;27409:12;27402:19;;27061:366;;;:::o;27433:419::-;27599:4;27637:2;27626:9;27622:18;27614:26;;27686:9;27680:4;27676:20;27672:1;27661:9;27657:17;27650:47;27714:131;27840:4;27714:131;:::i;:::-;27706:139;;27433:419;;;:::o;27858:143::-;27915:5;27946:6;27940:13;27931:22;;27962:33;27989:5;27962:33;:::i;:::-;27858:143;;;;:::o;28007:351::-;28077:6;28126:2;28114:9;28105:7;28101:23;28097:32;28094:119;;;28132:79;;:::i;:::-;28094:119;28252:1;28277:64;28333:7;28324:6;28313:9;28309:22;28277:64;:::i;:::-;28267:74;;28223:128;28007:351;;;;:::o;28364:85::-;28409:7;28438:5;28427:16;;28364:85;;;:::o;28455:158::-;28513:9;28546:61;28564:42;28573:32;28599:5;28573:32;:::i;:::-;28564:42;:::i;:::-;28546:61;:::i;:::-;28533:74;;28455:158;;;:::o;28619:147::-;28714:45;28753:5;28714:45;:::i;:::-;28709:3;28702:58;28619:147;;:::o;28772:114::-;28839:6;28873:5;28867:12;28857:22;;28772:114;;;:::o;28892:184::-;28991:11;29025:6;29020:3;29013:19;29065:4;29060:3;29056:14;29041:29;;28892:184;;;;:::o;29082:132::-;29149:4;29172:3;29164:11;;29202:4;29197:3;29193:14;29185:22;;29082:132;;;:::o;29220:108::-;29297:24;29315:5;29297:24;:::i;:::-;29292:3;29285:37;29220:108;;:::o;29334:179::-;29403:10;29424:46;29466:3;29458:6;29424:46;:::i;:::-;29502:4;29497:3;29493:14;29479:28;;29334:179;;;;:::o;29519:113::-;29589:4;29621;29616:3;29612:14;29604:22;;29519:113;;;:::o;29668:732::-;29787:3;29816:54;29864:5;29816:54;:::i;:::-;29886:86;29965:6;29960:3;29886:86;:::i;:::-;29879:93;;29996:56;30046:5;29996:56;:::i;:::-;30075:7;30106:1;30091:284;30116:6;30113:1;30110:13;30091:284;;;30192:6;30186:13;30219:63;30278:3;30263:13;30219:63;:::i;:::-;30212:70;;30305:60;30358:6;30305:60;:::i;:::-;30295:70;;30151:224;30138:1;30135;30131:9;30126:14;;30091:284;;;30095:14;30391:3;30384:10;;29792:608;;;29668:732;;;;:::o;30406:831::-;30669:4;30707:3;30696:9;30692:19;30684:27;;30721:71;30789:1;30778:9;30774:17;30765:6;30721:71;:::i;:::-;30802:80;30878:2;30867:9;30863:18;30854:6;30802:80;:::i;:::-;30929:9;30923:4;30919:20;30914:2;30903:9;30899:18;30892:48;30957:108;31060:4;31051:6;30957:108;:::i;:::-;30949:116;;31075:72;31143:2;31132:9;31128:18;31119:6;31075:72;:::i;:::-;31157:73;31225:3;31214:9;31210:19;31201:6;31157:73;:::i;:::-;30406:831;;;;;;;;:::o;31243:179::-;31383:31;31379:1;31371:6;31367:14;31360:55;31243:179;:::o;31428:366::-;31570:3;31591:67;31655:2;31650:3;31591:67;:::i;:::-;31584:74;;31667:93;31756:3;31667:93;:::i;:::-;31785:2;31780:3;31776:12;31769:19;;31428:366;;;:::o;31800:419::-;31966:4;32004:2;31993:9;31989:18;31981:26;;32053:9;32047:4;32043:20;32039:1;32028:9;32024:17;32017:47;32081:131;32207:4;32081:131;:::i;:::-;32073:139;;31800:419;;;:::o;32225:147::-;32326:11;32363:3;32348:18;;32225:147;;;;:::o;32378:114::-;;:::o;32498:398::-;32657:3;32678:83;32759:1;32754:3;32678:83;:::i;:::-;32671:90;;32770:93;32859:3;32770:93;:::i;:::-;32888:1;32883:3;32879:11;32872:18;;32498:398;;;:::o;32902:379::-;33086:3;33108:147;33251:3;33108:147;:::i;:::-;33101:154;;33272:3;33265:10;;32902:379;;;:::o;33287:245::-;33427:34;33423:1;33415:6;33411:14;33404:58;33496:28;33491:2;33483:6;33479:15;33472:53;33287:245;:::o;33538:366::-;33680:3;33701:67;33765:2;33760:3;33701:67;:::i;:::-;33694:74;;33777:93;33866:3;33777:93;:::i;:::-;33895:2;33890:3;33886:12;33879:19;;33538:366;;;:::o;33910:419::-;34076:4;34114:2;34103:9;34099:18;34091:26;;34163:9;34157:4;34153:20;34149:1;34138:9;34134:17;34127:47;34191:131;34317:4;34191:131;:::i;:::-;34183:139;;33910:419;;;:::o;34335:224::-;34475:34;34471:1;34463:6;34459:14;34452:58;34544:7;34539:2;34531:6;34527:15;34520:32;34335:224;:::o;34565:366::-;34707:3;34728:67;34792:2;34787:3;34728:67;:::i;:::-;34721:74;;34804:93;34893:3;34804:93;:::i;:::-;34922:2;34917:3;34913:12;34906:19;;34565:366;;;:::o;34937:419::-;35103:4;35141:2;35130:9;35126:18;35118:26;;35190:9;35184:4;35180:20;35176:1;35165:9;35161:17;35154:47;35218:131;35344:4;35218:131;:::i;:::-;35210:139;;34937:419;;;:::o;35362:222::-;35502:34;35498:1;35490:6;35486:14;35479:58;35571:5;35566:2;35558:6;35554:15;35547:30;35362:222;:::o;35590:366::-;35732:3;35753:67;35817:2;35812:3;35753:67;:::i;:::-;35746:74;;35829:93;35918:3;35829:93;:::i;:::-;35947:2;35942:3;35938:12;35931:19;;35590:366;;;:::o;35962:419::-;36128:4;36166:2;36155:9;36151:18;36143:26;;36215:9;36209:4;36205:20;36201:1;36190:9;36186:17;36179:47;36243:131;36369:4;36243:131;:::i;:::-;36235:139;;35962:419;;;:::o;36387:225::-;36527:34;36523:1;36515:6;36511:14;36504:58;36596:8;36591:2;36583:6;36579:15;36572:33;36387:225;:::o;36618:366::-;36760:3;36781:67;36845:2;36840:3;36781:67;:::i;:::-;36774:74;;36857:93;36946:3;36857:93;:::i;:::-;36975:2;36970:3;36966:12;36959:19;;36618:366;;;:::o;36990:419::-;37156:4;37194:2;37183:9;37179:18;37171:26;;37243:9;37237:4;37233:20;37229:1;37218:9;37214:17;37207:47;37271:131;37397:4;37271:131;:::i;:::-;37263:139;;36990:419;;;:::o

Swarm Source

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