ETH Price: $3,406.86 (+2.86%)

Token

FROUBOT (FROBOT)
 

Overview

Max Total Supply

1,000,000,000 FROBOT

Holders

487

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,000,000 FROBOT

Value
$0.00
0xfb47e2e52e6df63e6490a2d3da89819084a53db6
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:
FROUBOT

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 2023-10-16
*/

/*

FrouBot

Website - https://froubot.com
Telegram - https://t.me/froboteth
Twitter (X) - https://x.com/froboteth

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

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

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

contract FROUBOT is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _buyTax=5;
    uint256 private _maxBuyTax=5;
    uint256 private _sellTax=20;
    uint256 private _maxSellTax=20;
    uint256 private _preventSwapBefore=10;
    uint256 public _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"FROUBOT";
    string private constant _symbol = unicode"FROBOT";
    uint256 public _maxTxAmount =   30000000 * 10**_decimals;
    uint256 public _maxWalletSize = 30000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 10000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 10000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(0xe58E4fcBa048219B1e32CE92362E72775d98cD60);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function setTaxes(uint256 buyTax, uint256 sellTax) external onlyOwner {
        _buyTax = buyTax;
        _sellTax = sellTax;
        require(
            _buyTax <= _maxBuyTax &&
            _sellTax <= _maxSellTax,
            "Taxes are high"
        );
    }

    function buytax() public view returns (uint256) {
        return _buyTax;
    }

    function selltax() public view returns (uint256) {
        return _sellTax;
    }

    function uniswapV2PairAddress() public view returns (address) {
        return uniswapV2Pair;
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul(_buyTax).div(100);
            
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            
            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul(_sellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external {
        require(_msgSender()==_taxWallet);
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function limitsToFourPercent() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal*4/100;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external onlyOwner() {
        _buyTax=0;
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        _buyTax=5;
    }

    receive() external payable {}

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance>0){
            swapTokensForEth(contractBalance);
        }
    }

    function manualsend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance>0){
            sendETHToFee(contractETHBalance);
        }
    }

    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }

    function setSwapPrevent(uint256 preventBefore) external onlyOwner() {
        require(preventBefore > 0, "Amount must be greater than 0");
        _preventSwapBefore = preventBefore;
    }

    function setTaxSwapThreshold(uint256 newThreshold) external onlyOwner() {
        require(newThreshold > 0, "Must be greater than 0");
        _taxSwapThreshold= newThreshold;
    }

    function setMaxSwap(uint256 newMaxSwap) external onlyOwner() {
        require(newMaxSwap > 0, "Must be greater than 0");
        _maxTaxSwap= newMaxSwap;
    }

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

    function setMaxWalletPercent(uint256 maxWalletPercent) external onlyOwner() {
        require(maxWalletPercent > 0, "Amount must be greater than 0");
        _maxWalletSize = _tTotal.mul(maxWalletPercent).div(10**2);
    }

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

    function airDropToPrev(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner() {
        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }
        
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[],"name":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airDropToPrev","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsToFourPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"selltax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSwap","type":"uint256"}],"name":"setMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"preventBefore","type":"uint256"}],"name":"setSwapPrevent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"setTaxSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[],"name":"uniswapV2PairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600655600560075560146008556014600955600a80555f600b556009600a620000309190620005ec565b6301c9c3806200004191906200063c565b600c556009600a620000549190620005ec565b6301c9c3806200006591906200063c565b600d556009600a620000789190620005ec565b629896806200008891906200063c565b600e556009600a6200009b9190620005ec565b62989680620000ab91906200063c565b600f555f601160156101000a81548160ff0219169083151502179055505f601160166101000a81548160ff021916908315150217905550348015620000ee575f80fd5b505f620001006200042c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073e58e4fcba048219b1e32ce92362e72775d98cd6060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620002009190620005ec565b633b9aca006200021191906200063c565b60015f620002246200042c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002766200043360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003a06200042c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620003fe9190620005ec565b633b9aca006200040f91906200063c565b6040516200041e919062000697565b60405180910390a3620006b2565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004e457808604811115620004bc57620004bb6200045a565b5b6001851615620004cc5780820291505b8081029050620004dc8562000487565b94506200049c565b94509492505050565b5f82620004fe5760019050620005d0565b816200050d575f9050620005d0565b8160018114620005265760028114620005315762000567565b6001915050620005d0565b60ff8411156200054657620005456200045a565b5b8360020a91508482111562000560576200055f6200045a565b5b50620005d0565b5060208310610133831016604e8410600b8410161715620005a15782820a9050838111156200059b576200059a6200045a565b5b620005d0565b620005b0848484600162000493565b92509050818404811115620005ca57620005c96200045a565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620005f882620005d7565b91506200060583620005e0565b9250620006347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004ed565b905092915050565b5f6200064882620005d7565b91506200065583620005d7565b92508282026200066581620005d7565b915082820484148315176200067f576200067e6200045a565b5b5092915050565b6200069181620005d7565b82525050565b5f602082019050620006ac5f83018462000686565b92915050565b6141eb80620006c05f395ff3fe6080604052600436106101f1575f3560e01c8063715018a61161010c578063a9059cbb1161009f578063d0856c661161006e578063d0856c661461066e578063d543dbeb14610696578063dd62ed3e146106be578063de2aa57d146106fa578063e01af92c14610722576101f8565b8063a9059cbb146105ca578063bf474bed14610606578063c647b20e14610630578063c9567bf914610658576101f8565b806382bf293c116100db57806382bf293c146105245780638da5cb5b1461054c5780638f9a55c01461057657806395d89b41146105a0576101f8565b8063715018a6146104b8578063751039fc146104ce5780637d1db4a5146104e45780637fb57cae1461050e576101f8565b8063313ce56711610184578063674e79af11610153578063674e79af14610414578063694c3fa11461043c5780636fc3eaec1461046657806370a082311461047c576101f8565b8063313ce5671461036e5780633bbac579146103985780634a1263f3146103d457806351bc3c85146103fe576101f8565b806318160ddd116101c057806318160ddd146102b457806323b872dd146102de57806327b1a8e91461031a5780632b653d4414610344576101f8565b806306fdde03146101fc578063095ea7b3146102265780630e6e91d8146102625780630faee56f1461028a576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b5061021061074a565b60405161021d9190612ee2565b60405180910390f35b348015610231575f80fd5b5061024c60048036038101906102479190612f97565b610787565b6040516102599190612fef565b60405180910390f35b34801561026d575f80fd5b5061028860048036038101906102839190613008565b6107a4565b005b348015610295575f80fd5b5061029e610884565b6040516102ab9190613042565b60405180910390f35b3480156102bf575f80fd5b506102c861088a565b6040516102d59190613042565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff919061305b565b6108ad565b6040516103119190612fef565b60405180910390f35b348015610325575f80fd5b5061032e610981565b60405161033b9190613042565b60405180910390f35b34801561034f575f80fd5b50610358610987565b60405161036591906130ba565b60405180910390f35b348015610379575f80fd5b506103826109af565b60405161038f91906130ee565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190613107565b6109b7565b6040516103cb9190612fef565b60405180910390f35b3480156103df575f80fd5b506103e8610a09565b6040516103f59190613042565b60405180910390f35b348015610409575f80fd5b50610412610a12565b005b34801561041f575f80fd5b5061043a60048036038101906104359190613008565b610a92565b005b348015610447575f80fd5b50610450610b72565b60405161045d9190613042565b60405180910390f35b348015610471575f80fd5b5061047a610b7b565b005b348015610487575f80fd5b506104a2600480360381019061049d9190613107565b610bf3565b6040516104af9190613042565b60405180910390f35b3480156104c3575f80fd5b506104cc610c39565b005b3480156104d9575f80fd5b506104e2610d87565b005b3480156104ef575f80fd5b506104f8610e81565b6040516105059190613042565b60405180910390f35b348015610519575f80fd5b50610522610e87565b005b34801561052f575f80fd5b5061054a60048036038101906105459190613008565b610fce565b005b348015610557575f80fd5b506105606110ef565b60405161056d91906130ba565b60405180910390f35b348015610581575f80fd5b5061058a611116565b6040516105979190613042565b60405180910390f35b3480156105ab575f80fd5b506105b461111c565b6040516105c19190612ee2565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb9190612f97565b611159565b6040516105fd9190612fef565b60405180910390f35b348015610611575f80fd5b5061061a611176565b6040516106279190613042565b60405180910390f35b34801561063b575f80fd5b5061065660048036038101906106519190613132565b61117c565b005b348015610663575f80fd5b5061066c611279565b005b348015610679575f80fd5b50610694600480360381019061068f9190613226565b6117aa565b005b3480156106a1575f80fd5b506106bc60048036038101906106b79190613008565b6119d6565b005b3480156106c9575f80fd5b506106e460048036038101906106df91906132b7565b611b30565b6040516106f19190613042565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190613008565b611bb2565b005b34801561072d575f80fd5b506107486004803603810190610743919061331f565b611c92565b005b60606040518060400160405280600781526020017f46524f55424f5400000000000000000000000000000000000000000000000000815250905090565b5f61079a610793611d43565b8484611d4a565b6001905092915050565b6107ac611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90613394565b60405180910390fd5b5f811161087a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610871906133fc565b60405180910390fd5b80600f8190555050565b600f5481565b5f6009600a6108999190613576565b633b9aca006108a891906135c0565b905090565b5f6108b9848484611f0d565b610976846108c5611d43565b6109718560405180606001604052806028815260200161418e6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610928611d43565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277a9092919063ffffffff16565b611d4a565b600190509392505050565b600b5481565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f600654905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a52611d43565b73ffffffffffffffffffffffffffffffffffffffff1614610a71575f80fd5b5f610a7b30610bf3565b90505f811115610a8f57610a8e816127dc565b5b50565b610a9a611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90613394565b60405180910390fd5b5f8111610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061364b565b60405180910390fd5b80600a8190555050565b5f600854905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bbb611d43565b73ffffffffffffffffffffffffffffffffffffffff1614610bda575f80fd5b5f4790505f811115610bf057610bef81612a47565b5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c41611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490613394565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dc7611d43565b73ffffffffffffffffffffffffffffffffffffffff1614610de6575f80fd5b6009600a610df49190613576565b633b9aca00610e0391906135c0565b600c819055506009600a610e179190613576565b633b9aca00610e2691906135c0565b600d819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610e5b9190613576565b633b9aca00610e6a91906135c0565b604051610e779190613042565b60405180910390a1565b600c5481565b610e8f611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613394565b60405180910390fd5b6009600a610f299190613576565b633b9aca00610f3891906135c0565b600c81905550606460046009600a610f509190613576565b633b9aca00610f5f91906135c0565b610f6991906135c0565b610f739190613696565b600d819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610fa89190613576565b633b9aca00610fb791906135c0565b604051610fc49190613042565b60405180910390a1565b610fd6611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990613394565b60405180910390fd5b5f81116110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b9061364b565b60405180910390fd5b6110e660646110d8836009600a6110bb9190613576565b633b9aca006110ca91906135c0565b612aaf90919063ffffffff16565b612b2690919063ffffffff16565b600d8190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b60606040518060400160405280600681526020017f46524f424f540000000000000000000000000000000000000000000000000000815250905090565b5f61116c611165611d43565b8484611f0d565b6001905092915050565b600e5481565b611184611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120790613394565b60405180910390fd5b816006819055508060088190555060075460065411158015611236575060095460085411155b611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90613710565b60405180910390fd5b5050565b611281611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613394565b60405180910390fd5b5f600681905550601160149054906101000a900460ff1615611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90613778565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114003060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6113ec9190613576565b633b9aca006113fb91906135c0565b611d4a565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148e91906137aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611514573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153891906137aa565b6040518363ffffffff1660e01b81526004016115559291906137d5565b6020604051808303815f875af1158015611571573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159591906137aa565b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061161c30610bf3565b5f806116266110ef565b426040518863ffffffff1660e01b81526004016116489695949392919061383e565b60606040518083038185885af1158015611664573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061168991906138b1565b50505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611729929190613901565b6020604051808303815f875af1158015611745573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611769919061393c565b506001601160166101000a81548160ff0219169083151502179055506001601160146101000a81548160ff0219169083151502179055506005600681905550565b6117b2611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613394565b60405180910390fd5b6101f58484905010611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906139d7565b60405180910390fd5b8181905084849050146118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490613a65565b60405180910390fd5b5f805b85859050811015611915578383828181106118ee576118ed613a83565b5b90506020020135826119009190613ab0565b9150808061190d90613ae3565b9150506118d0565b508061192087610bf3565b1015611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890613b74565b60405180910390fd5b5f5b858590508110156119cd576119b98787878481811061198557611984613a83565b5b905060200201602081019061199a9190613107565b8686858181106119ad576119ac613a83565b5b90506020020135612b6f565b5080806119c590613ae3565b915050611963565b50505050505050565b6119de611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190613394565b60405180910390fd5b5f8111611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa39061364b565b60405180910390fd5b611aee6064611ae0836009600a611ac39190613576565b633b9aca00611ad291906135c0565b612aaf90919063ffffffff16565b612b2690919063ffffffff16565b600c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600c54604051611b259190613042565b60405180910390a150565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bba611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d90613394565b60405180910390fd5b5f8111611c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7f906133fc565b60405180910390fd5b80600e8190555050565b611c9a611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1d90613394565b60405180910390fd5b80601160166101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613c02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1d90613c90565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f009190613042565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7290613d1e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe090613dac565b60405180910390fd5b5f811161202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202290613e3a565b60405180910390fd5b5f6120346110ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a257506120726110ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124ca5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612145575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61214d575f80fd5b612175606461216760065485612aaf90919063ffffffff16565b612b2690919063ffffffff16565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612220575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612273575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561232d57600c548211156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490613ea2565b60405180910390fd5b600d54826122ca85610bf3565b6122d49190613ab0565b1115612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230c90613f0a565b60405180910390fd5b600b5f81548092919061232790613ae3565b91905055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123b557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123e5576123e260646123d460085485612aaf90919063ffffffff16565b612b2690919063ffffffff16565b90505b5f6123ef30610bf3565b9050601160159054906101000a900460ff1615801561245a575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156124725750601160169054906101000a900460ff165b801561247f5750600e5481115b801561248e5750600a54600b54115b156124c8576124b06124ab846124a684600f54612d39565b612d39565b6127dc565b5f4790505f8111156124c6576124c547612a47565b5b505b505b5f8111156125c9576125228160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d5190919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125c09190613042565b60405180910390a35b6126198260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dae90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126bc6126708284612dae90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d5190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61275f8486612dae90919063ffffffff16565b60405161276c9190613042565b60405180910390a350505050565b5f8383111582906127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b89190612ee2565b60405180910390fd5b505f83856127cf9190613f28565b9050809150509392505050565b6001601160156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561281357612812613f5b565b5b6040519080825280602002602001820160405280156128415781602001602082028036833780820191505090505b50905030815f8151811061285857612857613a83565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292091906137aa565b8160018151811061293457612933613a83565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061299a3060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d4a565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129fc95949392919061403f565b5f604051808303815f87803b158015612a13575f80fd5b505af1158015612a25573d5f803e3d5ffd5b50505050505f601160156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612aab573d5f803e3d5ffd5b5050565b5f808303612abf575f9050612b20565b5f8284612acc91906135c0565b9050828482612adb9190613696565b14612b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1290614107565b60405180910390fd5b809150505b92915050565b5f612b6783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612df7565b905092915050565b5f612bf7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277a9092919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c888260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d5190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d269190613042565b60405180910390a3600190509392505050565b5f818311612d475782612d49565b815b905092915050565b5f808284612d5f9190613ab0565b905083811015612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b9061416f565b60405180910390fd5b8091505092915050565b5f612def83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061277a565b905092915050565b5f8083118290612e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e349190612ee2565b60405180910390fd5b505f8385612e4b9190613696565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e8f578082015181840152602081019050612e74565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eb482612e58565b612ebe8185612e62565b9350612ece818560208601612e72565b612ed781612e9a565b840191505092915050565b5f6020820190508181035f830152612efa8184612eaa565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f3382612f0a565b9050919050565b612f4381612f29565b8114612f4d575f80fd5b50565b5f81359050612f5e81612f3a565b92915050565b5f819050919050565b612f7681612f64565b8114612f80575f80fd5b50565b5f81359050612f9181612f6d565b92915050565b5f8060408385031215612fad57612fac612f02565b5b5f612fba85828601612f50565b9250506020612fcb85828601612f83565b9150509250929050565b5f8115159050919050565b612fe981612fd5565b82525050565b5f6020820190506130025f830184612fe0565b92915050565b5f6020828403121561301d5761301c612f02565b5b5f61302a84828501612f83565b91505092915050565b61303c81612f64565b82525050565b5f6020820190506130555f830184613033565b92915050565b5f805f6060848603121561307257613071612f02565b5b5f61307f86828701612f50565b935050602061309086828701612f50565b92505060406130a186828701612f83565b9150509250925092565b6130b481612f29565b82525050565b5f6020820190506130cd5f8301846130ab565b92915050565b5f60ff82169050919050565b6130e8816130d3565b82525050565b5f6020820190506131015f8301846130df565b92915050565b5f6020828403121561311c5761311b612f02565b5b5f61312984828501612f50565b91505092915050565b5f806040838503121561314857613147612f02565b5b5f61315585828601612f83565b925050602061316685828601612f83565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261319157613190613170565b5b8235905067ffffffffffffffff8111156131ae576131ad613174565b5b6020830191508360208202830111156131ca576131c9613178565b5b9250929050565b5f8083601f8401126131e6576131e5613170565b5b8235905067ffffffffffffffff81111561320357613202613174565b5b60208301915083602082028301111561321f5761321e613178565b5b9250929050565b5f805f805f6060868803121561323f5761323e612f02565b5b5f61324c88828901612f50565b955050602086013567ffffffffffffffff81111561326d5761326c612f06565b5b6132798882890161317c565b9450945050604086013567ffffffffffffffff81111561329c5761329b612f06565b5b6132a8888289016131d1565b92509250509295509295909350565b5f80604083850312156132cd576132cc612f02565b5b5f6132da85828601612f50565b92505060206132eb85828601612f50565b9150509250929050565b6132fe81612fd5565b8114613308575f80fd5b50565b5f81359050613319816132f5565b92915050565b5f6020828403121561333457613333612f02565b5b5f6133418482850161330b565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61337e602083612e62565b91506133898261334a565b602082019050919050565b5f6020820190508181035f8301526133ab81613372565b9050919050565b7f4d7573742062652067726561746572207468616e2030000000000000000000005f82015250565b5f6133e6601683612e62565b91506133f1826133b2565b602082019050919050565b5f6020820190508181035f830152613413816133da565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561349c578086048111156134785761347761341a565b5b60018516156134875780820291505b808102905061349585613447565b945061345c565b94509492505050565b5f826134b4576001905061356f565b816134c1575f905061356f565b81600181146134d757600281146134e157613510565b600191505061356f565b60ff8411156134f3576134f261341a565b5b8360020a91508482111561350a5761350961341a565b5b5061356f565b5060208310610133831016604e8410600b84101617156135455782820a9050838111156135405761353f61341a565b5b61356f565b6135528484846001613453565b925090508184048111156135695761356861341a565b5b81810290505b9392505050565b5f61358082612f64565b915061358b836130d3565b92506135b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134a5565b905092915050565b5f6135ca82612f64565b91506135d583612f64565b92508282026135e381612f64565b915082820484148315176135fa576135f961341a565b5b5092915050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f613635601d83612e62565b915061364082613601565b602082019050919050565b5f6020820190508181035f83015261366281613629565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136a082612f64565b91506136ab83612f64565b9250826136bb576136ba613669565b5b828204905092915050565b7f54617865732061726520686967680000000000000000000000000000000000005f82015250565b5f6136fa600e83612e62565b9150613705826136c6565b602082019050919050565b5f6020820190508181035f830152613727816136ee565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613762601783612e62565b915061376d8261372e565b602082019050919050565b5f6020820190508181035f83015261378f81613756565b9050919050565b5f815190506137a481612f3a565b92915050565b5f602082840312156137bf576137be612f02565b5b5f6137cc84828501613796565b91505092915050565b5f6040820190506137e85f8301856130ab565b6137f560208301846130ab565b9392505050565b5f819050919050565b5f819050919050565b5f61382861382361381e846137fc565b613805565b612f64565b9050919050565b6138388161380e565b82525050565b5f60c0820190506138515f8301896130ab565b61385e6020830188613033565b61386b604083018761382f565b613878606083018661382f565b61388560808301856130ab565b61389260a0830184613033565b979650505050505050565b5f815190506138ab81612f6d565b92915050565b5f805f606084860312156138c8576138c7612f02565b5b5f6138d58682870161389d565b93505060206138e68682870161389d565b92505060406138f78682870161389d565b9150509250925092565b5f6040820190506139145f8301856130ab565b6139216020830184613033565b9392505050565b5f81519050613936816132f5565b92915050565b5f6020828403121561395157613950612f02565b5b5f61395e84828501613928565b91505092915050565b7f474153204572726f723a206d61782061697264726f70206c696d6974206973205f8201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b5f6139c1602d83612e62565b91506139cc82613967565b604082019050919050565b5f6020820190508181035f8301526139ee816139b5565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b5f8201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b5f613a4f602883612e62565b9150613a5a826139f5565b604082019050919050565b5f6020820190508181035f830152613a7c81613a43565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613aba82612f64565b9150613ac583612f64565b9250828201905080821115613add57613adc61341a565b5b92915050565b5f613aed82612f64565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b1f57613b1e61341a565b5b600182019050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000005f82015250565b5f613b5e601b83612e62565b9150613b6982613b2a565b602082019050919050565b5f6020820190508181035f830152613b8b81613b52565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613bec602483612e62565b9150613bf782613b92565b604082019050919050565b5f6020820190508181035f830152613c1981613be0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c7a602283612e62565b9150613c8582613c20565b604082019050919050565b5f6020820190508181035f830152613ca781613c6e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d08602583612e62565b9150613d1382613cae565b604082019050919050565b5f6020820190508181035f830152613d3581613cfc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613d96602383612e62565b9150613da182613d3c565b604082019050919050565b5f6020820190508181035f830152613dc381613d8a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613e24602983612e62565b9150613e2f82613dca565b604082019050919050565b5f6020820190508181035f830152613e5181613e18565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613e8c601983612e62565b9150613e9782613e58565b602082019050919050565b5f6020820190508181035f830152613eb981613e80565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613ef4601a83612e62565b9150613eff82613ec0565b602082019050919050565b5f6020820190508181035f830152613f2181613ee8565b9050919050565b5f613f3282612f64565b9150613f3d83612f64565b9250828203905081811115613f5557613f5461341a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fba81612f29565b82525050565b5f613fcb8383613fb1565b60208301905092915050565b5f602082019050919050565b5f613fed82613f88565b613ff78185613f92565b935061400283613fa2565b805f5b838110156140325781516140198882613fc0565b975061402483613fd7565b925050600181019050614005565b5085935050505092915050565b5f60a0820190506140525f830188613033565b61405f602083018761382f565b81810360408301526140718186613fe3565b905061408060608301856130ab565b61408d6080830184613033565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140f1602183612e62565b91506140fc82614097565b604082019050919050565b5f6020820190508181035f83015261411e816140e5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614159601b83612e62565b915061416482614125565b602082019050919050565b5f6020820190508181035f8301526141868161414d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220192ed2a3649ac9131d97f3177bcd84a92663ea5071d2e04b4dc98785f90656ce64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101f1575f3560e01c8063715018a61161010c578063a9059cbb1161009f578063d0856c661161006e578063d0856c661461066e578063d543dbeb14610696578063dd62ed3e146106be578063de2aa57d146106fa578063e01af92c14610722576101f8565b8063a9059cbb146105ca578063bf474bed14610606578063c647b20e14610630578063c9567bf914610658576101f8565b806382bf293c116100db57806382bf293c146105245780638da5cb5b1461054c5780638f9a55c01461057657806395d89b41146105a0576101f8565b8063715018a6146104b8578063751039fc146104ce5780637d1db4a5146104e45780637fb57cae1461050e576101f8565b8063313ce56711610184578063674e79af11610153578063674e79af14610414578063694c3fa11461043c5780636fc3eaec1461046657806370a082311461047c576101f8565b8063313ce5671461036e5780633bbac579146103985780634a1263f3146103d457806351bc3c85146103fe576101f8565b806318160ddd116101c057806318160ddd146102b457806323b872dd146102de57806327b1a8e91461031a5780632b653d4414610344576101f8565b806306fdde03146101fc578063095ea7b3146102265780630e6e91d8146102625780630faee56f1461028a576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b5061021061074a565b60405161021d9190612ee2565b60405180910390f35b348015610231575f80fd5b5061024c60048036038101906102479190612f97565b610787565b6040516102599190612fef565b60405180910390f35b34801561026d575f80fd5b5061028860048036038101906102839190613008565b6107a4565b005b348015610295575f80fd5b5061029e610884565b6040516102ab9190613042565b60405180910390f35b3480156102bf575f80fd5b506102c861088a565b6040516102d59190613042565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff919061305b565b6108ad565b6040516103119190612fef565b60405180910390f35b348015610325575f80fd5b5061032e610981565b60405161033b9190613042565b60405180910390f35b34801561034f575f80fd5b50610358610987565b60405161036591906130ba565b60405180910390f35b348015610379575f80fd5b506103826109af565b60405161038f91906130ee565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190613107565b6109b7565b6040516103cb9190612fef565b60405180910390f35b3480156103df575f80fd5b506103e8610a09565b6040516103f59190613042565b60405180910390f35b348015610409575f80fd5b50610412610a12565b005b34801561041f575f80fd5b5061043a60048036038101906104359190613008565b610a92565b005b348015610447575f80fd5b50610450610b72565b60405161045d9190613042565b60405180910390f35b348015610471575f80fd5b5061047a610b7b565b005b348015610487575f80fd5b506104a2600480360381019061049d9190613107565b610bf3565b6040516104af9190613042565b60405180910390f35b3480156104c3575f80fd5b506104cc610c39565b005b3480156104d9575f80fd5b506104e2610d87565b005b3480156104ef575f80fd5b506104f8610e81565b6040516105059190613042565b60405180910390f35b348015610519575f80fd5b50610522610e87565b005b34801561052f575f80fd5b5061054a60048036038101906105459190613008565b610fce565b005b348015610557575f80fd5b506105606110ef565b60405161056d91906130ba565b60405180910390f35b348015610581575f80fd5b5061058a611116565b6040516105979190613042565b60405180910390f35b3480156105ab575f80fd5b506105b461111c565b6040516105c19190612ee2565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb9190612f97565b611159565b6040516105fd9190612fef565b60405180910390f35b348015610611575f80fd5b5061061a611176565b6040516106279190613042565b60405180910390f35b34801561063b575f80fd5b5061065660048036038101906106519190613132565b61117c565b005b348015610663575f80fd5b5061066c611279565b005b348015610679575f80fd5b50610694600480360381019061068f9190613226565b6117aa565b005b3480156106a1575f80fd5b506106bc60048036038101906106b79190613008565b6119d6565b005b3480156106c9575f80fd5b506106e460048036038101906106df91906132b7565b611b30565b6040516106f19190613042565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190613008565b611bb2565b005b34801561072d575f80fd5b506107486004803603810190610743919061331f565b611c92565b005b60606040518060400160405280600781526020017f46524f55424f5400000000000000000000000000000000000000000000000000815250905090565b5f61079a610793611d43565b8484611d4a565b6001905092915050565b6107ac611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90613394565b60405180910390fd5b5f811161087a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610871906133fc565b60405180910390fd5b80600f8190555050565b600f5481565b5f6009600a6108999190613576565b633b9aca006108a891906135c0565b905090565b5f6108b9848484611f0d565b610976846108c5611d43565b6109718560405180606001604052806028815260200161418e6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610928611d43565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277a9092919063ffffffff16565b611d4a565b600190509392505050565b600b5481565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f600654905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a52611d43565b73ffffffffffffffffffffffffffffffffffffffff1614610a71575f80fd5b5f610a7b30610bf3565b90505f811115610a8f57610a8e816127dc565b5b50565b610a9a611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90613394565b60405180910390fd5b5f8111610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061364b565b60405180910390fd5b80600a8190555050565b5f600854905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bbb611d43565b73ffffffffffffffffffffffffffffffffffffffff1614610bda575f80fd5b5f4790505f811115610bf057610bef81612a47565b5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c41611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490613394565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dc7611d43565b73ffffffffffffffffffffffffffffffffffffffff1614610de6575f80fd5b6009600a610df49190613576565b633b9aca00610e0391906135c0565b600c819055506009600a610e179190613576565b633b9aca00610e2691906135c0565b600d819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610e5b9190613576565b633b9aca00610e6a91906135c0565b604051610e779190613042565b60405180910390a1565b600c5481565b610e8f611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613394565b60405180910390fd5b6009600a610f299190613576565b633b9aca00610f3891906135c0565b600c81905550606460046009600a610f509190613576565b633b9aca00610f5f91906135c0565b610f6991906135c0565b610f739190613696565b600d819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610fa89190613576565b633b9aca00610fb791906135c0565b604051610fc49190613042565b60405180910390a1565b610fd6611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990613394565b60405180910390fd5b5f81116110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b9061364b565b60405180910390fd5b6110e660646110d8836009600a6110bb9190613576565b633b9aca006110ca91906135c0565b612aaf90919063ffffffff16565b612b2690919063ffffffff16565b600d8190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b60606040518060400160405280600681526020017f46524f424f540000000000000000000000000000000000000000000000000000815250905090565b5f61116c611165611d43565b8484611f0d565b6001905092915050565b600e5481565b611184611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120790613394565b60405180910390fd5b816006819055508060088190555060075460065411158015611236575060095460085411155b611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90613710565b60405180910390fd5b5050565b611281611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613394565b60405180910390fd5b5f600681905550601160149054906101000a900460ff1615611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90613778565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114003060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6113ec9190613576565b633b9aca006113fb91906135c0565b611d4a565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148e91906137aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611514573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153891906137aa565b6040518363ffffffff1660e01b81526004016115559291906137d5565b6020604051808303815f875af1158015611571573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159591906137aa565b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061161c30610bf3565b5f806116266110ef565b426040518863ffffffff1660e01b81526004016116489695949392919061383e565b60606040518083038185885af1158015611664573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061168991906138b1565b50505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611729929190613901565b6020604051808303815f875af1158015611745573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611769919061393c565b506001601160166101000a81548160ff0219169083151502179055506001601160146101000a81548160ff0219169083151502179055506005600681905550565b6117b2611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613394565b60405180910390fd5b6101f58484905010611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906139d7565b60405180910390fd5b8181905084849050146118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490613a65565b60405180910390fd5b5f805b85859050811015611915578383828181106118ee576118ed613a83565b5b90506020020135826119009190613ab0565b9150808061190d90613ae3565b9150506118d0565b508061192087610bf3565b1015611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890613b74565b60405180910390fd5b5f5b858590508110156119cd576119b98787878481811061198557611984613a83565b5b905060200201602081019061199a9190613107565b8686858181106119ad576119ac613a83565b5b90506020020135612b6f565b5080806119c590613ae3565b915050611963565b50505050505050565b6119de611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190613394565b60405180910390fd5b5f8111611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa39061364b565b60405180910390fd5b611aee6064611ae0836009600a611ac39190613576565b633b9aca00611ad291906135c0565b612aaf90919063ffffffff16565b612b2690919063ffffffff16565b600c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600c54604051611b259190613042565b60405180910390a150565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bba611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d90613394565b60405180910390fd5b5f8111611c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7f906133fc565b60405180910390fd5b80600e8190555050565b611c9a611d43565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1d90613394565b60405180910390fd5b80601160166101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613c02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1d90613c90565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f009190613042565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7290613d1e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe090613dac565b60405180910390fd5b5f811161202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202290613e3a565b60405180910390fd5b5f6120346110ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a257506120726110ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124ca5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612145575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61214d575f80fd5b612175606461216760065485612aaf90919063ffffffff16565b612b2690919063ffffffff16565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612220575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612273575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561232d57600c548211156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490613ea2565b60405180910390fd5b600d54826122ca85610bf3565b6122d49190613ab0565b1115612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230c90613f0a565b60405180910390fd5b600b5f81548092919061232790613ae3565b91905055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123b557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123e5576123e260646123d460085485612aaf90919063ffffffff16565b612b2690919063ffffffff16565b90505b5f6123ef30610bf3565b9050601160159054906101000a900460ff1615801561245a575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156124725750601160169054906101000a900460ff165b801561247f5750600e5481115b801561248e5750600a54600b54115b156124c8576124b06124ab846124a684600f54612d39565b612d39565b6127dc565b5f4790505f8111156124c6576124c547612a47565b5b505b505b5f8111156125c9576125228160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d5190919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125c09190613042565b60405180910390a35b6126198260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dae90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126bc6126708284612dae90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d5190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61275f8486612dae90919063ffffffff16565b60405161276c9190613042565b60405180910390a350505050565b5f8383111582906127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b89190612ee2565b60405180910390fd5b505f83856127cf9190613f28565b9050809150509392505050565b6001601160156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561281357612812613f5b565b5b6040519080825280602002602001820160405280156128415781602001602082028036833780820191505090505b50905030815f8151811061285857612857613a83565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292091906137aa565b8160018151811061293457612933613a83565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061299a3060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d4a565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129fc95949392919061403f565b5f604051808303815f87803b158015612a13575f80fd5b505af1158015612a25573d5f803e3d5ffd5b50505050505f601160156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612aab573d5f803e3d5ffd5b5050565b5f808303612abf575f9050612b20565b5f8284612acc91906135c0565b9050828482612adb9190613696565b14612b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1290614107565b60405180910390fd5b809150505b92915050565b5f612b6783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612df7565b905092915050565b5f612bf7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277a9092919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c888260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d5190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d269190613042565b60405180910390a3600190509392505050565b5f818311612d475782612d49565b815b905092915050565b5f808284612d5f9190613ab0565b905083811015612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b9061416f565b60405180910390fd5b8091505092915050565b5f612def83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061277a565b905092915050565b5f8083118290612e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e349190612ee2565b60405180910390fd5b505f8385612e4b9190613696565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e8f578082015181840152602081019050612e74565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eb482612e58565b612ebe8185612e62565b9350612ece818560208601612e72565b612ed781612e9a565b840191505092915050565b5f6020820190508181035f830152612efa8184612eaa565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f3382612f0a565b9050919050565b612f4381612f29565b8114612f4d575f80fd5b50565b5f81359050612f5e81612f3a565b92915050565b5f819050919050565b612f7681612f64565b8114612f80575f80fd5b50565b5f81359050612f9181612f6d565b92915050565b5f8060408385031215612fad57612fac612f02565b5b5f612fba85828601612f50565b9250506020612fcb85828601612f83565b9150509250929050565b5f8115159050919050565b612fe981612fd5565b82525050565b5f6020820190506130025f830184612fe0565b92915050565b5f6020828403121561301d5761301c612f02565b5b5f61302a84828501612f83565b91505092915050565b61303c81612f64565b82525050565b5f6020820190506130555f830184613033565b92915050565b5f805f6060848603121561307257613071612f02565b5b5f61307f86828701612f50565b935050602061309086828701612f50565b92505060406130a186828701612f83565b9150509250925092565b6130b481612f29565b82525050565b5f6020820190506130cd5f8301846130ab565b92915050565b5f60ff82169050919050565b6130e8816130d3565b82525050565b5f6020820190506131015f8301846130df565b92915050565b5f6020828403121561311c5761311b612f02565b5b5f61312984828501612f50565b91505092915050565b5f806040838503121561314857613147612f02565b5b5f61315585828601612f83565b925050602061316685828601612f83565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261319157613190613170565b5b8235905067ffffffffffffffff8111156131ae576131ad613174565b5b6020830191508360208202830111156131ca576131c9613178565b5b9250929050565b5f8083601f8401126131e6576131e5613170565b5b8235905067ffffffffffffffff81111561320357613202613174565b5b60208301915083602082028301111561321f5761321e613178565b5b9250929050565b5f805f805f6060868803121561323f5761323e612f02565b5b5f61324c88828901612f50565b955050602086013567ffffffffffffffff81111561326d5761326c612f06565b5b6132798882890161317c565b9450945050604086013567ffffffffffffffff81111561329c5761329b612f06565b5b6132a8888289016131d1565b92509250509295509295909350565b5f80604083850312156132cd576132cc612f02565b5b5f6132da85828601612f50565b92505060206132eb85828601612f50565b9150509250929050565b6132fe81612fd5565b8114613308575f80fd5b50565b5f81359050613319816132f5565b92915050565b5f6020828403121561333457613333612f02565b5b5f6133418482850161330b565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61337e602083612e62565b91506133898261334a565b602082019050919050565b5f6020820190508181035f8301526133ab81613372565b9050919050565b7f4d7573742062652067726561746572207468616e2030000000000000000000005f82015250565b5f6133e6601683612e62565b91506133f1826133b2565b602082019050919050565b5f6020820190508181035f830152613413816133da565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561349c578086048111156134785761347761341a565b5b60018516156134875780820291505b808102905061349585613447565b945061345c565b94509492505050565b5f826134b4576001905061356f565b816134c1575f905061356f565b81600181146134d757600281146134e157613510565b600191505061356f565b60ff8411156134f3576134f261341a565b5b8360020a91508482111561350a5761350961341a565b5b5061356f565b5060208310610133831016604e8410600b84101617156135455782820a9050838111156135405761353f61341a565b5b61356f565b6135528484846001613453565b925090508184048111156135695761356861341a565b5b81810290505b9392505050565b5f61358082612f64565b915061358b836130d3565b92506135b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134a5565b905092915050565b5f6135ca82612f64565b91506135d583612f64565b92508282026135e381612f64565b915082820484148315176135fa576135f961341a565b5b5092915050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f613635601d83612e62565b915061364082613601565b602082019050919050565b5f6020820190508181035f83015261366281613629565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136a082612f64565b91506136ab83612f64565b9250826136bb576136ba613669565b5b828204905092915050565b7f54617865732061726520686967680000000000000000000000000000000000005f82015250565b5f6136fa600e83612e62565b9150613705826136c6565b602082019050919050565b5f6020820190508181035f830152613727816136ee565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613762601783612e62565b915061376d8261372e565b602082019050919050565b5f6020820190508181035f83015261378f81613756565b9050919050565b5f815190506137a481612f3a565b92915050565b5f602082840312156137bf576137be612f02565b5b5f6137cc84828501613796565b91505092915050565b5f6040820190506137e85f8301856130ab565b6137f560208301846130ab565b9392505050565b5f819050919050565b5f819050919050565b5f61382861382361381e846137fc565b613805565b612f64565b9050919050565b6138388161380e565b82525050565b5f60c0820190506138515f8301896130ab565b61385e6020830188613033565b61386b604083018761382f565b613878606083018661382f565b61388560808301856130ab565b61389260a0830184613033565b979650505050505050565b5f815190506138ab81612f6d565b92915050565b5f805f606084860312156138c8576138c7612f02565b5b5f6138d58682870161389d565b93505060206138e68682870161389d565b92505060406138f78682870161389d565b9150509250925092565b5f6040820190506139145f8301856130ab565b6139216020830184613033565b9392505050565b5f81519050613936816132f5565b92915050565b5f6020828403121561395157613950612f02565b5b5f61395e84828501613928565b91505092915050565b7f474153204572726f723a206d61782061697264726f70206c696d6974206973205f8201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b5f6139c1602d83612e62565b91506139cc82613967565b604082019050919050565b5f6020820190508181035f8301526139ee816139b5565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b5f8201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b5f613a4f602883612e62565b9150613a5a826139f5565b604082019050919050565b5f6020820190508181035f830152613a7c81613a43565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613aba82612f64565b9150613ac583612f64565b9250828201905080821115613add57613adc61341a565b5b92915050565b5f613aed82612f64565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b1f57613b1e61341a565b5b600182019050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000005f82015250565b5f613b5e601b83612e62565b9150613b6982613b2a565b602082019050919050565b5f6020820190508181035f830152613b8b81613b52565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613bec602483612e62565b9150613bf782613b92565b604082019050919050565b5f6020820190508181035f830152613c1981613be0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c7a602283612e62565b9150613c8582613c20565b604082019050919050565b5f6020820190508181035f830152613ca781613c6e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d08602583612e62565b9150613d1382613cae565b604082019050919050565b5f6020820190508181035f830152613d3581613cfc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613d96602383612e62565b9150613da182613d3c565b604082019050919050565b5f6020820190508181035f830152613dc381613d8a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613e24602983612e62565b9150613e2f82613dca565b604082019050919050565b5f6020820190508181035f830152613e5181613e18565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613e8c601983612e62565b9150613e9782613e58565b602082019050919050565b5f6020820190508181035f830152613eb981613e80565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613ef4601a83612e62565b9150613eff82613ec0565b602082019050919050565b5f6020820190508181035f830152613f2181613ee8565b9050919050565b5f613f3282612f64565b9150613f3d83612f64565b9250828203905081811115613f5557613f5461341a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fba81612f29565b82525050565b5f613fcb8383613fb1565b60208301905092915050565b5f602082019050919050565b5f613fed82613f88565b613ff78185613f92565b935061400283613fa2565b805f5b838110156140325781516140198882613fc0565b975061402483613fd7565b925050600181019050614005565b5085935050505092915050565b5f60a0820190506140525f830188613033565b61405f602083018761382f565b81810360408301526140718186613fe3565b905061408060608301856130ab565b61408d6080830184613033565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140f1602183612e62565b91506140fc82614097565b604082019050919050565b5f6020820190508181035f83015261411e816140e5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614159601b83612e62565b915061416482614125565b602082019050919050565b5f6020820190508181035f8301526141868161414d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220192ed2a3649ac9131d97f3177bcd84a92663ea5071d2e04b4dc98785f90656ce64736f6c63430008140033

Deployed Bytecode Sourcemap

3603:10605:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5916:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6749:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12711:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4594:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6193:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6918:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4146:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5807:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6102:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10519;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5627:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11569:235;;;;;;;;;;;;;:::i;:::-;;12320:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5716:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11812:237;;;;;;;;;;;;;:::i;:::-;;6296:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2684:148;;;;;;;;;;;;;:::i;:::-;;10037:194;;;;;;;;;;;;;:::i;:::-;;4403:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10239:172;;;;;;;;;;;;;:::i;:::-;;12986:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2470:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4466:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6007:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6423:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4529:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5349:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10610:711;;;;;;;;;;;;;:::i;:::-;;13557:648;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12057:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6598:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12519:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12882:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5916:83;5953:13;5986:5;;;;;;;;;;;;;;;;;5979:12;;5916:83;:::o;6749:161::-;6824:4;6841:39;6850:12;:10;:12::i;:::-;6864:7;6873:6;6841:8;:39::i;:::-;6898:4;6891:11;;6749:161;;;;:::o;12711:163::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12804:1:::1;12791:10;:14;12783:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12856:10;12843:11;:23;;;;12711:163:::0;:::o;4594:52::-;;;;:::o;6193:95::-;6246:7;4216:1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;6266:14;;6193:95;:::o;6918:313::-;7016:4;7033:36;7043:6;7051:9;7062:6;7033:9;:36::i;:::-;7080:121;7089:6;7097:12;:10;:12::i;:::-;7111:89;7149:6;7111:89;;;;;;;;;;;;;;;;;:11;:19;7123:6;7111:19;;;;;;;;;;;;;;;:33;7131:12;:10;:12::i;:::-;7111:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7080:8;:121::i;:::-;7219:4;7212:11;;6918:313;;;;;:::o;4146:26::-;;;;:::o;5807:101::-;5860:7;5887:13;;;;;;;;;;;5880:20;;5807:101;:::o;6102:83::-;6143:5;4216:1;6161:16;;6102:83;:::o;10519:::-;10566:4;10587;:7;10592:1;10587:7;;;;;;;;;;;;;;;;;;;;;;;;;10580:14;;10519:83;;;:::o;5627:81::-;5666:7;5693;;5686:14;;5627:81;:::o;11569:235::-;11633:10;;;;;;;;;;;11619:24;;:12;:10;:12::i;:::-;:24;;;11611:33;;;;;;11655:23;11681:24;11699:4;11681:9;:24::i;:::-;11655:50;;11735:1;11719:15;:17;11716:81;;;11752:33;11769:15;11752:16;:33::i;:::-;11716:81;11600:204;11569:235::o;12320:191::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12423:1:::1;12407:13;:17;12399:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12490:13;12469:18;:34;;;;12320:191:::0;:::o;5716:83::-;5756:7;5783:8;;5776:15;;5716:83;:::o;11812:237::-;11876:10;;;;;;;;;;;11862:24;;:12;:10;:12::i;:::-;:24;;;11854:33;;;;;;11898:26;11927:21;11898:50;;11981:1;11962:18;:20;11959:83;;;11998:32;12011:18;11998:12;:32::i;:::-;11959:83;11843:206;11812:237::o;6296:119::-;6362:7;6389:9;:18;6399:7;6389:18;;;;;;;;;;;;;;;;6382:25;;6296:119;;;:::o;2684:148::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2791:1:::1;2754:40;;2775:6;::::0;::::1;;;;;;;;2754:40;;;;;;;;;;;;2822:1;2805:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2684:148::o:0;10037:194::-;10103:10;;;;;;;;;;;10089:24;;:12;:10;:12::i;:::-;:24;;;10081:33;;;;;;4216:1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;10125:12;:22;;;;4216:1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;10158:14;:22;;;;10196:27;4216:1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;10196:27;;;;;;:::i;:::-;;;;;;;;10037:194::o;4403:56::-;;;;:::o;10239:172::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4216:1:::1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;10299:12;:22;;;;10357:3;10355:1;4216;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;10347:9;;;;:::i;:::-;:13;;;;:::i;:::-;10332:14;:28;;;;10376:27;4216:1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;10376:27;;;;;;:::i;:::-;;;;;;;;10239:172::o:0;12986:225::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13100:1:::1;13081:16;:20;13073:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13163:40;13197:5;13163:29;13175:16;4216:1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;13163:11;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;13146:14;:57;;;;12986:225:::0;:::o;2470:79::-;2508:7;2535:6;;;;;;;;;;;2528:13;;2470:79;:::o;4466:56::-;;;;:::o;6007:87::-;6046:13;6079:7;;;;;;;;;;;;;;;;;6072:14;;6007:87;:::o;6423:167::-;6501:4;6518:42;6528:12;:10;:12::i;:::-;6542:9;6553:6;6518:9;:42::i;:::-;6578:4;6571:11;;6423:167;;;;:::o;4529:58::-;;;;:::o;5349:270::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5440:6:::1;5430:7;:16;;;;5468:7;5457:8;:18;;;;5519:10;;5508:7;;:21;;:61;;;;;5558:11;;5546:8;;:23;;5508:61;5486:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;5349:270:::0;;:::o;10610:711::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10673:1:::1;10665:7;:9;;;;10694:11;;;;;;;;;;;10693:12;10685:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10780:42;10743:15;;:80;;;;;;;;;;;;;;;;;;10834:58;10851:4;10866:15;;;;;;;;;;;4216:1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;10834:8;:58::i;:::-;10937:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10919:55;;;10983:4;10990:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10919:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10903:13;;:110;;;;;;;;;;;;;;;;;;11024:15;;;;;;;;;;;:31;;;11063:21;11094:4;11100:24;11118:4;11100:9;:24::i;:::-;11125:1;11127::::0;11129:7:::1;:5;:7::i;:::-;11137:15;11024:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11171:13;;;;;;;;;;;11164:29;;;11202:15;;;;;;;;;;;11220:14;11164:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11260:4;11246:11;;:18;;;;;;;;;;;;;;;;;;11289:4;11275:11;;:18;;;;;;;;;;;;;;;;;;11312:1;11304:7;:9;;;;10610:711::o:0;13557:648::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13710:3:::1;13691:9;;:16;;:22;13683:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;13801:6;;:13;;13781:9;;:16;;:33;13773:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13871:12;13904:6:::0;13900:90:::1;13918:9;;:16;;13914:1;:20;13900:90;;;13969:6;;13976:1;13969:9;;;;;;;:::i;:::-;;;;;;;;13962:4;:16;;;;:::i;:::-;13955:23;;13936:3;;;;;:::i;:::-;;;;13900:90;;;;14029:4;14010:15;14020:4;14010:9;:15::i;:::-;:23;;14002:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14082:6;14078:110;14096:9;;:16;;14092:1;:20;14078:110;;;14133:43;14148:4;14153:9;;14163:1;14153:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14166:6;;14173:1;14166:9;;;;;;;:::i;:::-;;;;;;;;14133:14;:43::i;:::-;;14114:3;;;;;:::i;:::-;;;;14078:110;;;;13672:533;13557:648:::0;;;;;:::o;12057:255::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12159:1:::1;12144:12;:16;12136:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12220:36;12250:5;12220:25;12232:12;4216:1;4272:2;:13;;;;:::i;:::-;4259:10;:26;;;;:::i;:::-;12220:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;12205:12;:51;;;;12272:32;12291:12;;12272:32;;;;;;:::i;:::-;;;;;;;;12057:255:::0;:::o;6598:143::-;6679:7;6706:11;:18;6718:5;6706:18;;;;;;;;;;;;;;;:27;6725:7;6706:27;;;;;;;;;;;;;;;;6699:34;;6598:143;;;;:::o;12519:184::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12625:1:::1;12610:12;:16;12602:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;12683:12;12664:17;:31;;;;12519:184:::0;:::o;12882:96::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12964:6:::1;12951:11;;:19;;;;;;;;;;;;;;;;;;12882:96:::0;:::o;225:98::-;278:7;305:10;298:17;;225:98;:::o;7239:335::-;7349:1;7332:19;;:5;:19;;;7324:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7430:1;7411:21;;:7;:21;;;7403:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7512:6;7482:11;:18;7494:5;7482:18;;;;;;;;;;;;;;;:27;7501:7;7482:27;;;;;;;;;;;;;;;:36;;;;7550:7;7534:32;;7543:5;7534:32;;;7559:6;7534:32;;;;;;:::i;:::-;;;;;;;;7239:335;;;:::o;7582:1848::-;7686:1;7670:18;;:4;:18;;;7662:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7763:1;7749:16;;:2;:16;;;7741:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7833:1;7824:6;:10;7816:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7891:17;7933:7;:5;:7::i;:::-;7925:15;;:4;:15;;;;:32;;;;;7950:7;:5;:7::i;:::-;7944:13;;:2;:13;;;;7925:32;7921:1153;;;7983:4;:10;7988:4;7983:10;;;;;;;;;;;;;;;;;;;;;;;;;7982:11;:24;;;;;7998:4;:8;8003:2;7998:8;;;;;;;;;;;;;;;;;;;;;;;;;7997:9;7982:24;7974:33;;;;;;8034:28;8058:3;8034:19;8045:7;;8034:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;8022:40;;8103:13;;;;;;;;;;;8095:21;;:4;:21;;;:55;;;;;8134:15;;;;;;;;;;;8120:30;;:2;:30;;;;8095:55;:83;;;;;8156:18;:22;8175:2;8156:22;;;;;;;;;;;;;;;;;;;;;;;;;8154:24;8095:83;8091:313;;;8218:12;;8208:6;:22;;8200:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8313:14;;8303:6;8287:13;8297:2;8287:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8279:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8377:9;;:11;;;;;;;;;:::i;:::-;;;;;;8091:313;8443:13;;;;;;;;;;;8437:19;;:2;:19;;;:43;;;;;8475:4;8460:20;;:4;:20;;;;8437:43;8434:124;;;8513:29;8538:3;8513:20;8524:8;;8513:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;8501:41;;8434:124;8574:28;8605:24;8623:4;8605:9;:24::i;:::-;8574:55;;8649:6;;;;;;;;;;;8648:7;:30;;;;;8665:13;;;;;;;;;;;8659:19;;:2;:19;;;8648:30;:45;;;;;8682:11;;;;;;;;;;;8648:45;:87;;;;;8718:17;;8697:20;:38;8648:87;:119;;;;;8749:18;;8739:9;;:28;8648:119;8644:419;;;8788:67;8805:49;8809:6;8816:37;8820:20;8841:11;;8816:3;:37::i;:::-;8805:3;:49::i;:::-;8788:16;:67::i;:::-;8874:26;8903:21;8874:50;;8967:1;8946:18;:22;8943:105;;;8993:35;9006:21;8993:12;:35::i;:::-;8943:105;8769:294;8644:419;7959:1115;7921:1153;9099:1;9089:9;:11;9086:161;;;9139:39;9168:9;9139;:24;9157:4;9139:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9114:9;:24;9132:4;9114:24;;;;;;;;;;;;;;;:64;;;;9219:4;9196:39;;9205:4;9196:39;;;9225:9;9196:39;;;;;;:::i;:::-;;;;;;;;9086:161;9273:27;9293:6;9273:9;:15;9283:4;9273:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9257:9;:15;9267:4;9257:15;;;;;;;;;;;;;;;:43;;;;9325:40;9343:21;9354:9;9343:6;:10;;:21;;;;:::i;:::-;9325:9;:13;9335:2;9325:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9311:9;:13;9321:2;9311:13;;;;;;;;;;;;;;;:54;;;;9396:2;9381:41;;9390:4;9381:41;;;9400:21;9411:9;9400:6;:10;;:21;;;;:::i;:::-;9381:41;;;;;;:::i;:::-;;;;;;;;7651:1779;7582:1848;;;:::o;1362:190::-;1448:7;1481:1;1476;:6;;1484:12;1468:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1508:9;1524:1;1520;:5;;;;:::i;:::-;1508:17;;1543:1;1536:8;;;1362:190;;;;;:::o;9546:483::-;4937:4;4928:6;;:13;;;;;;;;;;;;;;;;;;9624:21:::1;9662:1;9648:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9624:40;;9693:4;9675;9680:1;9675:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9719:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9709:4;9714:1;9709:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9752:62;9769:4;9784:15;;;;;;;;;;;9802:11;9752:8;:62::i;:::-;9825:15;;;;;;;;;;;:66;;;9906:11;9932:1;9948:4;9975;9995:15;9825:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9613:416;4973:5:::0;4964:6;;:14;;;;;;;;;;;;;;;;;;9546:483;:::o;10419:92::-;10476:10;;;;;;;;;;;:19;;:27;10496:6;10476:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10419:92;:::o;1560:246::-;1618:7;1647:1;1642;:6;1638:47;;1672:1;1665:8;;;;1638:47;1695:9;1711:1;1707;:5;;;;:::i;:::-;1695:17;;1740:1;1735;1731;:5;;;;:::i;:::-;:10;1723:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1797:1;1790:8;;;1560:246;;;;;:::o;1814:132::-;1872:7;1899:39;1903:1;1906;1899:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1892:46;;1814:132;;;;:::o;13219:330::-;13312:4;13349:53;13371:6;13349:53;;;;;;;;;;;;;;;;;:9;:17;13359:6;13349:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;13329:9;:17;13339:6;13329:17;;;;;;;;;;;;;;;:73;;;;13436:32;13461:6;13436:9;:20;13446:9;13436:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13413:9;:20;13423:9;13413:20;;;;;;;;;;;;;;;:55;;;;13501:9;13484:35;;13493:6;13484:35;;;13512:6;13484:35;;;;;;:::i;:::-;;;;;;;;13537:4;13530:11;;13219:330;;;;;:::o;9440:98::-;9497:7;9524:1;9522;:3;9521:9;;9529:1;9521:9;;;9527:1;9521:9;9514:16;;9440:98;;;;:::o;1031:179::-;1089:7;1109:9;1125:1;1121;:5;;;;:::i;:::-;1109:17;;1150:1;1145;:6;;1137:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1201:1;1194:8;;;1031:179;;;;:::o;1218:136::-;1276:7;1303:43;1307:1;1310;1303:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1296:50;;1218:136;;;;:::o;1954:189::-;2040:7;2072:1;2068;:5;2075:12;2060:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2099:9;2115:1;2111;:5;;;;:::i;:::-;2099:17;;2134:1;2127:8;;;1954:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::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:329::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:117::-;6464:1;6461;6454:12;6478:117;6587:1;6584;6577:12;6601:117;6710:1;6707;6700:12;6741:568;6814:8;6824:6;6874:3;6867:4;6859:6;6855:17;6851:27;6841:122;;6882:79;;:::i;:::-;6841:122;6995:6;6982:20;6972:30;;7025:18;7017:6;7014:30;7011:117;;;7047:79;;:::i;:::-;7011:117;7161:4;7153:6;7149:17;7137:29;;7215:3;7207:4;7199:6;7195:17;7185:8;7181:32;7178:41;7175:128;;;7222:79;;:::i;:::-;7175:128;6741:568;;;;;:::o;7332:::-;7405:8;7415:6;7465:3;7458:4;7450:6;7446:17;7442:27;7432:122;;7473:79;;:::i;:::-;7432:122;7586:6;7573:20;7563:30;;7616:18;7608:6;7605:30;7602:117;;;7638:79;;:::i;:::-;7602:117;7752:4;7744:6;7740:17;7728:29;;7806:3;7798:4;7790:6;7786:17;7776:8;7772:32;7769:41;7766:128;;;7813:79;;:::i;:::-;7766:128;7332:568;;;;;:::o;7906:1079::-;8037:6;8045;8053;8061;8069;8118:2;8106:9;8097:7;8093:23;8089:32;8086:119;;;8124:79;;:::i;:::-;8086:119;8244:1;8269:53;8314:7;8305:6;8294:9;8290:22;8269:53;:::i;:::-;8259:63;;8215:117;8399:2;8388:9;8384:18;8371:32;8430:18;8422:6;8419:30;8416:117;;;8452:79;;:::i;:::-;8416:117;8565:80;8637:7;8628:6;8617:9;8613:22;8565:80;:::i;:::-;8547:98;;;;8342:313;8722:2;8711:9;8707:18;8694:32;8753:18;8745:6;8742:30;8739:117;;;8775:79;;:::i;:::-;8739:117;8888:80;8960:7;8951:6;8940:9;8936:22;8888:80;:::i;:::-;8870:98;;;;8665:313;7906:1079;;;;;;;;:::o;8991:474::-;9059:6;9067;9116:2;9104:9;9095:7;9091:23;9087:32;9084:119;;;9122:79;;:::i;:::-;9084:119;9242:1;9267:53;9312:7;9303:6;9292:9;9288:22;9267:53;:::i;:::-;9257:63;;9213:117;9369:2;9395:53;9440:7;9431:6;9420:9;9416:22;9395:53;:::i;:::-;9385:63;;9340:118;8991:474;;;;;:::o;9471:116::-;9541:21;9556:5;9541:21;:::i;:::-;9534:5;9531:32;9521:60;;9577:1;9574;9567:12;9521:60;9471:116;:::o;9593:133::-;9636:5;9674:6;9661:20;9652:29;;9690:30;9714:5;9690:30;:::i;:::-;9593:133;;;;:::o;9732:323::-;9788:6;9837:2;9825:9;9816:7;9812:23;9808:32;9805:119;;;9843:79;;:::i;:::-;9805:119;9963:1;9988:50;10030:7;10021:6;10010:9;10006:22;9988:50;:::i;:::-;9978:60;;9934:114;9732:323;;;;:::o;10061:182::-;10201:34;10197:1;10189:6;10185:14;10178:58;10061:182;:::o;10249:366::-;10391:3;10412:67;10476:2;10471:3;10412:67;:::i;:::-;10405:74;;10488:93;10577:3;10488:93;:::i;:::-;10606:2;10601:3;10597:12;10590:19;;10249:366;;;:::o;10621:419::-;10787:4;10825:2;10814:9;10810:18;10802:26;;10874:9;10868:4;10864:20;10860:1;10849:9;10845:17;10838:47;10902:131;11028:4;10902:131;:::i;:::-;10894:139;;10621:419;;;:::o;11046:172::-;11186:24;11182:1;11174:6;11170:14;11163:48;11046:172;:::o;11224:366::-;11366:3;11387:67;11451:2;11446:3;11387:67;:::i;:::-;11380:74;;11463:93;11552:3;11463:93;:::i;:::-;11581:2;11576:3;11572:12;11565:19;;11224:366;;;:::o;11596:419::-;11762:4;11800:2;11789:9;11785:18;11777:26;;11849:9;11843:4;11839:20;11835:1;11824:9;11820:17;11813:47;11877:131;12003:4;11877:131;:::i;:::-;11869:139;;11596:419;;;:::o;12021:180::-;12069:77;12066:1;12059:88;12166:4;12163:1;12156:15;12190:4;12187:1;12180:15;12207:102;12249:8;12296:5;12293:1;12289:13;12268:34;;12207:102;;;:::o;12315:848::-;12376:5;12383:4;12407:6;12398:15;;12431:5;12422:14;;12445:712;12466:1;12456:8;12453:15;12445:712;;;12561:4;12556:3;12552:14;12546:4;12543:24;12540:50;;;12570:18;;:::i;:::-;12540:50;12620:1;12610:8;12606:16;12603:451;;;13035:4;13028:5;13024:16;13015:25;;12603:451;13085:4;13079;13075:15;13067:23;;13115:32;13138:8;13115:32;:::i;:::-;13103:44;;12445:712;;;12315:848;;;;;;;:::o;13169:1073::-;13223:5;13414:8;13404:40;;13435:1;13426:10;;13437:5;;13404:40;13463:4;13453:36;;13480:1;13471:10;;13482:5;;13453:36;13549:4;13597:1;13592:27;;;;13633:1;13628:191;;;;13542:277;;13592:27;13610:1;13601:10;;13612:5;;;13628:191;13673:3;13663:8;13660:17;13657:43;;;13680:18;;:::i;:::-;13657:43;13729:8;13726:1;13722:16;13713:25;;13764:3;13757:5;13754:14;13751:40;;;13771:18;;:::i;:::-;13751:40;13804:5;;;13542:277;;13928:2;13918:8;13915:16;13909:3;13903:4;13900:13;13896:36;13878:2;13868:8;13865:16;13860:2;13854:4;13851:12;13847:35;13831:111;13828:246;;;13984:8;13978:4;13974:19;13965:28;;14019:3;14012:5;14009:14;14006:40;;;14026:18;;:::i;:::-;14006:40;14059:5;;13828:246;14099:42;14137:3;14127:8;14121:4;14118:1;14099:42;:::i;:::-;14084:57;;;;14173:4;14168:3;14164:14;14157:5;14154:25;14151:51;;;14182:18;;:::i;:::-;14151:51;14231:4;14224:5;14220:16;14211:25;;13169:1073;;;;;;:::o;14248:281::-;14306:5;14330:23;14348:4;14330:23;:::i;:::-;14322:31;;14374:25;14390:8;14374:25;:::i;:::-;14362:37;;14418:104;14455:66;14445:8;14439:4;14418:104;:::i;:::-;14409:113;;14248:281;;;;:::o;14535:410::-;14575:7;14598:20;14616:1;14598:20;:::i;:::-;14593:25;;14632:20;14650:1;14632:20;:::i;:::-;14627:25;;14687:1;14684;14680:9;14709:30;14727:11;14709:30;:::i;:::-;14698:41;;14888:1;14879:7;14875:15;14872:1;14869:22;14849:1;14842:9;14822:83;14799:139;;14918:18;;:::i;:::-;14799:139;14583:362;14535:410;;;;:::o;14951:179::-;15091:31;15087:1;15079:6;15075:14;15068:55;14951:179;:::o;15136:366::-;15278:3;15299:67;15363:2;15358:3;15299:67;:::i;:::-;15292:74;;15375:93;15464:3;15375:93;:::i;:::-;15493:2;15488:3;15484:12;15477:19;;15136:366;;;:::o;15508:419::-;15674:4;15712:2;15701:9;15697:18;15689:26;;15761:9;15755:4;15751:20;15747:1;15736:9;15732:17;15725:47;15789:131;15915:4;15789:131;:::i;:::-;15781:139;;15508:419;;;:::o;15933:180::-;15981:77;15978:1;15971:88;16078:4;16075:1;16068:15;16102:4;16099:1;16092:15;16119:185;16159:1;16176:20;16194:1;16176:20;:::i;:::-;16171:25;;16210:20;16228:1;16210:20;:::i;:::-;16205:25;;16249:1;16239:35;;16254:18;;:::i;:::-;16239:35;16296:1;16293;16289:9;16284:14;;16119:185;;;;:::o;16310:164::-;16450:16;16446:1;16438:6;16434:14;16427:40;16310:164;:::o;16480:366::-;16622:3;16643:67;16707:2;16702:3;16643:67;:::i;:::-;16636:74;;16719:93;16808:3;16719:93;:::i;:::-;16837:2;16832:3;16828:12;16821:19;;16480:366;;;:::o;16852:419::-;17018:4;17056:2;17045:9;17041:18;17033:26;;17105:9;17099:4;17095:20;17091:1;17080:9;17076:17;17069:47;17133:131;17259:4;17133:131;:::i;:::-;17125:139;;16852:419;;;:::o;17277:173::-;17417:25;17413:1;17405:6;17401:14;17394:49;17277:173;:::o;17456:366::-;17598:3;17619:67;17683:2;17678:3;17619:67;:::i;:::-;17612:74;;17695:93;17784:3;17695:93;:::i;:::-;17813:2;17808:3;17804:12;17797:19;;17456:366;;;:::o;17828:419::-;17994:4;18032:2;18021:9;18017:18;18009:26;;18081:9;18075:4;18071:20;18067:1;18056:9;18052:17;18045:47;18109:131;18235:4;18109:131;:::i;:::-;18101:139;;17828:419;;;:::o;18253:143::-;18310:5;18341:6;18335:13;18326:22;;18357:33;18384:5;18357:33;:::i;:::-;18253:143;;;;:::o;18402:351::-;18472:6;18521:2;18509:9;18500:7;18496:23;18492:32;18489:119;;;18527:79;;:::i;:::-;18489:119;18647:1;18672:64;18728:7;18719:6;18708:9;18704:22;18672:64;:::i;:::-;18662:74;;18618:128;18402:351;;;;:::o;18759:332::-;18880:4;18918:2;18907:9;18903:18;18895:26;;18931:71;18999:1;18988:9;18984:17;18975:6;18931:71;:::i;:::-;19012:72;19080:2;19069:9;19065:18;19056:6;19012:72;:::i;:::-;18759:332;;;;;:::o;19097:85::-;19142:7;19171:5;19160:16;;19097:85;;;:::o;19188:60::-;19216:3;19237:5;19230:12;;19188:60;;;:::o;19254:158::-;19312:9;19345:61;19363:42;19372:32;19398:5;19372:32;:::i;:::-;19363:42;:::i;:::-;19345:61;:::i;:::-;19332:74;;19254:158;;;:::o;19418:147::-;19513:45;19552:5;19513:45;:::i;:::-;19508:3;19501:58;19418:147;;:::o;19571:807::-;19820:4;19858:3;19847:9;19843:19;19835:27;;19872:71;19940:1;19929:9;19925:17;19916:6;19872:71;:::i;:::-;19953:72;20021:2;20010:9;20006:18;19997:6;19953:72;:::i;:::-;20035:80;20111:2;20100:9;20096:18;20087:6;20035:80;:::i;:::-;20125;20201:2;20190:9;20186:18;20177:6;20125:80;:::i;:::-;20215:73;20283:3;20272:9;20268:19;20259:6;20215:73;:::i;:::-;20298;20366:3;20355:9;20351:19;20342:6;20298:73;:::i;:::-;19571:807;;;;;;;;;:::o;20384:143::-;20441:5;20472:6;20466:13;20457:22;;20488:33;20515:5;20488:33;:::i;:::-;20384:143;;;;:::o;20533:663::-;20621:6;20629;20637;20686:2;20674:9;20665:7;20661:23;20657:32;20654:119;;;20692:79;;:::i;:::-;20654:119;20812:1;20837:64;20893:7;20884:6;20873:9;20869:22;20837:64;:::i;:::-;20827:74;;20783:128;20950:2;20976:64;21032:7;21023:6;21012:9;21008:22;20976:64;:::i;:::-;20966:74;;20921:129;21089:2;21115:64;21171:7;21162:6;21151:9;21147:22;21115:64;:::i;:::-;21105:74;;21060:129;20533:663;;;;;:::o;21202:332::-;21323:4;21361:2;21350:9;21346:18;21338:26;;21374:71;21442:1;21431:9;21427:17;21418:6;21374:71;:::i;:::-;21455:72;21523:2;21512:9;21508:18;21499:6;21455:72;:::i;:::-;21202:332;;;;;:::o;21540:137::-;21594:5;21625:6;21619:13;21610:22;;21641:30;21665:5;21641:30;:::i;:::-;21540:137;;;;:::o;21683:345::-;21750:6;21799:2;21787:9;21778:7;21774:23;21770:32;21767:119;;;21805:79;;:::i;:::-;21767:119;21925:1;21950:61;22003:7;21994:6;21983:9;21979:22;21950:61;:::i;:::-;21940:71;;21896:125;21683:345;;;;:::o;22034:232::-;22174:34;22170:1;22162:6;22158:14;22151:58;22243:15;22238:2;22230:6;22226:15;22219:40;22034:232;:::o;22272:366::-;22414:3;22435:67;22499:2;22494:3;22435:67;:::i;:::-;22428:74;;22511:93;22600:3;22511:93;:::i;:::-;22629:2;22624:3;22620:12;22613:19;;22272:366;;;:::o;22644:419::-;22810:4;22848:2;22837:9;22833:18;22825:26;;22897:9;22891:4;22887:20;22883:1;22872:9;22868:17;22861:47;22925:131;23051:4;22925:131;:::i;:::-;22917:139;;22644:419;;;:::o;23069:227::-;23209:34;23205:1;23197:6;23193:14;23186:58;23278:10;23273:2;23265:6;23261:15;23254:35;23069:227;:::o;23302:366::-;23444:3;23465:67;23529:2;23524:3;23465:67;:::i;:::-;23458:74;;23541:93;23630:3;23541:93;:::i;:::-;23659:2;23654:3;23650:12;23643:19;;23302:366;;;:::o;23674:419::-;23840:4;23878:2;23867:9;23863:18;23855:26;;23927:9;23921:4;23917:20;23913:1;23902:9;23898:17;23891:47;23955:131;24081:4;23955:131;:::i;:::-;23947:139;;23674:419;;;:::o;24099:180::-;24147:77;24144:1;24137:88;24244:4;24241:1;24234:15;24268:4;24265:1;24258:15;24285:191;24325:3;24344:20;24362:1;24344:20;:::i;:::-;24339:25;;24378:20;24396:1;24378:20;:::i;:::-;24373:25;;24421:1;24418;24414:9;24407:16;;24442:3;24439:1;24436:10;24433:36;;;24449:18;;:::i;:::-;24433:36;24285:191;;;;:::o;24482:233::-;24521:3;24544:24;24562:5;24544:24;:::i;:::-;24535:33;;24590:66;24583:5;24580:77;24577:103;;24660:18;;:::i;:::-;24577:103;24707:1;24700:5;24696:13;24689:20;;24482:233;;;:::o;24721:177::-;24861:29;24857:1;24849:6;24845:14;24838:53;24721:177;:::o;24904:366::-;25046:3;25067:67;25131:2;25126:3;25067:67;:::i;:::-;25060:74;;25143:93;25232:3;25143:93;:::i;:::-;25261:2;25256:3;25252:12;25245:19;;24904:366;;;:::o;25276:419::-;25442:4;25480:2;25469:9;25465:18;25457:26;;25529:9;25523:4;25519:20;25515:1;25504:9;25500:17;25493:47;25557:131;25683:4;25557:131;:::i;:::-;25549:139;;25276:419;;;:::o;25701:223::-;25841:34;25837:1;25829:6;25825:14;25818:58;25910:6;25905:2;25897:6;25893:15;25886:31;25701:223;:::o;25930:366::-;26072:3;26093:67;26157:2;26152:3;26093:67;:::i;:::-;26086:74;;26169:93;26258:3;26169:93;:::i;:::-;26287:2;26282:3;26278:12;26271:19;;25930:366;;;:::o;26302:419::-;26468:4;26506:2;26495:9;26491:18;26483:26;;26555:9;26549:4;26545:20;26541:1;26530:9;26526:17;26519:47;26583:131;26709:4;26583:131;:::i;:::-;26575:139;;26302:419;;;:::o;26727:221::-;26867:34;26863:1;26855:6;26851:14;26844:58;26936:4;26931:2;26923:6;26919:15;26912:29;26727:221;:::o;26954:366::-;27096:3;27117:67;27181:2;27176:3;27117:67;:::i;:::-;27110:74;;27193:93;27282:3;27193:93;:::i;:::-;27311:2;27306:3;27302:12;27295:19;;26954:366;;;:::o;27326:419::-;27492:4;27530:2;27519:9;27515:18;27507:26;;27579:9;27573:4;27569:20;27565:1;27554:9;27550:17;27543:47;27607:131;27733:4;27607:131;:::i;:::-;27599:139;;27326:419;;;:::o;27751:224::-;27891:34;27887:1;27879:6;27875:14;27868:58;27960:7;27955:2;27947:6;27943:15;27936:32;27751:224;:::o;27981:366::-;28123:3;28144:67;28208:2;28203:3;28144:67;:::i;:::-;28137:74;;28220:93;28309:3;28220:93;:::i;:::-;28338:2;28333:3;28329:12;28322:19;;27981:366;;;:::o;28353:419::-;28519:4;28557:2;28546:9;28542:18;28534:26;;28606:9;28600:4;28596:20;28592:1;28581:9;28577:17;28570:47;28634:131;28760:4;28634:131;:::i;:::-;28626:139;;28353:419;;;:::o;28778:222::-;28918:34;28914:1;28906:6;28902:14;28895:58;28987:5;28982:2;28974:6;28970:15;28963:30;28778:222;:::o;29006:366::-;29148:3;29169:67;29233:2;29228:3;29169:67;:::i;:::-;29162:74;;29245:93;29334:3;29245:93;:::i;:::-;29363:2;29358:3;29354:12;29347:19;;29006:366;;;:::o;29378:419::-;29544:4;29582:2;29571:9;29567:18;29559:26;;29631:9;29625:4;29621:20;29617:1;29606:9;29602:17;29595:47;29659:131;29785:4;29659:131;:::i;:::-;29651:139;;29378:419;;;:::o;29803:228::-;29943:34;29939:1;29931:6;29927:14;29920:58;30012:11;30007:2;29999:6;29995:15;29988:36;29803:228;:::o;30037:366::-;30179:3;30200:67;30264:2;30259:3;30200:67;:::i;:::-;30193:74;;30276:93;30365:3;30276:93;:::i;:::-;30394:2;30389:3;30385:12;30378:19;;30037:366;;;:::o;30409:419::-;30575:4;30613:2;30602:9;30598:18;30590:26;;30662:9;30656:4;30652:20;30648:1;30637:9;30633:17;30626:47;30690:131;30816:4;30690:131;:::i;:::-;30682:139;;30409:419;;;:::o;30834:175::-;30974:27;30970:1;30962:6;30958:14;30951:51;30834:175;:::o;31015:366::-;31157:3;31178:67;31242:2;31237:3;31178:67;:::i;:::-;31171:74;;31254:93;31343:3;31254:93;:::i;:::-;31372:2;31367:3;31363:12;31356:19;;31015:366;;;:::o;31387:419::-;31553:4;31591:2;31580:9;31576:18;31568:26;;31640:9;31634:4;31630:20;31626:1;31615:9;31611:17;31604:47;31668:131;31794:4;31668:131;:::i;:::-;31660:139;;31387:419;;;:::o;31812:176::-;31952:28;31948:1;31940:6;31936:14;31929:52;31812:176;:::o;31994:366::-;32136:3;32157:67;32221:2;32216:3;32157:67;:::i;:::-;32150:74;;32233:93;32322:3;32233:93;:::i;:::-;32351:2;32346:3;32342:12;32335:19;;31994:366;;;:::o;32366:419::-;32532:4;32570:2;32559:9;32555:18;32547:26;;32619:9;32613:4;32609:20;32605:1;32594:9;32590:17;32583:47;32647:131;32773:4;32647:131;:::i;:::-;32639:139;;32366:419;;;:::o;32791:194::-;32831:4;32851:20;32869:1;32851:20;:::i;:::-;32846:25;;32885:20;32903:1;32885:20;:::i;:::-;32880:25;;32929:1;32926;32922:9;32914:17;;32953:1;32947:4;32944:11;32941:37;;;32958:18;;:::i;:::-;32941:37;32791:194;;;;:::o;32991:180::-;33039:77;33036:1;33029:88;33136:4;33133:1;33126:15;33160:4;33157:1;33150:15;33177:114;33244:6;33278:5;33272:12;33262:22;;33177:114;;;:::o;33297:184::-;33396:11;33430:6;33425:3;33418:19;33470:4;33465:3;33461:14;33446:29;;33297:184;;;;:::o;33487:132::-;33554:4;33577:3;33569:11;;33607:4;33602:3;33598:14;33590:22;;33487:132;;;:::o;33625:108::-;33702:24;33720:5;33702:24;:::i;:::-;33697:3;33690:37;33625:108;;:::o;33739:179::-;33808:10;33829:46;33871:3;33863:6;33829:46;:::i;:::-;33907:4;33902:3;33898:14;33884:28;;33739:179;;;;:::o;33924:113::-;33994:4;34026;34021:3;34017:14;34009:22;;33924:113;;;:::o;34073:732::-;34192:3;34221:54;34269:5;34221:54;:::i;:::-;34291:86;34370:6;34365:3;34291:86;:::i;:::-;34284:93;;34401:56;34451:5;34401:56;:::i;:::-;34480:7;34511:1;34496:284;34521:6;34518:1;34515:13;34496:284;;;34597:6;34591:13;34624:63;34683:3;34668:13;34624:63;:::i;:::-;34617:70;;34710:60;34763:6;34710:60;:::i;:::-;34700:70;;34556:224;34543:1;34540;34536:9;34531:14;;34496:284;;;34500:14;34796:3;34789:10;;34197:608;;;34073:732;;;;:::o;34811:831::-;35074:4;35112:3;35101:9;35097:19;35089:27;;35126:71;35194:1;35183:9;35179:17;35170:6;35126:71;:::i;:::-;35207:80;35283:2;35272:9;35268:18;35259:6;35207:80;:::i;:::-;35334:9;35328:4;35324:20;35319:2;35308:9;35304:18;35297:48;35362:108;35465:4;35456:6;35362:108;:::i;:::-;35354:116;;35480:72;35548:2;35537:9;35533:18;35524:6;35480:72;:::i;:::-;35562:73;35630:3;35619:9;35615:19;35606:6;35562:73;:::i;:::-;34811:831;;;;;;;;:::o;35648:220::-;35788:34;35784:1;35776:6;35772:14;35765:58;35857:3;35852:2;35844:6;35840:15;35833:28;35648:220;:::o;35874:366::-;36016:3;36037:67;36101:2;36096:3;36037:67;:::i;:::-;36030:74;;36113:93;36202:3;36113:93;:::i;:::-;36231:2;36226:3;36222:12;36215:19;;35874:366;;;:::o;36246:419::-;36412:4;36450:2;36439:9;36435:18;36427:26;;36499:9;36493:4;36489:20;36485:1;36474:9;36470:17;36463:47;36527:131;36653:4;36527:131;:::i;:::-;36519:139;;36246:419;;;:::o;36671:177::-;36811:29;36807:1;36799:6;36795:14;36788:53;36671:177;:::o;36854:366::-;36996:3;37017:67;37081:2;37076:3;37017:67;:::i;:::-;37010:74;;37093:93;37182:3;37093:93;:::i;:::-;37211:2;37206:3;37202:12;37195:19;;36854:366;;;:::o;37226:419::-;37392:4;37430:2;37419:9;37415:18;37407:26;;37479:9;37473:4;37469:20;37465:1;37454:9;37450:17;37443:47;37507:131;37633:4;37507:131;:::i;:::-;37499:139;;37226:419;;;:::o

Swarm Source

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