ETH Price: $3,411.46 (+4.78%)
 

Overview

Max Total Supply

1,000,000,000 SAI

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,405,000 SAI

Value
$0.00
0xa4bd1840EcE832AFFef4444Ab289B84ecd55B959
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:
ShibaAI

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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);
    }

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

}

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract ShibaAI is Context, IERC20, Ownable {

    using SafeMath for uint256;
    //naming
    string private constant _name = "Shiba AI";
    string private constant _symbol = "SAI";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    //total supply

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    //fees

    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy =5;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 5;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x662A46e8C652699162Bde3100975BE59dd932F1c);
    address payable private _marketingAddress = payable(0x662A46e8C652699162Bde3100975BE59dd932F1c);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingstarts = false;
    bool private inSwap = false;
    bool private swappingEnabled = true;

    uint256 public _maxTxAmount =        10_000_000 * 10**9;
    uint256 public _maxWalletSize =      20_000_000 * 10**9;
    uint256 public _swapTokensAtAmount = 20_000_000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

    function enableTrading() external onlyOwner {
    tradingstarts = true;
    }

    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 tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingstarts) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swappingEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;


        _tokenTransfer(from, to, amount, takeFee);
    }

    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 sendETHToFee(uint256 amount) private {
        uint256 tfrAmt = amount.div(2);
        _marketingAddress.transfer(tfrAmt);
        _developmentAddress.transfer(amount.sub(tfrAmt));
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }


    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }


    //Set maximum transaction
    function setMaxTxn(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c91906200075a565b6000196200002b9190620007c1565b600655600060085560056009556000600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5573662a46e8c652699162bde3100975be59dd932f1c601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073662a46e8c652699162bde3100975be59dd932f1c601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550662386f26fc1000060165566470de4df82000060175566470de4df8200006018553480156200018257600080fd5b50600062000195620006f060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024a620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032957600080fd5b505afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000364919062000866565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c757600080fd5b505afa158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000402919062000866565b6040518363ffffffff1660e01b815260040162000421929190620008a9565b602060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000477919062000866565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cd620006f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200067a620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e19190620008e7565b60405180910390a35062000904565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007678262000721565b9150620007748362000721565b9250826200078757620007866200072b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007ce8262000721565b9150620007db8362000721565b925082821015620007f157620007f062000792565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082e8262000801565b9050919050565b620008408162000821565b81146200084c57600080fd5b50565b600081519050620008608162000835565b92915050565b6000602082840312156200087f576200087e620007fc565b5b60006200088f848285016200084f565b91505092915050565b620008a38162000821565b82525050565b6000604082019050620008c0600083018562000898565b620008cf602083018462000898565b9392505050565b620008e18162000721565b82525050565b6000602082019050620008fe6000830184620008d6565b92915050565b61391480620009146000396000f3fe6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105e2578063dd62ed3e1461060b578063f2fde38b14610648578063fc588c0414610671576101c1565b8063a9059cbb14610551578063bfd792841461058e578063c3c8cd80146105cb576101c1565b80638da5cb5b116100c65780638da5cb5b146104a75780638f9a55c0146104d257806395d89b41146104fd57806398a5c31514610528576101c1565b80637d1db4a5146104285780637f2feddc146104535780638a8c523c14610490576101c1565b8063313ce567116101595780636b999053116101335780636b999053146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780635d0044ca1461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612934565b61069a565b005b3480156101fb57600080fd5b506102046107c4565b6040516102119190612a05565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612a5d565b610801565b60405161024e9190612ab8565b60405180910390f35b34801561026357600080fd5b5061026c61081f565b6040516102799190612b32565b60405180910390f35b34801561028e57600080fd5b50610297610845565b6040516102a49190612b5c565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612b77565b610855565b6040516102e19190612ab8565b60405180910390f35b3480156102f657600080fd5b506102ff61092e565b60405161030c9190612b5c565b60405180910390f35b34801561032157600080fd5b5061032a610934565b6040516103379190612be6565b60405180910390f35b34801561034c57600080fd5b5061035561093d565b6040516103629190612c10565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612c2b565b610963565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612c58565b610a02565b005b3480156103c957600080fd5b506103d2610af2565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612c58565b610bc3565b6040516104089190612b5c565b60405180910390f35b34801561041d57600080fd5b50610426610c14565b005b34801561043457600080fd5b5061043d610d67565b60405161044a9190612b5c565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612c58565b610d6d565b6040516104879190612b5c565b60405180910390f35b34801561049c57600080fd5b506104a5610d85565b005b3480156104b357600080fd5b506104bc610e37565b6040516104c99190612c10565b60405180910390f35b3480156104de57600080fd5b506104e7610e60565b6040516104f49190612b5c565b60405180910390f35b34801561050957600080fd5b50610512610e66565b60405161051f9190612a05565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612c2b565b610ea3565b005b34801561055d57600080fd5b5061057860048036038101906105739190612a5d565b610f42565b6040516105859190612ab8565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612c58565b610f60565b6040516105c29190612ab8565b60405180910390f35b3480156105d757600080fd5b506105e0610f80565b005b3480156105ee57600080fd5b5061060960048036038101906106049190612d0c565b611059565b005b34801561061757600080fd5b50610632600480360381019061062d9190612d6c565b611193565b60405161063f9190612b5c565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612c58565b61121a565b005b34801561067d57600080fd5b5061069860048036038101906106939190612c2b565b6113dc565b005b6106a261147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072690612df8565b60405180910390fd5b60005b81518110156107c05760016010600084848151811061075457610753612e18565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107b890612e76565b915050610732565b5050565b60606040518060400160405280600881526020017f5368696261204149000000000000000000000000000000000000000000000000815250905090565b600061081561080e61147b565b8484611483565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061086284848461164e565b6109238461086e61147b565b61091e856040518060600160405280602881526020016138b760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108d461147b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bea9092919063ffffffff16565b611483565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61096b61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612df8565b60405180910390fd5b8060178190555050565b610a0a61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e90612df8565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b3361147b565b73ffffffffffffffffffffffffffffffffffffffff161480610ba95750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b9161147b565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb257600080fd5b6000479050610bc081611c4e565b50565b6000610c0d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4e565b9050919050565b610c1c61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090612df8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b610d8d61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190612df8565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f5341490000000000000000000000000000000000000000000000000000000000815250905090565b610eab61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f90612df8565b60405180910390fd5b8060188190555050565b6000610f56610f4f61147b565b848461164e565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc161147b565b73ffffffffffffffffffffffffffffffffffffffff1614806110375750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661101f61147b565b73ffffffffffffffffffffffffffffffffffffffff16145b61104057600080fd5b600061104b30610bc3565b905061105681611dbc565b50565b61106161147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590612df8565b60405180910390fd5b60005b8383905081101561118d57816005600086868581811061111457611113612e18565b5b90506020020160208101906111299190612c58565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118590612e76565b9150506110f1565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61122261147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690612df8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690612f31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113e461147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890612df8565b60405180910390fd5b8060168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea90612fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90613055565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116419190612b5c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b5906130e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590613179565b60405180910390fd5b60008111611771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117689061320b565b60405180910390fd5b611779610e37565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117e757506117b7610e37565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bd257601560149054906101000a900460ff1661187657611808610e37565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c9061329d565b60405180910390fd5b5b6016548111156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290613309565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561195f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61199e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119959061339b565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a4b5760175481611a0084610bc3565b611a0a91906133bb565b10611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4190613483565b60405180910390fd5b5b6000611a5630610bc3565b9050600060185482101590506016548210611a715760165491505b808015611a89575060158054906101000a900460ff16155b8015611ae35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611afb5750601560169054906101000a900460ff165b8015611b515750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ba75750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bcf57611bb582611dbc565b60004790506000811115611bcd57611bcc47611c4e565b5b505b50505b600060019050611be484848484612042565b50505050565b6000838311158290611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c299190612a05565b60405180910390fd5b5060008385611c4191906134a3565b9050809150509392505050565b6000611c6460028361206f90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cce573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d1e83856120b990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d49573d6000803e3d6000fd5b505050565b6000600654821115611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90613549565b60405180910390fd5b6000611d9f612103565b9050611db4818461206f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611df357611df2612793565b5b604051908082528060200260200182016040528015611e215781602001602082028036833780820191505090505b5090503081600081518110611e3957611e38612e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611edb57600080fd5b505afa158015611eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f13919061357e565b81600181518110611f2757611f26612e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f8e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611483565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ff29594939291906136a4565b600060405180830381600087803b15801561200c57600080fd5b505af1158015612020573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806120505761204f61212e565b5b61205b848484612171565b806120695761206861233c565b5b50505050565b60006120b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612350565b905092915050565b60006120fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bea565b905092915050565b60008060006121106123b3565b91509150612127818361206f90919063ffffffff16565b9250505090565b6000600c5414801561214257506000600d54145b1561214c5761216f565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061218387612412565b9550955095509550955095506121e186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122c2816124d8565b6122cc8483612595565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123299190612b5c565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e9190612a05565b60405180910390fd5b50600083856123a6919061372d565b9050809150509392505050565b600080600060065490506000670de0b6b3a764000090506123e7670de0b6b3a764000060065461206f90919063ffffffff16565b82101561240557600654670de0b6b3a764000093509350505061240e565b81819350935050505b9091565b600080600080600080600080600061242f8a600c54600d546125cf565b925092509250600061243f612103565b905060008060006124528e878787612665565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600080828461248991906133bb565b9050838110156124ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c5906137aa565b60405180910390fd5b8091505092915050565b60006124e2612103565b905060006124f982846126ee90919063ffffffff16565b905061254d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125aa826006546120b990919063ffffffff16565b6006819055506125c58160075461247a90919063ffffffff16565b6007819055505050565b6000806000806125fb60646125ed888a6126ee90919063ffffffff16565b61206f90919063ffffffff16565b905060006126256064612617888b6126ee90919063ffffffff16565b61206f90919063ffffffff16565b9050600061264e82612640858c6120b990919063ffffffff16565b6120b990919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061267e85896126ee90919063ffffffff16565b9050600061269586896126ee90919063ffffffff16565b905060006126ac87896126ee90919063ffffffff16565b905060006126d5826126c785876120b990919063ffffffff16565b6120b990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127015760009050612763565b6000828461270f91906137ca565b905082848261271e919061372d565b1461275e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275590613896565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127cb82612782565b810181811067ffffffffffffffff821117156127ea576127e9612793565b5b80604052505050565b60006127fd612769565b905061280982826127c2565b919050565b600067ffffffffffffffff82111561282957612828612793565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061286a8261283f565b9050919050565b61287a8161285f565b811461288557600080fd5b50565b60008135905061289781612871565b92915050565b60006128b06128ab8461280e565b6127f3565b905080838252602082019050602084028301858111156128d3576128d261283a565b5b835b818110156128fc57806128e88882612888565b8452602084019350506020810190506128d5565b5050509392505050565b600082601f83011261291b5761291a61277d565b5b813561292b84826020860161289d565b91505092915050565b60006020828403121561294a57612949612773565b5b600082013567ffffffffffffffff81111561296857612967612778565b5b61297484828501612906565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129b757808201518184015260208101905061299c565b838111156129c6576000848401525b50505050565b60006129d78261297d565b6129e18185612988565b93506129f1818560208601612999565b6129fa81612782565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b6000819050919050565b612a3a81612a27565b8114612a4557600080fd5b50565b600081359050612a5781612a31565b92915050565b60008060408385031215612a7457612a73612773565b5b6000612a8285828601612888565b9250506020612a9385828601612a48565b9150509250929050565b60008115159050919050565b612ab281612a9d565b82525050565b6000602082019050612acd6000830184612aa9565b92915050565b6000819050919050565b6000612af8612af3612aee8461283f565b612ad3565b61283f565b9050919050565b6000612b0a82612add565b9050919050565b6000612b1c82612aff565b9050919050565b612b2c81612b11565b82525050565b6000602082019050612b476000830184612b23565b92915050565b612b5681612a27565b82525050565b6000602082019050612b716000830184612b4d565b92915050565b600080600060608486031215612b9057612b8f612773565b5b6000612b9e86828701612888565b9350506020612baf86828701612888565b9250506040612bc086828701612a48565b9150509250925092565b600060ff82169050919050565b612be081612bca565b82525050565b6000602082019050612bfb6000830184612bd7565b92915050565b612c0a8161285f565b82525050565b6000602082019050612c256000830184612c01565b92915050565b600060208284031215612c4157612c40612773565b5b6000612c4f84828501612a48565b91505092915050565b600060208284031215612c6e57612c6d612773565b5b6000612c7c84828501612888565b91505092915050565b600080fd5b60008083601f840112612ca057612c9f61277d565b5b8235905067ffffffffffffffff811115612cbd57612cbc612c85565b5b602083019150836020820283011115612cd957612cd861283a565b5b9250929050565b612ce981612a9d565b8114612cf457600080fd5b50565b600081359050612d0681612ce0565b92915050565b600080600060408486031215612d2557612d24612773565b5b600084013567ffffffffffffffff811115612d4357612d42612778565b5b612d4f86828701612c8a565b93509350506020612d6286828701612cf7565b9150509250925092565b60008060408385031215612d8357612d82612773565b5b6000612d9185828601612888565b9250506020612da285828601612888565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612de2602083612988565b9150612ded82612dac565b602082019050919050565b60006020820190508181036000830152612e1181612dd5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e8182612a27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612eb457612eb3612e47565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f1b602683612988565b9150612f2682612ebf565b604082019050919050565b60006020820190508181036000830152612f4a81612f0e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fad602483612988565b9150612fb882612f51565b604082019050919050565b60006020820190508181036000830152612fdc81612fa0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061303f602283612988565b915061304a82612fe3565b604082019050919050565b6000602082019050818103600083015261306e81613032565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d1602583612988565b91506130dc82613075565b604082019050919050565b60006020820190508181036000830152613100816130c4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613163602383612988565b915061316e82613107565b604082019050919050565b6000602082019050818103600083015261319281613156565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131f5602983612988565b915061320082613199565b604082019050919050565b60006020820190508181036000830152613224816131e8565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613287603f83612988565b91506132928261322b565b604082019050919050565b600060208201905081810360008301526132b68161327a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006132f3601c83612988565b91506132fe826132bd565b602082019050919050565b60006020820190508181036000830152613322816132e6565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613385602383612988565b915061339082613329565b604082019050919050565b600060208201905081810360008301526133b481613378565b9050919050565b60006133c682612a27565b91506133d183612a27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561340657613405612e47565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061346d602383612988565b915061347882613411565b604082019050919050565b6000602082019050818103600083015261349c81613460565b9050919050565b60006134ae82612a27565b91506134b983612a27565b9250828210156134cc576134cb612e47565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613533602a83612988565b915061353e826134d7565b604082019050919050565b6000602082019050818103600083015261356281613526565b9050919050565b60008151905061357881612871565b92915050565b60006020828403121561359457613593612773565b5b60006135a284828501613569565b91505092915050565b6000819050919050565b60006135d06135cb6135c6846135ab565b612ad3565b612a27565b9050919050565b6135e0816135b5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61361b8161285f565b82525050565b600061362d8383613612565b60208301905092915050565b6000602082019050919050565b6000613651826135e6565b61365b81856135f1565b935061366683613602565b8060005b8381101561369757815161367e8882613621565b975061368983613639565b92505060018101905061366a565b5085935050505092915050565b600060a0820190506136b96000830188612b4d565b6136c660208301876135d7565b81810360408301526136d88186613646565b90506136e76060830185612c01565b6136f46080830184612b4d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061373882612a27565b915061374383612a27565b925082613753576137526136fe565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613794601b83612988565b915061379f8261375e565b602082019050919050565b600060208201905081810360008301526137c381613787565b9050919050565b60006137d582612a27565b91506137e083612a27565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561381957613818612e47565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613880602183612988565b915061388b82613824565b604082019050919050565b600060208201905081810360008301526138af81613873565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122013353ffe50797d5b403478440397ea79be37121e46e1919a3875a72e5fde705a64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105e2578063dd62ed3e1461060b578063f2fde38b14610648578063fc588c0414610671576101c1565b8063a9059cbb14610551578063bfd792841461058e578063c3c8cd80146105cb576101c1565b80638da5cb5b116100c65780638da5cb5b146104a75780638f9a55c0146104d257806395d89b41146104fd57806398a5c31514610528576101c1565b80637d1db4a5146104285780637f2feddc146104535780638a8c523c14610490576101c1565b8063313ce567116101595780636b999053116101335780636b999053146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780635d0044ca1461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612934565b61069a565b005b3480156101fb57600080fd5b506102046107c4565b6040516102119190612a05565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612a5d565b610801565b60405161024e9190612ab8565b60405180910390f35b34801561026357600080fd5b5061026c61081f565b6040516102799190612b32565b60405180910390f35b34801561028e57600080fd5b50610297610845565b6040516102a49190612b5c565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612b77565b610855565b6040516102e19190612ab8565b60405180910390f35b3480156102f657600080fd5b506102ff61092e565b60405161030c9190612b5c565b60405180910390f35b34801561032157600080fd5b5061032a610934565b6040516103379190612be6565b60405180910390f35b34801561034c57600080fd5b5061035561093d565b6040516103629190612c10565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612c2b565b610963565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612c58565b610a02565b005b3480156103c957600080fd5b506103d2610af2565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612c58565b610bc3565b6040516104089190612b5c565b60405180910390f35b34801561041d57600080fd5b50610426610c14565b005b34801561043457600080fd5b5061043d610d67565b60405161044a9190612b5c565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612c58565b610d6d565b6040516104879190612b5c565b60405180910390f35b34801561049c57600080fd5b506104a5610d85565b005b3480156104b357600080fd5b506104bc610e37565b6040516104c99190612c10565b60405180910390f35b3480156104de57600080fd5b506104e7610e60565b6040516104f49190612b5c565b60405180910390f35b34801561050957600080fd5b50610512610e66565b60405161051f9190612a05565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612c2b565b610ea3565b005b34801561055d57600080fd5b5061057860048036038101906105739190612a5d565b610f42565b6040516105859190612ab8565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612c58565b610f60565b6040516105c29190612ab8565b60405180910390f35b3480156105d757600080fd5b506105e0610f80565b005b3480156105ee57600080fd5b5061060960048036038101906106049190612d0c565b611059565b005b34801561061757600080fd5b50610632600480360381019061062d9190612d6c565b611193565b60405161063f9190612b5c565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612c58565b61121a565b005b34801561067d57600080fd5b5061069860048036038101906106939190612c2b565b6113dc565b005b6106a261147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072690612df8565b60405180910390fd5b60005b81518110156107c05760016010600084848151811061075457610753612e18565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107b890612e76565b915050610732565b5050565b60606040518060400160405280600881526020017f5368696261204149000000000000000000000000000000000000000000000000815250905090565b600061081561080e61147b565b8484611483565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061086284848461164e565b6109238461086e61147b565b61091e856040518060600160405280602881526020016138b760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108d461147b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bea9092919063ffffffff16565b611483565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61096b61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612df8565b60405180910390fd5b8060178190555050565b610a0a61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e90612df8565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b3361147b565b73ffffffffffffffffffffffffffffffffffffffff161480610ba95750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b9161147b565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb257600080fd5b6000479050610bc081611c4e565b50565b6000610c0d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4e565b9050919050565b610c1c61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090612df8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b610d8d61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190612df8565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f5341490000000000000000000000000000000000000000000000000000000000815250905090565b610eab61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f90612df8565b60405180910390fd5b8060188190555050565b6000610f56610f4f61147b565b848461164e565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc161147b565b73ffffffffffffffffffffffffffffffffffffffff1614806110375750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661101f61147b565b73ffffffffffffffffffffffffffffffffffffffff16145b61104057600080fd5b600061104b30610bc3565b905061105681611dbc565b50565b61106161147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590612df8565b60405180910390fd5b60005b8383905081101561118d57816005600086868581811061111457611113612e18565b5b90506020020160208101906111299190612c58565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118590612e76565b9150506110f1565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61122261147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690612df8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690612f31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113e461147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890612df8565b60405180910390fd5b8060168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea90612fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90613055565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116419190612b5c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b5906130e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590613179565b60405180910390fd5b60008111611771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117689061320b565b60405180910390fd5b611779610e37565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117e757506117b7610e37565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bd257601560149054906101000a900460ff1661187657611808610e37565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c9061329d565b60405180910390fd5b5b6016548111156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290613309565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561195f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61199e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119959061339b565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a4b5760175481611a0084610bc3565b611a0a91906133bb565b10611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4190613483565b60405180910390fd5b5b6000611a5630610bc3565b9050600060185482101590506016548210611a715760165491505b808015611a89575060158054906101000a900460ff16155b8015611ae35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611afb5750601560169054906101000a900460ff165b8015611b515750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ba75750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bcf57611bb582611dbc565b60004790506000811115611bcd57611bcc47611c4e565b5b505b50505b600060019050611be484848484612042565b50505050565b6000838311158290611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c299190612a05565b60405180910390fd5b5060008385611c4191906134a3565b9050809150509392505050565b6000611c6460028361206f90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cce573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d1e83856120b990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d49573d6000803e3d6000fd5b505050565b6000600654821115611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90613549565b60405180910390fd5b6000611d9f612103565b9050611db4818461206f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611df357611df2612793565b5b604051908082528060200260200182016040528015611e215781602001602082028036833780820191505090505b5090503081600081518110611e3957611e38612e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611edb57600080fd5b505afa158015611eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f13919061357e565b81600181518110611f2757611f26612e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f8e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611483565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ff29594939291906136a4565b600060405180830381600087803b15801561200c57600080fd5b505af1158015612020573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806120505761204f61212e565b5b61205b848484612171565b806120695761206861233c565b5b50505050565b60006120b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612350565b905092915050565b60006120fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bea565b905092915050565b60008060006121106123b3565b91509150612127818361206f90919063ffffffff16565b9250505090565b6000600c5414801561214257506000600d54145b1561214c5761216f565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061218387612412565b9550955095509550955095506121e186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122c2816124d8565b6122cc8483612595565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123299190612b5c565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e9190612a05565b60405180910390fd5b50600083856123a6919061372d565b9050809150509392505050565b600080600060065490506000670de0b6b3a764000090506123e7670de0b6b3a764000060065461206f90919063ffffffff16565b82101561240557600654670de0b6b3a764000093509350505061240e565b81819350935050505b9091565b600080600080600080600080600061242f8a600c54600d546125cf565b925092509250600061243f612103565b905060008060006124528e878787612665565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600080828461248991906133bb565b9050838110156124ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c5906137aa565b60405180910390fd5b8091505092915050565b60006124e2612103565b905060006124f982846126ee90919063ffffffff16565b905061254d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125aa826006546120b990919063ffffffff16565b6006819055506125c58160075461247a90919063ffffffff16565b6007819055505050565b6000806000806125fb60646125ed888a6126ee90919063ffffffff16565b61206f90919063ffffffff16565b905060006126256064612617888b6126ee90919063ffffffff16565b61206f90919063ffffffff16565b9050600061264e82612640858c6120b990919063ffffffff16565b6120b990919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061267e85896126ee90919063ffffffff16565b9050600061269586896126ee90919063ffffffff16565b905060006126ac87896126ee90919063ffffffff16565b905060006126d5826126c785876120b990919063ffffffff16565b6120b990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127015760009050612763565b6000828461270f91906137ca565b905082848261271e919061372d565b1461275e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275590613896565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127cb82612782565b810181811067ffffffffffffffff821117156127ea576127e9612793565b5b80604052505050565b60006127fd612769565b905061280982826127c2565b919050565b600067ffffffffffffffff82111561282957612828612793565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061286a8261283f565b9050919050565b61287a8161285f565b811461288557600080fd5b50565b60008135905061289781612871565b92915050565b60006128b06128ab8461280e565b6127f3565b905080838252602082019050602084028301858111156128d3576128d261283a565b5b835b818110156128fc57806128e88882612888565b8452602084019350506020810190506128d5565b5050509392505050565b600082601f83011261291b5761291a61277d565b5b813561292b84826020860161289d565b91505092915050565b60006020828403121561294a57612949612773565b5b600082013567ffffffffffffffff81111561296857612967612778565b5b61297484828501612906565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129b757808201518184015260208101905061299c565b838111156129c6576000848401525b50505050565b60006129d78261297d565b6129e18185612988565b93506129f1818560208601612999565b6129fa81612782565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b6000819050919050565b612a3a81612a27565b8114612a4557600080fd5b50565b600081359050612a5781612a31565b92915050565b60008060408385031215612a7457612a73612773565b5b6000612a8285828601612888565b9250506020612a9385828601612a48565b9150509250929050565b60008115159050919050565b612ab281612a9d565b82525050565b6000602082019050612acd6000830184612aa9565b92915050565b6000819050919050565b6000612af8612af3612aee8461283f565b612ad3565b61283f565b9050919050565b6000612b0a82612add565b9050919050565b6000612b1c82612aff565b9050919050565b612b2c81612b11565b82525050565b6000602082019050612b476000830184612b23565b92915050565b612b5681612a27565b82525050565b6000602082019050612b716000830184612b4d565b92915050565b600080600060608486031215612b9057612b8f612773565b5b6000612b9e86828701612888565b9350506020612baf86828701612888565b9250506040612bc086828701612a48565b9150509250925092565b600060ff82169050919050565b612be081612bca565b82525050565b6000602082019050612bfb6000830184612bd7565b92915050565b612c0a8161285f565b82525050565b6000602082019050612c256000830184612c01565b92915050565b600060208284031215612c4157612c40612773565b5b6000612c4f84828501612a48565b91505092915050565b600060208284031215612c6e57612c6d612773565b5b6000612c7c84828501612888565b91505092915050565b600080fd5b60008083601f840112612ca057612c9f61277d565b5b8235905067ffffffffffffffff811115612cbd57612cbc612c85565b5b602083019150836020820283011115612cd957612cd861283a565b5b9250929050565b612ce981612a9d565b8114612cf457600080fd5b50565b600081359050612d0681612ce0565b92915050565b600080600060408486031215612d2557612d24612773565b5b600084013567ffffffffffffffff811115612d4357612d42612778565b5b612d4f86828701612c8a565b93509350506020612d6286828701612cf7565b9150509250925092565b60008060408385031215612d8357612d82612773565b5b6000612d9185828601612888565b9250506020612da285828601612888565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612de2602083612988565b9150612ded82612dac565b602082019050919050565b60006020820190508181036000830152612e1181612dd5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e8182612a27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612eb457612eb3612e47565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f1b602683612988565b9150612f2682612ebf565b604082019050919050565b60006020820190508181036000830152612f4a81612f0e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fad602483612988565b9150612fb882612f51565b604082019050919050565b60006020820190508181036000830152612fdc81612fa0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061303f602283612988565b915061304a82612fe3565b604082019050919050565b6000602082019050818103600083015261306e81613032565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d1602583612988565b91506130dc82613075565b604082019050919050565b60006020820190508181036000830152613100816130c4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613163602383612988565b915061316e82613107565b604082019050919050565b6000602082019050818103600083015261319281613156565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131f5602983612988565b915061320082613199565b604082019050919050565b60006020820190508181036000830152613224816131e8565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613287603f83612988565b91506132928261322b565b604082019050919050565b600060208201905081810360008301526132b68161327a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006132f3601c83612988565b91506132fe826132bd565b602082019050919050565b60006020820190508181036000830152613322816132e6565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613385602383612988565b915061339082613329565b604082019050919050565b600060208201905081810360008301526133b481613378565b9050919050565b60006133c682612a27565b91506133d183612a27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561340657613405612e47565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061346d602383612988565b915061347882613411565b604082019050919050565b6000602082019050818103600083015261349c81613460565b9050919050565b60006134ae82612a27565b91506134b983612a27565b9250828210156134cc576134cb612e47565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613533602a83612988565b915061353e826134d7565b604082019050919050565b6000602082019050818103600083015261356281613526565b9050919050565b60008151905061357881612871565b92915050565b60006020828403121561359457613593612773565b5b60006135a284828501613569565b91505092915050565b6000819050919050565b60006135d06135cb6135c6846135ab565b612ad3565b612a27565b9050919050565b6135e0816135b5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61361b8161285f565b82525050565b600061362d8383613612565b60208301905092915050565b6000602082019050919050565b6000613651826135e6565b61365b81856135f1565b935061366683613602565b8060005b8381101561369757815161367e8882613621565b975061368983613639565b92505060018101905061366a565b5085935050505092915050565b600060a0820190506136b96000830188612b4d565b6136c660208301876135d7565b81810360408301526136d88186613646565b90506136e76060830185612c01565b6136f46080830184612b4d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061373882612a27565b915061374383612a27565b925082613753576137526136fe565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613794601b83612988565b915061379f8261375e565b602082019050919050565b600060208201905081810360008301526137c381613787565b9050919050565b60006137d582612a27565b91506137e083612a27565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561381957613818612e47565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613880602183612988565b915061388b82613824565b604082019050919050565b600060208201905081810360008301526138af81613873565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122013353ffe50797d5b403478440397ea79be37121e46e1919a3875a72e5fde705a64736f6c63430008090033

Deployed Bytecode Sourcemap

4070:12568:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12269:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6731:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7656:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5459:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7008:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7857:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6917:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5507:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16280:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12446:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12026:235;;;;;;;;;;;;;:::i;:::-;;7111:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1557:148;;;;;;;;;;;;;:::i;:::-;;5663:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5201:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6644:79;;;;;;;;;;;;;:::i;:::-;;1343;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5725:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6822:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15990:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7257:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5163:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11782:236;;;;;;;;;;;;;:::i;:::-;;16399:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7464:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1713:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16170:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12269:169;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12345:9:::1;12340:91;12364:5;:12;12360:1;:16;12340:91;;;12415:4;12398;:14;12403:5;12409:1;12403:8;;;;;;;;:::i;:::-;;;;;;;;12398:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12378:3;;;;;:::i;:::-;;;;12340:91;;;;12269:169:::0;:::o;6731:83::-;6768:13;6801:5;;;;;;;;;;;;;;;;;6794:12;;6731:83;:::o;7656:193::-;7758:4;7780:39;7789:12;:10;:12::i;:::-;7803:7;7812:6;7780:8;:39::i;:::-;7837:4;7830:11;;7656:193;;;;:::o;5459:41::-;;;;;;;;;;;;;:::o;7008:95::-;7061:7;4649:21;7081:14;;7008:95;:::o;7857:446::-;7989:4;8006:36;8016:6;8024:9;8035:6;8006:9;:36::i;:::-;8053:220;8076:6;8097:12;:10;:12::i;:::-;8124:138;8180:6;8124:138;;;;;;;;;;;;;;;;;:11;:19;8136:6;8124:19;;;;;;;;;;;;;;;:33;8144:12;:10;:12::i;:::-;8124:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8053:8;:220::i;:::-;8291:4;8284:11;;7857:446;;;;;:::o;5787:55::-;;;;:::o;6917:83::-;6958:5;4301:1;6976:16;;6917:83;:::o;5507:28::-;;;;;;;;;;;;;:::o;16280:111::-;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16370:13:::1;16353:14;:30;;;;16280:111:::0;:::o;12446:92::-;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12525:5:::1;12510:4;:12;12515:6;12510:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12446:92:::0;:::o;12026:235::-;12092:19;;;;;;;;;;;12076:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12131:17;;;;;;;;;;;12115:33;;:12;:10;:12::i;:::-;:33;;;12076:72;12068:81;;;;;;12160:26;12189:21;12160:50;;12221:32;12234:18;12221:12;:32::i;:::-;12057:204;12026:235::o;7111:138::-;7177:7;7204:37;7224:7;:16;7232:7;7224:16;;;;;;;;;;;;;;;;7204:19;:37::i;:::-;7197:44;;7111:138;;;:::o;1557:148::-;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1664:1:::1;1627:40;;1648:6;::::0;::::1;;;;;;;;1627:40;;;;;;;;;;;;1695:1;1678:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1557:148::o:0;5663:55::-;;;;:::o;5201:43::-;;;;;;;;;;;;;;;;;:::o;6644:79::-;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6711:4:::1;6695:13;;:20;;;;;;;;;;;;;;;;;;6644:79::o:0;1343:::-;1381:7;1408:6;;;;;;;;;;;1401:13;;1343:79;:::o;5725:55::-;;;;:::o;6822:87::-;6861:13;6894:7;;;;;;;;;;;;;;;;;6887:14;;6822:87;:::o;15990:139::-;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16103:18:::1;16081:19;:40;;;;15990:139:::0;:::o;7257:199::-;7362:4;7384:42;7394:12;:10;:12::i;:::-;7408:9;7419:6;7384:9;:42::i;:::-;7444:4;7437:11;;7257:199;;;;:::o;5163:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;11782:236::-;11848:19;;;;;;;;;;;11832:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;11887:17;;;;;;;;;;;11871:33;;:12;:10;:12::i;:::-;:33;;;11832:72;11824:81;;;;;;11916:23;11942:24;11960:4;11942:9;:24::i;:::-;11916:50;;11977:33;11994:15;11977:16;:33::i;:::-;11813:205;11782:236::o;16399:234::-;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16516:9:::1;16512:114;16535:8;;:15;;16531:1;:19;16512:114;;;16606:8;16572:18;:31;16591:8;;16600:1;16591:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16572:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16552:3;;;;;:::i;:::-;;;;16512:114;;;;16399:234:::0;;;:::o;7464:184::-;7581:7;7613:11;:18;7625:5;7613:18;;;;;;;;;;;;;;;:27;7632:7;7613:27;;;;;;;;;;;;;;;;7606:34;;7464:184;;;;:::o;1713:244::-;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1822:1:::1;1802:22;;:8;:22;;;;1794:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1912:8;1883:38;;1904:6;::::0;::::1;;;;;;;;1883:38;;;;;;;;;;;;1941:8;1932:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1713:244:::0;:::o;16170:102::-;1480:12;:10;:12::i;:::-;1470:22;;:6;;;;;;;;;;:22;;;1462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16253:11:::1;16238:12;:26;;;;16170:102:::0;:::o;102:98::-;155:7;182:10;175:17;;102:98;:::o;8994:369::-;9138:1;9121:19;;:5;:19;;;;9113:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9219:1;9200:21;;:7;:21;;;;9192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9301:6;9271:11;:18;9283:5;9271:18;;;;;;;;;;;;;;;:27;9290:7;9271:27;;;;;;;;;;;;;;;:36;;;;9339:7;9323:32;;9332:5;9323:32;;;9348:6;9323:32;;;;;;:::i;:::-;;;;;;;;8994:369;;;:::o;9371:1705::-;9509:1;9493:18;;:4;:18;;;;9485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9586:1;9572:16;;:2;:16;;;;9564:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9656:1;9647:6;:10;9639:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9728:7;:5;:7::i;:::-;9720:15;;:4;:15;;;;:32;;;;;9745:7;:5;:7::i;:::-;9739:13;;:2;:13;;;;9720:32;9716:1265;;;9809:13;;;;;;;;;;;9804:146;;9859:7;:5;:7::i;:::-;9851:15;;:4;:15;;;9843:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9804:146;9984:12;;9974:6;:22;;9966:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10053:4;:10;10058:4;10053:10;;;;;;;;;;;;;;;;;;;;;;;;;10052:11;:24;;;;;10068:4;:8;10073:2;10068:8;;;;;;;;;;;;;;;;;;;;;;;;;10067:9;10052:24;10044:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10142:13;;;;;;;;;;;10136:19;;:2;:19;;;10133:146;;10209:14;;10200:6;10184:13;10194:2;10184:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10176:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10133:146;10295:28;10326:24;10344:4;10326:9;:24::i;:::-;10295:55;;10365:12;10404:19;;10380:20;:43;;10365:58;;10467:12;;10443:20;:36;10440:124;;10536:12;;10513:35;;10440:124;10584:7;:18;;;;;10596:6;;;;;;;;;;10595:7;10584:18;:43;;;;;10614:13;;;;;;;;;;;10606:21;;:4;:21;;;;10584:43;:62;;;;;10631:15;;;;;;;;;;;10584:62;:91;;;;;10651:18;:24;10670:4;10651:24;;;;;;;;;;;;;;;;;;;;;;;;;10650:25;10584:91;:118;;;;;10680:18;:22;10699:2;10680:22;;;;;;;;;;;;;;;;;;;;;;;;;10679:23;10584:118;10580:390;;;10723:38;10740:20;10723:16;:38::i;:::-;10780:26;10809:21;10780:50;;10874:1;10853:18;:22;10849:106;;;10900:35;10913:21;10900:12;:35::i;:::-;10849:106;10704:266;10580:390;9754:1227;;9716:1265;10993:12;11008:4;10993:19;;11027:41;11042:4;11048:2;11052:6;11060:7;11027:14;:41::i;:::-;9474:1602;9371:1705;;;:::o;2321:224::-;2441:7;2474:1;2469;:6;;2477:12;2461:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2501:9;2517:1;2513;:5;;;;:::i;:::-;2501:17;;2536:1;2529:8;;;2321:224;;;;;:::o;11575:199::-;11632:14;11649:13;11660:1;11649:6;:10;;:13;;;;:::i;:::-;11632:30;;11673:17;;;;;;;;;;;:26;;:34;11700:6;11673:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11718:19;;;;;;;;;;;:28;;:48;11747:18;11758:6;11747;:10;;:18;;;;:::i;:::-;11718:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11621:153;11575:199;:::o;8311:323::-;8406:7;8464;;8453;:18;;8431:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8552:19;8574:10;:8;:10::i;:::-;8552:32;;8602:24;8614:11;8602:7;:11;;:24;;;;:::i;:::-;8595:31;;;8311:323;;;:::o;11084:483::-;5945:4;5936:6;;:13;;;;;;;;;;;;;;;;;;11162:21:::1;11200:1;11186:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11162:40;;11231:4;11213;11218:1;11213:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11257:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11247:4;11252:1;11247:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11290:62;11307:4;11322:15;;;;;;;;;;;11340:11;11290:8;:62::i;:::-;11363:15;;;;;;;;;;;:66;;;11444:11;11470:1;11486:4;11513;11533:15;11363:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11151:416;5981:5:::0;5972:6;;:14;;;;;;;;;;;;;;;;;;11084:483;:::o;12546:282::-;12702:7;12697:28;;12711:14;:12;:14::i;:::-;12697:28;12736:44;12754:6;12762:9;12773:6;12736:17;:44::i;:::-;12796:7;12791:29;;12805:15;:13;:15::i;:::-;12791:29;12546:282;;;;:::o;2807:132::-;2865:7;2892:39;2896:1;2899;2892:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2885:46;;2807:132;;;;:::o;2177:136::-;2235:7;2262:43;2266:1;2269;2262:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2255:50;;2177:136;;;;:::o;15507:164::-;15549:7;15570:15;15587;15606:19;:17;:19::i;:::-;15569:56;;;;15643:20;15655:7;15643;:11;;:20;;;;:::i;:::-;15636:27;;;;15507:164;:::o;8642:219::-;8702:1;8689:9;;:14;:30;;;;;8718:1;8707:7;;:12;8689:30;8685:43;;;8721:7;;8685:43;8760:9;;8740:17;:29;;;;8798:7;;8780:15;:25;;;;8830:1;8818:9;:13;;;;8852:1;8842:7;:11;;;;8642:219;:::o;12836:610::-;12983:15;13013:23;13051:12;13078:23;13116:12;13143:13;13170:19;13181:7;13170:10;:19::i;:::-;12968:221;;;;;;;;;;;;13218:28;13238:7;13218;:15;13226:6;13218:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13200:7;:15;13208:6;13200:15;;;;;;;;;;;;;;;:46;;;;13278:39;13301:15;13278:7;:18;13286:9;13278:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13257:7;:18;13265:9;13257:18;;;;;;;;;;;;;;;:60;;;;13328:16;13338:5;13328:9;:16::i;:::-;13355:23;13367:4;13373;13355:11;:23::i;:::-;13411:9;13394:44;;13403:6;13394:44;;;13422:15;13394:44;;;;;;:::i;:::-;;;;;;;;12957:489;;;;;;12836:610;;;:::o;8869:117::-;8925:17;;8913:9;:29;;;;8963:15;;8953:7;:25;;;;8869:117::o;2947:223::-;3067:7;3099:1;3095;:5;3102:12;3087:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3126:9;3142:1;3138;:5;;;;:::i;:::-;3126:17;;3161:1;3154:8;;;2947:223;;;;;:::o;15679:257::-;15730:7;15739;15759:15;15777:7;;15759:25;;15795:15;4649:21;15795:25;;15845:20;4649:21;15845:7;;:11;;:20;;;;:::i;:::-;15835:7;:30;15831:61;;;15875:7;;4649:21;15867:25;;;;;;;;15831:61;15911:7;15920;15903:25;;;;;;15679:257;;;:::o;13865:615::-;13965:7;13987;14009;14031;14053;14075;14111:23;14136:12;14150:13;14180:40;14192:7;14201:9;;14212:7;;14180:11;:40::i;:::-;14110:110;;;;;;14231:19;14253:10;:8;:10::i;:::-;14231:32;;14275:15;14292:23;14317:12;14346:46;14358:7;14367:4;14373:5;14380:11;14346;:46::i;:::-;14274:118;;;;;;14411:7;14420:15;14437:4;14443:15;14460:4;14466:5;14403:69;;;;;;;;;;;;;;;;;;;13865:615;;;;;;;:::o;1990:179::-;2048:7;2068:9;2084:1;2080;:5;;;;:::i;:::-;2068:17;;2109:1;2104;:6;;2096:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2160:1;2153:8;;;1990:179;;;;:::o;13454:211::-;13507:19;13529:10;:8;:10::i;:::-;13507:32;;13550:13;13566:22;13576:11;13566:5;:9;;:22;;;;:::i;:::-;13550:38;;13624:33;13651:5;13624:7;:22;13640:4;13624:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13599:7;:22;13615:4;13599:22;;;;;;;;;;;;;;;:58;;;;13496:169;;13454:211;:::o;13673:147::-;13751:17;13763:4;13751:7;;:11;;:17;;;;:::i;:::-;13741:7;:27;;;;13792:20;13807:4;13792:10;;:14;;:20;;;;:::i;:::-;13779:10;:33;;;;13673:147;;:::o;14488:469::-;14657:7;14679;14701;14736:12;14751:30;14777:3;14751:21;14763:8;14751:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14736:45;;14792:13;14808:28;14832:3;14808:19;14820:6;14808:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14792:44;;14847:23;14873:28;14895:5;14873:17;14885:4;14873:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14847:54;;14920:15;14937:4;14943:5;14912:37;;;;;;;;;14488:469;;;;;;;:::o;14965:534::-;15159:7;15181;15203;15238:15;15256:24;15268:11;15256:7;:11;;:24;;;;:::i;:::-;15238:42;;15291:12;15306:21;15315:11;15306:4;:8;;:21;;;;:::i;:::-;15291:36;;15338:13;15354:22;15364:11;15354:5;:9;;:22;;;;:::i;:::-;15338:38;;15387:23;15413:28;15435:5;15413:17;15425:4;15413:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15387:54;;15460:7;15469:15;15486:4;15452:39;;;;;;;;;;14965:534;;;;;;;;:::o;2553:246::-;2611:7;2640:1;2635;:6;2631:47;;;2665:1;2658:8;;;;2631:47;2688:9;2704:1;2700;:5;;;;:::i;:::-;2688:17;;2733:1;2728;2724;:5;;;;:::i;:::-;:10;2716:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2790:1;2783:8;;;2553:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:::-;9462:6;9511:2;9499:9;9490:7;9486:23;9482:32;9479:119;;;9517:79;;:::i;:::-;9479:119;9637:1;9662:53;9707:7;9698:6;9687:9;9683:22;9662:53;:::i;:::-;9652:63;;9608:117;9403:329;;;;:::o;9738:117::-;9847:1;9844;9837:12;9878:568;9951:8;9961:6;10011:3;10004:4;9996:6;9992:17;9988:27;9978:122;;10019:79;;:::i;:::-;9978:122;10132:6;10119:20;10109:30;;10162:18;10154:6;10151:30;10148:117;;;10184:79;;:::i;:::-;10148:117;10298:4;10290:6;10286:17;10274:29;;10352:3;10344:4;10336:6;10332:17;10322:8;10318:32;10315:41;10312:128;;;10359:79;;:::i;:::-;10312:128;9878:568;;;;;:::o;10452:116::-;10522:21;10537:5;10522:21;:::i;:::-;10515:5;10512:32;10502:60;;10558:1;10555;10548:12;10502:60;10452:116;:::o;10574:133::-;10617:5;10655:6;10642:20;10633:29;;10671:30;10695:5;10671:30;:::i;:::-;10574:133;;;;:::o;10713:698::-;10805:6;10813;10821;10870:2;10858:9;10849:7;10845:23;10841:32;10838:119;;;10876:79;;:::i;:::-;10838:119;11024:1;11013:9;11009:17;10996:31;11054:18;11046:6;11043:30;11040:117;;;11076:79;;:::i;:::-;11040:117;11189:80;11261:7;11252:6;11241:9;11237:22;11189:80;:::i;:::-;11171:98;;;;10967:312;11318:2;11344:50;11386:7;11377:6;11366:9;11362:22;11344:50;:::i;:::-;11334:60;;11289:115;10713:698;;;;;:::o;11417:474::-;11485:6;11493;11542:2;11530:9;11521:7;11517:23;11513:32;11510:119;;;11548:79;;:::i;:::-;11510:119;11668:1;11693:53;11738:7;11729:6;11718:9;11714:22;11693:53;:::i;:::-;11683:63;;11639:117;11795:2;11821:53;11866:7;11857:6;11846:9;11842:22;11821:53;:::i;:::-;11811:63;;11766:118;11417:474;;;;;:::o;11897:182::-;12037:34;12033:1;12025:6;12021:14;12014:58;11897:182;:::o;12085:366::-;12227:3;12248:67;12312:2;12307:3;12248:67;:::i;:::-;12241:74;;12324:93;12413:3;12324:93;:::i;:::-;12442:2;12437:3;12433:12;12426:19;;12085:366;;;:::o;12457:419::-;12623:4;12661:2;12650:9;12646:18;12638:26;;12710:9;12704:4;12700:20;12696:1;12685:9;12681:17;12674:47;12738:131;12864:4;12738:131;:::i;:::-;12730:139;;12457:419;;;:::o;12882:180::-;12930:77;12927:1;12920:88;13027:4;13024:1;13017:15;13051:4;13048:1;13041:15;13068:180;13116:77;13113:1;13106:88;13213:4;13210:1;13203:15;13237:4;13234:1;13227:15;13254:233;13293:3;13316:24;13334:5;13316:24;:::i;:::-;13307:33;;13362:66;13355:5;13352:77;13349:103;;;13432:18;;:::i;:::-;13349:103;13479:1;13472:5;13468:13;13461:20;;13254:233;;;:::o;13493:225::-;13633:34;13629:1;13621:6;13617:14;13610:58;13702:8;13697:2;13689:6;13685:15;13678:33;13493:225;:::o;13724:366::-;13866:3;13887:67;13951:2;13946:3;13887:67;:::i;:::-;13880:74;;13963:93;14052:3;13963:93;:::i;:::-;14081:2;14076:3;14072:12;14065:19;;13724:366;;;:::o;14096:419::-;14262:4;14300:2;14289:9;14285:18;14277:26;;14349:9;14343:4;14339:20;14335:1;14324:9;14320:17;14313:47;14377:131;14503:4;14377:131;:::i;:::-;14369:139;;14096:419;;;:::o;14521:223::-;14661:34;14657:1;14649:6;14645:14;14638:58;14730:6;14725:2;14717:6;14713:15;14706:31;14521:223;:::o;14750:366::-;14892:3;14913:67;14977:2;14972:3;14913:67;:::i;:::-;14906:74;;14989:93;15078:3;14989:93;:::i;:::-;15107:2;15102:3;15098:12;15091:19;;14750:366;;;:::o;15122:419::-;15288:4;15326:2;15315:9;15311:18;15303:26;;15375:9;15369:4;15365:20;15361:1;15350:9;15346:17;15339:47;15403:131;15529:4;15403:131;:::i;:::-;15395:139;;15122:419;;;:::o;15547:221::-;15687:34;15683:1;15675:6;15671:14;15664:58;15756:4;15751:2;15743:6;15739:15;15732:29;15547:221;:::o;15774:366::-;15916:3;15937:67;16001:2;15996:3;15937:67;:::i;:::-;15930:74;;16013:93;16102:3;16013:93;:::i;:::-;16131:2;16126:3;16122:12;16115:19;;15774:366;;;:::o;16146:419::-;16312:4;16350:2;16339:9;16335:18;16327:26;;16399:9;16393:4;16389:20;16385:1;16374:9;16370:17;16363:47;16427:131;16553:4;16427:131;:::i;:::-;16419:139;;16146:419;;;:::o;16571:224::-;16711:34;16707:1;16699:6;16695:14;16688:58;16780:7;16775:2;16767:6;16763:15;16756:32;16571:224;:::o;16801:366::-;16943:3;16964:67;17028:2;17023:3;16964:67;:::i;:::-;16957:74;;17040:93;17129:3;17040:93;:::i;:::-;17158:2;17153:3;17149:12;17142:19;;16801:366;;;:::o;17173:419::-;17339:4;17377:2;17366:9;17362:18;17354:26;;17426:9;17420:4;17416:20;17412:1;17401:9;17397:17;17390:47;17454:131;17580:4;17454:131;:::i;:::-;17446:139;;17173:419;;;:::o;17598:222::-;17738:34;17734:1;17726:6;17722:14;17715:58;17807:5;17802:2;17794:6;17790:15;17783:30;17598:222;:::o;17826:366::-;17968:3;17989:67;18053:2;18048:3;17989:67;:::i;:::-;17982:74;;18065:93;18154:3;18065:93;:::i;:::-;18183:2;18178:3;18174:12;18167:19;;17826:366;;;:::o;18198:419::-;18364:4;18402:2;18391:9;18387:18;18379:26;;18451:9;18445:4;18441:20;18437:1;18426:9;18422:17;18415:47;18479:131;18605:4;18479:131;:::i;:::-;18471:139;;18198:419;;;:::o;18623:228::-;18763:34;18759:1;18751:6;18747:14;18740:58;18832:11;18827:2;18819:6;18815:15;18808:36;18623:228;:::o;18857:366::-;18999:3;19020:67;19084:2;19079:3;19020:67;:::i;:::-;19013:74;;19096:93;19185:3;19096:93;:::i;:::-;19214:2;19209:3;19205:12;19198:19;;18857:366;;;:::o;19229:419::-;19395:4;19433:2;19422:9;19418:18;19410:26;;19482:9;19476:4;19472:20;19468:1;19457:9;19453:17;19446:47;19510:131;19636:4;19510:131;:::i;:::-;19502:139;;19229:419;;;:::o;19654:250::-;19794:34;19790:1;19782:6;19778:14;19771:58;19863:33;19858:2;19850:6;19846:15;19839:58;19654:250;:::o;19910:366::-;20052:3;20073:67;20137:2;20132:3;20073:67;:::i;:::-;20066:74;;20149:93;20238:3;20149:93;:::i;:::-;20267:2;20262:3;20258:12;20251:19;;19910:366;;;:::o;20282:419::-;20448:4;20486:2;20475:9;20471:18;20463:26;;20535:9;20529:4;20525:20;20521:1;20510:9;20506:17;20499:47;20563:131;20689:4;20563:131;:::i;:::-;20555:139;;20282:419;;;:::o;20707:178::-;20847:30;20843:1;20835:6;20831:14;20824:54;20707:178;:::o;20891:366::-;21033:3;21054:67;21118:2;21113:3;21054:67;:::i;:::-;21047:74;;21130:93;21219:3;21130:93;:::i;:::-;21248:2;21243:3;21239:12;21232:19;;20891:366;;;:::o;21263:419::-;21429:4;21467:2;21456:9;21452:18;21444:26;;21516:9;21510:4;21506:20;21502:1;21491:9;21487:17;21480:47;21544:131;21670:4;21544:131;:::i;:::-;21536:139;;21263:419;;;:::o;21688:222::-;21828:34;21824:1;21816:6;21812:14;21805:58;21897:5;21892:2;21884:6;21880:15;21873:30;21688:222;:::o;21916:366::-;22058:3;22079:67;22143:2;22138:3;22079:67;:::i;:::-;22072:74;;22155:93;22244:3;22155:93;:::i;:::-;22273:2;22268:3;22264:12;22257:19;;21916:366;;;:::o;22288:419::-;22454:4;22492:2;22481:9;22477:18;22469:26;;22541:9;22535:4;22531:20;22527:1;22516:9;22512:17;22505:47;22569:131;22695:4;22569:131;:::i;:::-;22561:139;;22288:419;;;:::o;22713:305::-;22753:3;22772:20;22790:1;22772:20;:::i;:::-;22767:25;;22806:20;22824:1;22806:20;:::i;:::-;22801:25;;22960:1;22892:66;22888:74;22885:1;22882:81;22879:107;;;22966:18;;:::i;:::-;22879:107;23010:1;23007;23003:9;22996:16;;22713:305;;;;:::o;23024:222::-;23164:34;23160:1;23152:6;23148:14;23141:58;23233:5;23228:2;23220:6;23216:15;23209:30;23024:222;:::o;23252:366::-;23394:3;23415:67;23479:2;23474:3;23415:67;:::i;:::-;23408:74;;23491:93;23580:3;23491:93;:::i;:::-;23609:2;23604:3;23600:12;23593:19;;23252:366;;;:::o;23624:419::-;23790:4;23828:2;23817:9;23813:18;23805:26;;23877:9;23871:4;23867:20;23863:1;23852:9;23848:17;23841:47;23905:131;24031:4;23905:131;:::i;:::-;23897:139;;23624:419;;;:::o;24049:191::-;24089:4;24109:20;24127:1;24109:20;:::i;:::-;24104:25;;24143:20;24161:1;24143:20;:::i;:::-;24138:25;;24182:1;24179;24176:8;24173:34;;;24187:18;;:::i;:::-;24173:34;24232:1;24229;24225:9;24217:17;;24049:191;;;;:::o;24246:229::-;24386:34;24382:1;24374:6;24370:14;24363:58;24455:12;24450:2;24442:6;24438:15;24431:37;24246:229;:::o;24481:366::-;24623:3;24644:67;24708:2;24703:3;24644:67;:::i;:::-;24637:74;;24720:93;24809:3;24720:93;:::i;:::-;24838:2;24833:3;24829:12;24822:19;;24481:366;;;:::o;24853:419::-;25019:4;25057:2;25046:9;25042:18;25034:26;;25106:9;25100:4;25096:20;25092:1;25081:9;25077:17;25070:47;25134:131;25260:4;25134:131;:::i;:::-;25126:139;;24853:419;;;:::o;25278:143::-;25335:5;25366:6;25360:13;25351:22;;25382:33;25409:5;25382:33;:::i;:::-;25278:143;;;;:::o;25427:351::-;25497:6;25546:2;25534:9;25525:7;25521:23;25517:32;25514:119;;;25552:79;;:::i;:::-;25514:119;25672:1;25697:64;25753:7;25744:6;25733:9;25729:22;25697:64;:::i;:::-;25687:74;;25643:128;25427:351;;;;:::o;25784:85::-;25829:7;25858:5;25847:16;;25784:85;;;:::o;25875:158::-;25933:9;25966:61;25984:42;25993:32;26019:5;25993:32;:::i;:::-;25984:42;:::i;:::-;25966:61;:::i;:::-;25953:74;;25875:158;;;:::o;26039:147::-;26134:45;26173:5;26134:45;:::i;:::-;26129:3;26122:58;26039:147;;:::o;26192:114::-;26259:6;26293:5;26287:12;26277:22;;26192:114;;;:::o;26312:184::-;26411:11;26445:6;26440:3;26433:19;26485:4;26480:3;26476:14;26461:29;;26312:184;;;;:::o;26502:132::-;26569:4;26592:3;26584:11;;26622:4;26617:3;26613:14;26605:22;;26502:132;;;:::o;26640:108::-;26717:24;26735:5;26717:24;:::i;:::-;26712:3;26705:37;26640:108;;:::o;26754:179::-;26823:10;26844:46;26886:3;26878:6;26844:46;:::i;:::-;26922:4;26917:3;26913:14;26899:28;;26754:179;;;;:::o;26939:113::-;27009:4;27041;27036:3;27032:14;27024:22;;26939:113;;;:::o;27088:732::-;27207:3;27236:54;27284:5;27236:54;:::i;:::-;27306:86;27385:6;27380:3;27306:86;:::i;:::-;27299:93;;27416:56;27466:5;27416:56;:::i;:::-;27495:7;27526:1;27511:284;27536:6;27533:1;27530:13;27511:284;;;27612:6;27606:13;27639:63;27698:3;27683:13;27639:63;:::i;:::-;27632:70;;27725:60;27778:6;27725:60;:::i;:::-;27715:70;;27571:224;27558:1;27555;27551:9;27546:14;;27511:284;;;27515:14;27811:3;27804:10;;27212:608;;;27088:732;;;;:::o;27826:831::-;28089:4;28127:3;28116:9;28112:19;28104:27;;28141:71;28209:1;28198:9;28194:17;28185:6;28141:71;:::i;:::-;28222:80;28298:2;28287:9;28283:18;28274:6;28222:80;:::i;:::-;28349:9;28343:4;28339:20;28334:2;28323:9;28319:18;28312:48;28377:108;28480:4;28471:6;28377:108;:::i;:::-;28369:116;;28495:72;28563:2;28552:9;28548:18;28539:6;28495:72;:::i;:::-;28577:73;28645:3;28634:9;28630:19;28621:6;28577:73;:::i;:::-;27826:831;;;;;;;;:::o;28663:180::-;28711:77;28708:1;28701:88;28808:4;28805:1;28798:15;28832:4;28829:1;28822:15;28849:185;28889:1;28906:20;28924:1;28906:20;:::i;:::-;28901:25;;28940:20;28958:1;28940:20;:::i;:::-;28935:25;;28979:1;28969:35;;28984:18;;:::i;:::-;28969:35;29026:1;29023;29019:9;29014:14;;28849:185;;;;:::o;29040:177::-;29180:29;29176:1;29168:6;29164:14;29157:53;29040:177;:::o;29223:366::-;29365:3;29386:67;29450:2;29445:3;29386:67;:::i;:::-;29379:74;;29462:93;29551:3;29462:93;:::i;:::-;29580:2;29575:3;29571:12;29564:19;;29223:366;;;:::o;29595:419::-;29761:4;29799:2;29788:9;29784:18;29776:26;;29848:9;29842:4;29838:20;29834:1;29823:9;29819:17;29812:47;29876:131;30002:4;29876:131;:::i;:::-;29868:139;;29595:419;;;:::o;30020:348::-;30060:7;30083:20;30101:1;30083:20;:::i;:::-;30078:25;;30117:20;30135:1;30117:20;:::i;:::-;30112:25;;30305:1;30237:66;30233:74;30230:1;30227:81;30222:1;30215:9;30208:17;30204:105;30201:131;;;30312:18;;:::i;:::-;30201:131;30360:1;30357;30353:9;30342:20;;30020:348;;;;:::o;30374:220::-;30514:34;30510:1;30502:6;30498:14;30491:58;30583:3;30578:2;30570:6;30566:15;30559:28;30374:220;:::o;30600:366::-;30742:3;30763:67;30827:2;30822:3;30763:67;:::i;:::-;30756:74;;30839:93;30928:3;30839:93;:::i;:::-;30957:2;30952:3;30948:12;30941:19;;30600:366;;;:::o;30972:419::-;31138:4;31176:2;31165:9;31161:18;31153:26;;31225:9;31219:4;31215:20;31211:1;31200:9;31196:17;31189:47;31253:131;31379:4;31253:131;:::i;:::-;31245:139;;30972:419;;;:::o

Swarm Source

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