ETH Price: $3,396.41 (+0.91%)

Token

MadMax Inu (MadMax)
 

Overview

Max Total Supply

100,000,000 MadMax

Holders

11

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
MadMaxInu

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

A community driven token with low tax of 1/2%.

Madgram:https://t.me/MadmaxInu
Madsite: madmaxinu.xyz

**/

// 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 MadMaxInu is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "MadMax Inu";
    string private constant _symbol = "MadMax";
    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;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 1;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 2;

    //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(0x95AE6314e788681E8e4e8238810004F212270C5d);
    address payable private _marketingAddress = payable(0x95AE6314e788681E8e4e8238810004F212270C5d);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount =  2000000 * 10**9;
    uint256 public _maxWalletSize = 3000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100 * 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 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 (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

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

            if(to != uniswapV2Pair && !_isExcludedFromFee[to]) {
                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 && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

            if (_taxFee == 0 && _redisFee == 0) {
                takeFee = false;
            }

        }

        _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 half = amount.div(2);
        _marketingAddress.transfer(half);
        _developmentAddress.transfer(amount.sub(half));
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        require(!tradingOpen, "ERC20: Trading can be only opened once");
        tradingOpen = _tradingOpen;
    }

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

    function SetFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy + taxFeeOnBuy <= 10, "Tax on buy can't be more than 10");
        require(redisFeeOnSell + taxFeeOnSell <= 100, "Tax on sell can't be more than 10");
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

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

    function setMaxWalletSize(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":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"SetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"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":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"}]

608060405267016345785d8a00006000196200001c919062000728565b6000196200002b91906200078f565b600655600060085560016009556000600a556002600b55600a54600c55600b54600d55600c54600e55600d54600f557395ae6314e788681e8e4e8238810004f212270c5d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507395ae6314e788681e8e4e8238810004f212270c5d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066071afd498d0000601655660aa87bee53800060175564174876e8006018553480156200018057600080fd5b50600062000193620006be60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000248620006be60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062000834565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e0919062000834565b6040518363ffffffff1660e01b8152600401620003ff92919062000877565b6020604051808303816000875af11580156200041f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000445919062000834565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200049b620006c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000648620006be60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620006af9190620008b5565b60405180910390a350620008d2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073582620006ef565b91506200074283620006ef565b925082620007555762000754620006f9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079c82620006ef565b9150620007a983620006ef565b9250828203905081811115620007c457620007c362000760565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007fc82620007cf565b9050919050565b6200080e81620007ef565b81146200081a57600080fd5b50565b6000815190506200082e8162000803565b92915050565b6000602082840312156200084d576200084c620007ca565b5b60006200085d848285016200081d565b91505092915050565b6200087181620007ef565b82525050565b60006040820190506200088e600083018562000866565b6200089d602083018462000866565b9392505050565b620008af81620006ef565b82525050565b6000602082019050620008cc6000830184620008a4565b92915050565b61417580620008e26000396000f3fe6080604052600436106101d05760003560e01c806374010ece116100f757806398a5c31511610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b806398a5c315146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638da5cb5b116100d15780638da5cb5b146104f85780638f70ccf7146105235780638f9a55c01461054c57806395d89b4114610577576101d7565b806374010ece146104675780637d1db4a5146104905780637f2feddc146104bb576101d7565b80632fd689e31161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632c40e30314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612f9d565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190613065565b60405180910390f35b34801561023c57600080fd5b50610257600480360381019061025291906130bd565b61087b565b6040516102649190613118565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190613192565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba91906131bc565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e591906131d7565b6108cf565b6040516102f79190613118565b60405180910390f35b34801561030c57600080fd5b506103276004803603810190610322919061322a565b6109a8565b005b34801561033557600080fd5b5061033e610afd565b60405161034b91906131bc565b60405180910390f35b34801561036057600080fd5b50610369610b03565b60405161037691906132ad565b60405180910390f35b34801561038b57600080fd5b50610394610b0c565b6040516103a191906132d7565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906132f2565b610b32565b005b3480156103df57600080fd5b506103fa60048036038101906103f5919061334b565b610c22565b005b34801561040857600080fd5b50610411610cd4565b005b34801561041f57600080fd5b5061043a600480360381019061043591906132f2565b610da5565b60405161044791906131bc565b60405180910390f35b34801561045c57600080fd5b50610465610df6565b005b34801561047357600080fd5b5061048e60048036038101906104899190613378565b610f49565b005b34801561049c57600080fd5b506104a5610fe8565b6040516104b291906131bc565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906132f2565b610fee565b6040516104ef91906131bc565b60405180910390f35b34801561050457600080fd5b5061050d611006565b60405161051a91906132d7565b60405180910390f35b34801561052f57600080fd5b5061054a6004803603810190610545919061334b565b61102f565b005b34801561055857600080fd5b50610561611131565b60405161056e91906131bc565b60405180910390f35b34801561058357600080fd5b5061058c611137565b6040516105999190613065565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190613378565b611174565b005b3480156105d757600080fd5b506105f260048036038101906105ed91906130bd565b611213565b6040516105ff9190613118565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a91906132f2565b611231565b60405161063c9190613118565b60405180910390f35b34801561065157600080fd5b5061065a611251565b005b34801561066857600080fd5b50610683600480360381019061067e9190613400565b61132a565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613460565b611464565b6040516106b991906131bc565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613378565b6114eb565b005b3480156106f757600080fd5b50610712600480360381019061070d91906132f2565b61158a565b005b61071c61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906134ec565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd61350c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108329061356a565b9150506107ac565b5050565b60606040518060400160405280600a81526020017f4d61644d617820496e7500000000000000000000000000000000000000000000815250905090565b600061088f61088861174b565b8484611753565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108dc84848461191c565b61099d846108e861174b565b6109988560405180606001604052806028815260200161411860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e61174b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122699092919063ffffffff16565b611753565b600190509392505050565b6109b061174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a34906134ec565b60405180910390fd5b600a8285610a4b91906135b2565b1115610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613632565b60405180910390fd5b60648184610a9a91906135b2565b1115610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad2906136c4565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b3a61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe906134ec565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c2a61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae906134ec565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1561174b565b73ffffffffffffffffffffffffffffffffffffffff161480610d8b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7361174b565b73ffffffffffffffffffffffffffffffffffffffff16145b610d9457600080fd5b6000479050610da2816122cd565b50565b6000610def600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123cd565b9050919050565b610dfe61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e82906134ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f5161174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906134ec565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61103761174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb906134ec565b60405180910390fd5b601560149054906101000a900460ff1615611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90613756565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4d61644d61780000000000000000000000000000000000000000000000000000815250905090565b61117c61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611200906134ec565b60405180910390fd5b8060188190555050565b600061122761122061174b565b848461191c565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661129261174b565b73ffffffffffffffffffffffffffffffffffffffff1614806113085750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112f061174b565b73ffffffffffffffffffffffffffffffffffffffff16145b61131157600080fd5b600061131c30610da5565b90506113278161243b565b50565b61133261174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b6906134ec565b60405180910390fd5b60005b8383905081101561145e5781600560008686858181106113e5576113e461350c565b5b90506020020160208101906113fa91906132f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114569061356a565b9150506113c2565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114f361174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611577906134ec565b60405180910390fd5b8060178190555050565b61159261174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611616906134ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361168e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611685906137e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b99061387a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611831576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118289061390c565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190f91906131bc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361198b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119829061399e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190613a30565b60405180910390fd5b60008111611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3490613ac2565b60405180910390fd5b611a45611006565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ab35750611a83611006565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f4a57601560149054906101000a900460ff16611b4257611ad4611006565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613b54565b60405180910390fd5b5b60165481111580611b9c5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290613bc0565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c7f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb590613c52565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611d665750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dc35760175481611d7884610da5565b611d8291906135b2565b10611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990613ce4565b60405180910390fd5b5b6000611dce30610da5565b9050600060185482101590506016548210611de95760165491505b808015611e01575060158054906101000a900460ff16155b8015611e5b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e735750601560169054906101000a900460ff165b8015611ec95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f1f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4757611f2d8261243b565b60004790506000811115611f4557611f44476122cd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ff15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120a45750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120b25760009050612257565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561215d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561217557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122205750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561223857600a54600c81905550600b54600d819055505b6000600d5414801561224c57506000600c54145b1561225657600090505b5b612263848484846126b2565b50505050565b60008383111582906122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a89190613065565b60405180910390fd5b50600083856122c09190613d04565b9050809150509392505050565b60006122e36002836126df90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561234d573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61239d838561272990919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156123c8573d6000803e3d6000fd5b505050565b6000600654821115612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b90613daa565b60405180910390fd5b600061241e612773565b905061243381846126df90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561247257612471612dfc565b5b6040519080825280602002602001820160405280156124a05781602001602082028036833780820191505090505b50905030816000815181106124b8576124b761350c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561255f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125839190613ddf565b816001815181106125975761259661350c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125fe30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611753565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612662959493929190613f05565b600060405180830381600087803b15801561267c57600080fd5b505af1158015612690573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806126c0576126bf61279e565b5b6126cb8484846127db565b806126d9576126d86129a6565b5b50505050565b600061272183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129ba565b905092915050565b600061276b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612269565b905092915050565b6000806000612780612a1d565b9150915061279781836126df90919063ffffffff16565b9250505090565b6000600c541480156127b257506000600d54145b6127d957600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127ed87612a7c565b95509550955095509550955061284b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ae490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292c81612b42565b6129368483612bff565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299391906131bc565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f89190613065565b60405180910390fd5b5060008385612a109190613f8e565b9050809150509392505050565b60008060006006549050600067016345785d8a00009050612a5167016345785d8a00006006546126df90919063ffffffff16565b821015612a6f5760065467016345785d8a0000935093505050612a78565b81819350935050505b9091565b6000806000806000806000806000612a998a600c54600d54612c39565b9250925092506000612aa9612773565b90506000806000612abc8e878787612ccf565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612af391906135b2565b905083811015612b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2f9061400b565b60405180910390fd5b8091505092915050565b6000612b4c612773565b90506000612b638284612d5890919063ffffffff16565b9050612bb781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ae490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c148260065461272990919063ffffffff16565b600681905550612c2f81600754612ae490919063ffffffff16565b6007819055505050565b600080600080612c656064612c57888a612d5890919063ffffffff16565b6126df90919063ffffffff16565b90506000612c8f6064612c81888b612d5890919063ffffffff16565b6126df90919063ffffffff16565b90506000612cb882612caa858c61272990919063ffffffff16565b61272990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ce88589612d5890919063ffffffff16565b90506000612cff8689612d5890919063ffffffff16565b90506000612d168789612d5890919063ffffffff16565b90506000612d3f82612d31858761272990919063ffffffff16565b61272990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612d6a5760009050612dcc565b60008284612d78919061402b565b9050828482612d879190613f8e565b14612dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbe906140f7565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e3482612deb565b810181811067ffffffffffffffff82111715612e5357612e52612dfc565b5b80604052505050565b6000612e66612dd2565b9050612e728282612e2b565b919050565b600067ffffffffffffffff821115612e9257612e91612dfc565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed382612ea8565b9050919050565b612ee381612ec8565b8114612eee57600080fd5b50565b600081359050612f0081612eda565b92915050565b6000612f19612f1484612e77565b612e5c565b90508083825260208201905060208402830185811115612f3c57612f3b612ea3565b5b835b81811015612f655780612f518882612ef1565b845260208401935050602081019050612f3e565b5050509392505050565b600082601f830112612f8457612f83612de6565b5b8135612f94848260208601612f06565b91505092915050565b600060208284031215612fb357612fb2612ddc565b5b600082013567ffffffffffffffff811115612fd157612fd0612de1565b5b612fdd84828501612f6f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613020578082015181840152602081019050613005565b60008484015250505050565b600061303782612fe6565b6130418185612ff1565b9350613051818560208601613002565b61305a81612deb565b840191505092915050565b6000602082019050818103600083015261307f818461302c565b905092915050565b6000819050919050565b61309a81613087565b81146130a557600080fd5b50565b6000813590506130b781613091565b92915050565b600080604083850312156130d4576130d3612ddc565b5b60006130e285828601612ef1565b92505060206130f3858286016130a8565b9150509250929050565b60008115159050919050565b613112816130fd565b82525050565b600060208201905061312d6000830184613109565b92915050565b6000819050919050565b600061315861315361314e84612ea8565b613133565b612ea8565b9050919050565b600061316a8261313d565b9050919050565b600061317c8261315f565b9050919050565b61318c81613171565b82525050565b60006020820190506131a76000830184613183565b92915050565b6131b681613087565b82525050565b60006020820190506131d160008301846131ad565b92915050565b6000806000606084860312156131f0576131ef612ddc565b5b60006131fe86828701612ef1565b935050602061320f86828701612ef1565b9250506040613220868287016130a8565b9150509250925092565b6000806000806080858703121561324457613243612ddc565b5b6000613252878288016130a8565b9450506020613263878288016130a8565b9350506040613274878288016130a8565b9250506060613285878288016130a8565b91505092959194509250565b600060ff82169050919050565b6132a781613291565b82525050565b60006020820190506132c2600083018461329e565b92915050565b6132d181612ec8565b82525050565b60006020820190506132ec60008301846132c8565b92915050565b60006020828403121561330857613307612ddc565b5b600061331684828501612ef1565b91505092915050565b613328816130fd565b811461333357600080fd5b50565b6000813590506133458161331f565b92915050565b60006020828403121561336157613360612ddc565b5b600061336f84828501613336565b91505092915050565b60006020828403121561338e5761338d612ddc565b5b600061339c848285016130a8565b91505092915050565b600080fd5b60008083601f8401126133c0576133bf612de6565b5b8235905067ffffffffffffffff8111156133dd576133dc6133a5565b5b6020830191508360208202830111156133f9576133f8612ea3565b5b9250929050565b60008060006040848603121561341957613418612ddc565b5b600084013567ffffffffffffffff81111561343757613436612de1565b5b613443868287016133aa565b9350935050602061345686828701613336565b9150509250925092565b6000806040838503121561347757613476612ddc565b5b600061348585828601612ef1565b925050602061349685828601612ef1565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134d6602083612ff1565b91506134e1826134a0565b602082019050919050565b60006020820190508181036000830152613505816134c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061357582613087565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135a7576135a661353b565b5b600182019050919050565b60006135bd82613087565b91506135c883613087565b92508282019050808211156135e0576135df61353b565b5b92915050565b7f546178206f6e206275792063616e2774206265206d6f7265207468616e203130600082015250565b600061361c602083612ff1565b9150613627826135e6565b602082019050919050565b6000602082019050818103600083015261364b8161360f565b9050919050565b7f546178206f6e2073656c6c2063616e2774206265206d6f7265207468616e203160008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b60006136ae602183612ff1565b91506136b982613652565b604082019050919050565b600060208201905081810360008301526136dd816136a1565b9050919050565b7f45524332303a2054726164696e672063616e206265206f6e6c79206f70656e6560008201527f64206f6e63650000000000000000000000000000000000000000000000000000602082015250565b6000613740602683612ff1565b915061374b826136e4565b604082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137d2602683612ff1565b91506137dd82613776565b604082019050919050565b60006020820190508181036000830152613801816137c5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613864602483612ff1565b915061386f82613808565b604082019050919050565b6000602082019050818103600083015261389381613857565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138f6602283612ff1565b91506139018261389a565b604082019050919050565b60006020820190508181036000830152613925816138e9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613988602583612ff1565b91506139938261392c565b604082019050919050565b600060208201905081810360008301526139b78161397b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a1a602383612ff1565b9150613a25826139be565b604082019050919050565b60006020820190508181036000830152613a4981613a0d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613aac602983612ff1565b9150613ab782613a50565b604082019050919050565b60006020820190508181036000830152613adb81613a9f565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613b3e603f83612ff1565b9150613b4982613ae2565b604082019050919050565b60006020820190508181036000830152613b6d81613b31565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613baa601c83612ff1565b9150613bb582613b74565b602082019050919050565b60006020820190508181036000830152613bd981613b9d565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c3c602383612ff1565b9150613c4782613be0565b604082019050919050565b60006020820190508181036000830152613c6b81613c2f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613cce602383612ff1565b9150613cd982613c72565b604082019050919050565b60006020820190508181036000830152613cfd81613cc1565b9050919050565b6000613d0f82613087565b9150613d1a83613087565b9250828203905081811115613d3257613d3161353b565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d94602a83612ff1565b9150613d9f82613d38565b604082019050919050565b60006020820190508181036000830152613dc381613d87565b9050919050565b600081519050613dd981612eda565b92915050565b600060208284031215613df557613df4612ddc565b5b6000613e0384828501613dca565b91505092915050565b6000819050919050565b6000613e31613e2c613e2784613e0c565b613133565b613087565b9050919050565b613e4181613e16565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e7c81612ec8565b82525050565b6000613e8e8383613e73565b60208301905092915050565b6000602082019050919050565b6000613eb282613e47565b613ebc8185613e52565b9350613ec783613e63565b8060005b83811015613ef8578151613edf8882613e82565b9750613eea83613e9a565b925050600181019050613ecb565b5085935050505092915050565b600060a082019050613f1a60008301886131ad565b613f276020830187613e38565b8181036040830152613f398186613ea7565b9050613f4860608301856132c8565b613f5560808301846131ad565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f9982613087565b9150613fa483613087565b925082613fb457613fb3613f5f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ff5601b83612ff1565b915061400082613fbf565b602082019050919050565b6000602082019050818103600083015261402481613fe8565b9050919050565b600061403682613087565b915061404183613087565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561407a5761407961353b565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140e1602183612ff1565b91506140ec82614085565b604082019050919050565b60006020820190508181036000830152614110816140d4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201f0d526647662c0c9f12e9ab8e06bf29cf316645c67e278e5c90d54b2119bc2464736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c806374010ece116100f757806398a5c31511610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b806398a5c315146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638da5cb5b116100d15780638da5cb5b146104f85780638f70ccf7146105235780638f9a55c01461054c57806395d89b4114610577576101d7565b806374010ece146104675780637d1db4a5146104905780637f2feddc146104bb576101d7565b80632fd689e31161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632c40e30314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612f9d565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190613065565b60405180910390f35b34801561023c57600080fd5b50610257600480360381019061025291906130bd565b61087b565b6040516102649190613118565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190613192565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba91906131bc565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e591906131d7565b6108cf565b6040516102f79190613118565b60405180910390f35b34801561030c57600080fd5b506103276004803603810190610322919061322a565b6109a8565b005b34801561033557600080fd5b5061033e610afd565b60405161034b91906131bc565b60405180910390f35b34801561036057600080fd5b50610369610b03565b60405161037691906132ad565b60405180910390f35b34801561038b57600080fd5b50610394610b0c565b6040516103a191906132d7565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906132f2565b610b32565b005b3480156103df57600080fd5b506103fa60048036038101906103f5919061334b565b610c22565b005b34801561040857600080fd5b50610411610cd4565b005b34801561041f57600080fd5b5061043a600480360381019061043591906132f2565b610da5565b60405161044791906131bc565b60405180910390f35b34801561045c57600080fd5b50610465610df6565b005b34801561047357600080fd5b5061048e60048036038101906104899190613378565b610f49565b005b34801561049c57600080fd5b506104a5610fe8565b6040516104b291906131bc565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906132f2565b610fee565b6040516104ef91906131bc565b60405180910390f35b34801561050457600080fd5b5061050d611006565b60405161051a91906132d7565b60405180910390f35b34801561052f57600080fd5b5061054a6004803603810190610545919061334b565b61102f565b005b34801561055857600080fd5b50610561611131565b60405161056e91906131bc565b60405180910390f35b34801561058357600080fd5b5061058c611137565b6040516105999190613065565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190613378565b611174565b005b3480156105d757600080fd5b506105f260048036038101906105ed91906130bd565b611213565b6040516105ff9190613118565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a91906132f2565b611231565b60405161063c9190613118565b60405180910390f35b34801561065157600080fd5b5061065a611251565b005b34801561066857600080fd5b50610683600480360381019061067e9190613400565b61132a565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613460565b611464565b6040516106b991906131bc565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613378565b6114eb565b005b3480156106f757600080fd5b50610712600480360381019061070d91906132f2565b61158a565b005b61071c61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906134ec565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd61350c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108329061356a565b9150506107ac565b5050565b60606040518060400160405280600a81526020017f4d61644d617820496e7500000000000000000000000000000000000000000000815250905090565b600061088f61088861174b565b8484611753565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108dc84848461191c565b61099d846108e861174b565b6109988560405180606001604052806028815260200161411860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e61174b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122699092919063ffffffff16565b611753565b600190509392505050565b6109b061174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a34906134ec565b60405180910390fd5b600a8285610a4b91906135b2565b1115610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613632565b60405180910390fd5b60648184610a9a91906135b2565b1115610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad2906136c4565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b3a61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe906134ec565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c2a61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae906134ec565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1561174b565b73ffffffffffffffffffffffffffffffffffffffff161480610d8b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7361174b565b73ffffffffffffffffffffffffffffffffffffffff16145b610d9457600080fd5b6000479050610da2816122cd565b50565b6000610def600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123cd565b9050919050565b610dfe61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e82906134ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f5161174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906134ec565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61103761174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb906134ec565b60405180910390fd5b601560149054906101000a900460ff1615611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90613756565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4d61644d61780000000000000000000000000000000000000000000000000000815250905090565b61117c61174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611200906134ec565b60405180910390fd5b8060188190555050565b600061122761122061174b565b848461191c565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661129261174b565b73ffffffffffffffffffffffffffffffffffffffff1614806113085750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112f061174b565b73ffffffffffffffffffffffffffffffffffffffff16145b61131157600080fd5b600061131c30610da5565b90506113278161243b565b50565b61133261174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b6906134ec565b60405180910390fd5b60005b8383905081101561145e5781600560008686858181106113e5576113e461350c565b5b90506020020160208101906113fa91906132f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114569061356a565b9150506113c2565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114f361174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611577906134ec565b60405180910390fd5b8060178190555050565b61159261174b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611616906134ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361168e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611685906137e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b99061387a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611831576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118289061390c565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190f91906131bc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361198b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119829061399e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190613a30565b60405180910390fd5b60008111611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3490613ac2565b60405180910390fd5b611a45611006565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ab35750611a83611006565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f4a57601560149054906101000a900460ff16611b4257611ad4611006565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613b54565b60405180910390fd5b5b60165481111580611b9c5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290613bc0565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c7f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb590613c52565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611d665750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611dc35760175481611d7884610da5565b611d8291906135b2565b10611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990613ce4565b60405180910390fd5b5b6000611dce30610da5565b9050600060185482101590506016548210611de95760165491505b808015611e01575060158054906101000a900460ff16155b8015611e5b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e735750601560169054906101000a900460ff165b8015611ec95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f1f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4757611f2d8261243b565b60004790506000811115611f4557611f44476122cd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ff15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120a45750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120b25760009050612257565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561215d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561217557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122205750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561223857600a54600c81905550600b54600d819055505b6000600d5414801561224c57506000600c54145b1561225657600090505b5b612263848484846126b2565b50505050565b60008383111582906122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a89190613065565b60405180910390fd5b50600083856122c09190613d04565b9050809150509392505050565b60006122e36002836126df90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561234d573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61239d838561272990919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156123c8573d6000803e3d6000fd5b505050565b6000600654821115612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b90613daa565b60405180910390fd5b600061241e612773565b905061243381846126df90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561247257612471612dfc565b5b6040519080825280602002602001820160405280156124a05781602001602082028036833780820191505090505b50905030816000815181106124b8576124b761350c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561255f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125839190613ddf565b816001815181106125975761259661350c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125fe30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611753565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612662959493929190613f05565b600060405180830381600087803b15801561267c57600080fd5b505af1158015612690573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806126c0576126bf61279e565b5b6126cb8484846127db565b806126d9576126d86129a6565b5b50505050565b600061272183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129ba565b905092915050565b600061276b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612269565b905092915050565b6000806000612780612a1d565b9150915061279781836126df90919063ffffffff16565b9250505090565b6000600c541480156127b257506000600d54145b6127d957600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127ed87612a7c565b95509550955095509550955061284b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ae490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292c81612b42565b6129368483612bff565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299391906131bc565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f89190613065565b60405180910390fd5b5060008385612a109190613f8e565b9050809150509392505050565b60008060006006549050600067016345785d8a00009050612a5167016345785d8a00006006546126df90919063ffffffff16565b821015612a6f5760065467016345785d8a0000935093505050612a78565b81819350935050505b9091565b6000806000806000806000806000612a998a600c54600d54612c39565b9250925092506000612aa9612773565b90506000806000612abc8e878787612ccf565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612af391906135b2565b905083811015612b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2f9061400b565b60405180910390fd5b8091505092915050565b6000612b4c612773565b90506000612b638284612d5890919063ffffffff16565b9050612bb781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ae490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c148260065461272990919063ffffffff16565b600681905550612c2f81600754612ae490919063ffffffff16565b6007819055505050565b600080600080612c656064612c57888a612d5890919063ffffffff16565b6126df90919063ffffffff16565b90506000612c8f6064612c81888b612d5890919063ffffffff16565b6126df90919063ffffffff16565b90506000612cb882612caa858c61272990919063ffffffff16565b61272990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ce88589612d5890919063ffffffff16565b90506000612cff8689612d5890919063ffffffff16565b90506000612d168789612d5890919063ffffffff16565b90506000612d3f82612d31858761272990919063ffffffff16565b61272990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612d6a5760009050612dcc565b60008284612d78919061402b565b9050828482612d879190613f8e565b14612dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbe906140f7565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e3482612deb565b810181811067ffffffffffffffff82111715612e5357612e52612dfc565b5b80604052505050565b6000612e66612dd2565b9050612e728282612e2b565b919050565b600067ffffffffffffffff821115612e9257612e91612dfc565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed382612ea8565b9050919050565b612ee381612ec8565b8114612eee57600080fd5b50565b600081359050612f0081612eda565b92915050565b6000612f19612f1484612e77565b612e5c565b90508083825260208201905060208402830185811115612f3c57612f3b612ea3565b5b835b81811015612f655780612f518882612ef1565b845260208401935050602081019050612f3e565b5050509392505050565b600082601f830112612f8457612f83612de6565b5b8135612f94848260208601612f06565b91505092915050565b600060208284031215612fb357612fb2612ddc565b5b600082013567ffffffffffffffff811115612fd157612fd0612de1565b5b612fdd84828501612f6f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613020578082015181840152602081019050613005565b60008484015250505050565b600061303782612fe6565b6130418185612ff1565b9350613051818560208601613002565b61305a81612deb565b840191505092915050565b6000602082019050818103600083015261307f818461302c565b905092915050565b6000819050919050565b61309a81613087565b81146130a557600080fd5b50565b6000813590506130b781613091565b92915050565b600080604083850312156130d4576130d3612ddc565b5b60006130e285828601612ef1565b92505060206130f3858286016130a8565b9150509250929050565b60008115159050919050565b613112816130fd565b82525050565b600060208201905061312d6000830184613109565b92915050565b6000819050919050565b600061315861315361314e84612ea8565b613133565b612ea8565b9050919050565b600061316a8261313d565b9050919050565b600061317c8261315f565b9050919050565b61318c81613171565b82525050565b60006020820190506131a76000830184613183565b92915050565b6131b681613087565b82525050565b60006020820190506131d160008301846131ad565b92915050565b6000806000606084860312156131f0576131ef612ddc565b5b60006131fe86828701612ef1565b935050602061320f86828701612ef1565b9250506040613220868287016130a8565b9150509250925092565b6000806000806080858703121561324457613243612ddc565b5b6000613252878288016130a8565b9450506020613263878288016130a8565b9350506040613274878288016130a8565b9250506060613285878288016130a8565b91505092959194509250565b600060ff82169050919050565b6132a781613291565b82525050565b60006020820190506132c2600083018461329e565b92915050565b6132d181612ec8565b82525050565b60006020820190506132ec60008301846132c8565b92915050565b60006020828403121561330857613307612ddc565b5b600061331684828501612ef1565b91505092915050565b613328816130fd565b811461333357600080fd5b50565b6000813590506133458161331f565b92915050565b60006020828403121561336157613360612ddc565b5b600061336f84828501613336565b91505092915050565b60006020828403121561338e5761338d612ddc565b5b600061339c848285016130a8565b91505092915050565b600080fd5b60008083601f8401126133c0576133bf612de6565b5b8235905067ffffffffffffffff8111156133dd576133dc6133a5565b5b6020830191508360208202830111156133f9576133f8612ea3565b5b9250929050565b60008060006040848603121561341957613418612ddc565b5b600084013567ffffffffffffffff81111561343757613436612de1565b5b613443868287016133aa565b9350935050602061345686828701613336565b9150509250925092565b6000806040838503121561347757613476612ddc565b5b600061348585828601612ef1565b925050602061349685828601612ef1565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134d6602083612ff1565b91506134e1826134a0565b602082019050919050565b60006020820190508181036000830152613505816134c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061357582613087565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135a7576135a661353b565b5b600182019050919050565b60006135bd82613087565b91506135c883613087565b92508282019050808211156135e0576135df61353b565b5b92915050565b7f546178206f6e206275792063616e2774206265206d6f7265207468616e203130600082015250565b600061361c602083612ff1565b9150613627826135e6565b602082019050919050565b6000602082019050818103600083015261364b8161360f565b9050919050565b7f546178206f6e2073656c6c2063616e2774206265206d6f7265207468616e203160008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b60006136ae602183612ff1565b91506136b982613652565b604082019050919050565b600060208201905081810360008301526136dd816136a1565b9050919050565b7f45524332303a2054726164696e672063616e206265206f6e6c79206f70656e6560008201527f64206f6e63650000000000000000000000000000000000000000000000000000602082015250565b6000613740602683612ff1565b915061374b826136e4565b604082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137d2602683612ff1565b91506137dd82613776565b604082019050919050565b60006020820190508181036000830152613801816137c5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613864602483612ff1565b915061386f82613808565b604082019050919050565b6000602082019050818103600083015261389381613857565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138f6602283612ff1565b91506139018261389a565b604082019050919050565b60006020820190508181036000830152613925816138e9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613988602583612ff1565b91506139938261392c565b604082019050919050565b600060208201905081810360008301526139b78161397b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a1a602383612ff1565b9150613a25826139be565b604082019050919050565b60006020820190508181036000830152613a4981613a0d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613aac602983612ff1565b9150613ab782613a50565b604082019050919050565b60006020820190508181036000830152613adb81613a9f565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613b3e603f83612ff1565b9150613b4982613ae2565b604082019050919050565b60006020820190508181036000830152613b6d81613b31565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613baa601c83612ff1565b9150613bb582613b74565b602082019050919050565b60006020820190508181036000830152613bd981613b9d565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c3c602383612ff1565b9150613c4782613be0565b604082019050919050565b60006020820190508181036000830152613c6b81613c2f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613cce602383612ff1565b9150613cd982613c72565b604082019050919050565b60006020820190508181036000830152613cfd81613cc1565b9050919050565b6000613d0f82613087565b9150613d1a83613087565b9250828203905081811115613d3257613d3161353b565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d94602a83612ff1565b9150613d9f82613d38565b604082019050919050565b60006020820190508181036000830152613dc381613d87565b9050919050565b600081519050613dd981612eda565b92915050565b600060208284031215613df557613df4612ddc565b5b6000613e0384828501613dca565b91505092915050565b6000819050919050565b6000613e31613e2c613e2784613e0c565b613133565b613087565b9050919050565b613e4181613e16565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e7c81612ec8565b82525050565b6000613e8e8383613e73565b60208301905092915050565b6000602082019050919050565b6000613eb282613e47565b613ebc8185613e52565b9350613ec783613e63565b8060005b83811015613ef8578151613edf8882613e82565b9750613eea83613e9a565b925050600181019050613ecb565b5085935050505092915050565b600060a082019050613f1a60008301886131ad565b613f276020830187613e38565b8181036040830152613f398186613ea7565b9050613f4860608301856132c8565b613f5560808301846131ad565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f9982613087565b9150613fa483613087565b925082613fb457613fb3613f5f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ff5601b83612ff1565b915061400082613fbf565b602082019050919050565b6000602082019050818103600083015261402481613fe8565b9050919050565b600061403682613087565b915061404183613087565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561407a5761407961353b565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140e1602183612ff1565b91506140ec82614085565b604082019050919050565b60006020820190508181036000830152614110816140d4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201f0d526647662c0c9f12e9ab8e06bf29cf316645c67e278e5c90d54b2119bc2464736f6c63430008100033

Deployed Bytecode Sourcemap

4190:14004:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13185:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6690:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7615:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5535:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6967:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7816:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16860:473;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5840:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6876:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5583:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13362:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17576:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12942:235;;;;;;;;;;;;;:::i;:::-;;7070:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1679:148;;;;;;;;;;;;;:::i;:::-;;17716:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5733:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5277:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1465:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12515:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5786:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6781:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17385:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7216:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5239:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12698:236;;;;;;;;;;;;;:::i;:::-;;17955:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7423:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17832:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1835:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13185:169;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13261:9:::1;13256:91;13280:5;:12;13276:1;:16;13256:91;;;13331:4;13314;:14;13319:5;13325:1;13319:8;;;;;;;;:::i;:::-;;;;;;;;13314:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13294:3;;;;;:::i;:::-;;;;13256:91;;;;13185:169:::0;:::o;6690:83::-;6727:13;6760:5;;;;;;;;;;;;;;;;;6753:12;;6690:83;:::o;7615:193::-;7717:4;7739:39;7748:12;:10;:12::i;:::-;7762:7;7771:6;7739:8;:39::i;:::-;7796:4;7789:11;;7615:193;;;;:::o;5535:41::-;;;;;;;;;;;;;:::o;6967:95::-;7020:7;4742:17;7040:14;;6967:95;:::o;7816:446::-;7948:4;7965:36;7975:6;7983:9;7994:6;7965:9;:36::i;:::-;8012:220;8035:6;8056:12;:10;:12::i;:::-;8083:138;8139:6;8083:138;;;;;;;;;;;;;;;;;:11;:19;8095:6;8083:19;;;;;;;;;;;;;;;:33;8103:12;:10;:12::i;:::-;8083:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8012:8;:220::i;:::-;8250:4;8243:11;;7816:446;;;;;:::o;16860:473::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17033:2:::1;17018:11;17002:13;:27;;;;:::i;:::-;:33;;16994:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17124:3;17108:12;17091:14;:29;;;;:::i;:::-;:36;;17083:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;17193:13;17176:14;:30;;;;17235:14;17217:15;:32;;;;17275:11;17260:12;:26;;;;17313:12;17297:13;:28;;;;16860:473:::0;;;;:::o;5840:48::-;;;;:::o;6876:83::-;6917:5;4416:1;6935:16;;6876:83;:::o;5583:28::-;;;;;;;;;;;;;:::o;13362:92::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13441:5:::1;13426:4;:12;13431:6;13426:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13362:92:::0;:::o;17576:101::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17657:12:::1;17643:11;;:26;;;;;;;;;;;;;;;;;;17576:101:::0;:::o;12942:235::-;13008:19;;;;;;;;;;;12992:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13047:17;;;;;;;;;;;13031:33;;:12;:10;:12::i;:::-;:33;;;12992:72;12984:81;;;;;;13076:26;13105:21;13076:50;;13137:32;13150:18;13137:12;:32::i;:::-;12973:204;12942:235::o;7070:138::-;7136:7;7163:37;7183:7;:16;7191:7;7183:16;;;;;;;;;;;;;;;;7163:19;:37::i;:::-;7156:44;;7070:138;;;:::o;1679:148::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1786:1:::1;1749:40;;1770:6;::::0;::::1;;;;;;;;1749:40;;;;;;;;;;;;1817:1;1800:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1679:148::o:0;17716:108::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17805:11:::1;17790:12;:26;;;;17716:108:::0;:::o;5733:46::-;;;;:::o;5277:43::-;;;;;;;;;;;;;;;;;:::o;1465:79::-;1503:7;1530:6;;;;;;;;;;;1523:13;;1465:79;:::o;12515:175::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12591:11:::1;;;;;;;;;;;12590:12;12582:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12670:12;12656:11;;:26;;;;;;;;;;;;;;;;;;12515:175:::0;:::o;5786:47::-;;;;:::o;6781:87::-;6820:13;6853:7;;;;;;;;;;;;;;;;;6846:14;;6781:87;:::o;17385:139::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17498:18:::1;17476:19;:40;;;;17385:139:::0;:::o;7216:199::-;7321:4;7343:42;7353:12;:10;:12::i;:::-;7367:9;7378:6;7343:9;:42::i;:::-;7403:4;7396:11;;7216:199;;;;:::o;5239:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12698:236::-;12764:19;;;;;;;;;;;12748:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12803:17;;;;;;;;;;;12787:33;;:12;:10;:12::i;:::-;:33;;;12748:72;12740:81;;;;;;12832:23;12858:24;12876:4;12858:9;:24::i;:::-;12832:50;;12893:33;12910:15;12893:16;:33::i;:::-;12729:205;12698:236::o;17955:234::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18072:9:::1;18068:114;18091:8;;:15;;18087:1;:19;18068:114;;;18162:8;18128:18;:31;18147:8;;18156:1;18147:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18128:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18108:3;;;;;:::i;:::-;;;;18068:114;;;;17955:234:::0;;;:::o;7423:184::-;7540:7;7572:11;:18;7584:5;7572:18;;;;;;;;;;;;;;;:27;7591:7;7572:27;;;;;;;;;;;;;;;;7565:34;;7423:184;;;;:::o;17832:115::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17926:13:::1;17909:14;:30;;;;17832:115:::0;:::o;1835:244::-;1602:12;:10;:12::i;:::-;1592:22;;:6;;;;;;;;;;:22;;;1584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1944:1:::1;1924:22;;:8;:22;;::::0;1916:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2034:8;2005:38;;2026:6;::::0;::::1;;;;;;;;2005:38;;;;;;;;;;;;2063:8;2054:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1835:244:::0;:::o;224:98::-;277:7;304:10;297:17;;224:98;:::o;8953:369::-;9097:1;9080:19;;:5;:19;;;9072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9178:1;9159:21;;:7;:21;;;9151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9260:6;9230:11;:18;9242:5;9230:18;;;;;;;;;;;;;;;:27;9249:7;9230:27;;;;;;;;;;;;;;;:36;;;;9298:7;9282:32;;9291:5;9282:32;;;9307:6;9282:32;;;;;;:::i;:::-;;;;;;;;8953:369;;;:::o;9330:2485::-;9468:1;9452:18;;:4;:18;;;9444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9545:1;9531:16;;:2;:16;;;9523:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9615:1;9606:6;:10;9598:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9687:7;:5;:7::i;:::-;9679:15;;:4;:15;;;;:32;;;;;9704:7;:5;:7::i;:::-;9698:13;;:2;:13;;;;9679:32;9675:1312;;;9768:11;;;;;;;;;;;9763:144;;9816:7;:5;:7::i;:::-;9808:15;;:4;:15;;;9800:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9763:144;9941:12;;9931:6;:22;;:48;;;;9957:18;:22;9976:2;9957:22;;;;;;;;;;;;;;;;;;;;;;;;;9931:48;9923:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;10036:4;:10;10041:4;10036:10;;;;;;;;;;;;;;;;;;;;;;;;;10035:11;:24;;;;;10051:4;:8;10056:2;10051:8;;;;;;;;;;;;;;;;;;;;;;;;;10050:9;10035:24;10027:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10125:13;;;;;;;;;;;10119:19;;:2;:19;;;;:46;;;;;10143:18;:22;10162:2;10143:22;;;;;;;;;;;;;;;;;;;;;;;;;10142:23;10119:46;10116:173;;;10219:14;;10210:6;10194:13;10204:2;10194:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10186:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10116:173;10305:28;10336:24;10354:4;10336:9;:24::i;:::-;10305:55;;10375:12;10414:19;;10390:20;:43;;10375:58;;10477:12;;10453:20;:36;10450:124;;10546:12;;10523:35;;10450:124;10594:7;:18;;;;;10606:6;;;;;;;;;;10605:7;10594:18;:43;;;;;10624:13;;;;;;;;;;;10616:21;;:4;:21;;;;10594:43;:58;;;;;10641:11;;;;;;;;;;;10594:58;:87;;;;;10657:18;:24;10676:4;10657:24;;;;;;;;;;;;;;;;;;;;;;;;;10656:25;10594:87;:114;;;;;10686:18;:22;10705:2;10686:22;;;;;;;;;;;;;;;;;;;;;;;;;10685:23;10594:114;10590:386;;;10729:38;10746:20;10729:16;:38::i;:::-;10786:26;10815:21;10786:50;;10880:1;10859:18;:22;10855:106;;;10906:35;10919:21;10906:12;:35::i;:::-;10855:106;10710:266;10590:386;9713:1274;;9675:1312;10999:12;11014:4;10999:19;;11063:18;:24;11082:4;11063:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11091:18;:22;11110:2;11091:22;;;;;;;;;;;;;;;;;;;;;;;;;11063:50;11062:102;;;;11127:13;;;;;;;;;;;11119:21;;:4;:21;;;;:44;;;;;11150:13;;;;;;;;;;;11144:19;;:2;:19;;;;11119:44;11062:102;11058:696;;;11191:5;11181:15;;11058:696;;;11274:13;;;;;;;;;;;11266:21;;:4;:21;;;:55;;;;;11305:15;;;;;;;;;;;11291:30;;:2;:30;;;;11266:55;11263:162;;;11354:14;;11342:9;:26;;;;11397:12;;11387:7;:22;;;;11263:162;11484:13;;;;;;;;;;;11478:19;;:2;:19;;;:55;;;;;11517:15;;;;;;;;;;;11501:32;;:4;:32;;;;11478:55;11474:165;;;11566:15;;11554:9;:27;;;;11610:13;;11600:7;:23;;;;11474:165;11670:1;11659:7;;:12;:30;;;;;11688:1;11675:9;;:14;11659:30;11655:86;;;11720:5;11710:15;;11655:86;11058:696;11766:41;11781:4;11787:2;11791:6;11799:7;11766:14;:41::i;:::-;9433:2382;9330:2485;;;:::o;2443:224::-;2563:7;2596:1;2591;:6;;2599:12;2583:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2623:9;2639:1;2635;:5;;;;:::i;:::-;2623:17;;2658:1;2651:8;;;2443:224;;;;;:::o;12314:193::-;12371:12;12386:13;12397:1;12386:6;:10;;:13;;;;:::i;:::-;12371:28;;12410:17;;;;;;;;;;;:26;;:32;12437:4;12410:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12453:19;;;;;;;;;;;:28;;:46;12482:16;12493:4;12482:6;:10;;:16;;;;:::i;:::-;12453:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12360:147;12314:193;:::o;8270:323::-;8365:7;8423;;8412;:18;;8390:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8511:19;8533:10;:8;:10::i;:::-;8511:32;;8561:24;8573:11;8561:7;:11;;:24;;;;:::i;:::-;8554:31;;;8270:323;;;:::o;11823:483::-;5991:4;5982:6;;:13;;;;;;;;;;;;;;;;;;11901:21:::1;11939:1;11925:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:40;;11970:4;11952;11957:1;11952:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11996:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11986:4;11991:1;11986:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12029:62;12046:4;12061:15;;;;;;;;;;;12079:11;12029:8;:62::i;:::-;12102:15;;;;;;;;;;;:66;;;12183:11;12209:1;12225:4;12252;12272:15;12102:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11890:416;6027:5:::0;6018:6;;:14;;;;;;;;;;;;;;;;;;11823:483;:::o;13462:282::-;13618:7;13613:28;;13627:14;:12;:14::i;:::-;13613:28;13652:44;13670:6;13678:9;13689:6;13652:17;:44::i;:::-;13712:7;13707:29;;13721:15;:13;:15::i;:::-;13707:29;13462:282;;;;:::o;2929:132::-;2987:7;3014:39;3018:1;3021;3014:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3007:46;;2929:132;;;;:::o;2299:136::-;2357:7;2384:43;2388:1;2391;2384:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2377:50;;2299:136;;;;:::o;16423:164::-;16465:7;16486:15;16503;16522:19;:17;:19::i;:::-;16485:56;;;;16559:20;16571:7;16559;:11;;:20;;;;:::i;:::-;16552:27;;;;16423:164;:::o;8601:219::-;8661:1;8648:9;;:14;:30;;;;;8677:1;8666:7;;:12;8648:30;8680:7;8644:43;8719:9;;8699:17;:29;;;;8757:7;;8739:15;:25;;;;8789:1;8777:9;:13;;;;8811:1;8801:7;:11;;;;8601:219;:::o;13752:610::-;13899:15;13929:23;13967:12;13994:23;14032:12;14059:13;14086:19;14097:7;14086:10;:19::i;:::-;13884:221;;;;;;;;;;;;14134:28;14154:7;14134;:15;14142:6;14134:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14116:7;:15;14124:6;14116:15;;;;;;;;;;;;;;;:46;;;;14194:39;14217:15;14194:7;:18;14202:9;14194:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14173:7;:18;14181:9;14173:18;;;;;;;;;;;;;;;:60;;;;14244:16;14254:5;14244:9;:16::i;:::-;14271:23;14283:4;14289;14271:11;:23::i;:::-;14327:9;14310:44;;14319:6;14310:44;;;14338:15;14310:44;;;;;;:::i;:::-;;;;;;;;13873:489;;;;;;13752:610;;;:::o;8828:117::-;8884:17;;8872:9;:29;;;;8922:15;;8912:7;:25;;;;8828:117::o;3069:223::-;3189:7;3221:1;3217;:5;3224:12;3209:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3248:9;3264:1;3260;:5;;;;:::i;:::-;3248:17;;3283:1;3276:8;;;3069:223;;;;;:::o;16595:257::-;16646:7;16655;16675:15;16693:7;;16675:25;;16711:15;4742:17;16711:25;;16761:20;4742:17;16761:7;;:11;;:20;;;;:::i;:::-;16751:7;:30;16747:61;;;16791:7;;4742:17;16783:25;;;;;;;;16747:61;16827:7;16836;16819:25;;;;;;16595:257;;;:::o;14781:615::-;14881:7;14903;14925;14947;14969;14991;15027:23;15052:12;15066:13;15096:40;15108:7;15117:9;;15128:7;;15096:11;:40::i;:::-;15026:110;;;;;;15147:19;15169:10;:8;:10::i;:::-;15147:32;;15191:15;15208:23;15233:12;15262:46;15274:7;15283:4;15289:5;15296:11;15262;:46::i;:::-;15190:118;;;;;;15327:7;15336:15;15353:4;15359:15;15376:4;15382:5;15319:69;;;;;;;;;;;;;;;;;;;14781:615;;;;;;;:::o;2112:179::-;2170:7;2190:9;2206:1;2202;:5;;;;:::i;:::-;2190:17;;2231:1;2226;:6;;2218:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2282:1;2275:8;;;2112:179;;;;:::o;14370:211::-;14423:19;14445:10;:8;:10::i;:::-;14423:32;;14466:13;14482:22;14492:11;14482:5;:9;;:22;;;;:::i;:::-;14466:38;;14540:33;14567:5;14540:7;:22;14556:4;14540:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14515:7;:22;14531:4;14515:22;;;;;;;;;;;;;;;:58;;;;14412:169;;14370:211;:::o;14589:147::-;14667:17;14679:4;14667:7;;:11;;:17;;;;:::i;:::-;14657:7;:27;;;;14708:20;14723:4;14708:10;;:14;;:20;;;;:::i;:::-;14695:10;:33;;;;14589:147;;:::o;15404:469::-;15573:7;15595;15617;15652:12;15667:30;15693:3;15667:21;15679:8;15667:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15652:45;;15708:13;15724:28;15748:3;15724:19;15736:6;15724:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15708:44;;15763:23;15789:28;15811:5;15789:17;15801:4;15789:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15763:54;;15836:15;15853:4;15859:5;15828:37;;;;;;;;;15404:469;;;;;;;:::o;15881:534::-;16075:7;16097;16119;16154:15;16172:24;16184:11;16172:7;:11;;:24;;;;:::i;:::-;16154:42;;16207:12;16222:21;16231:11;16222:4;:8;;:21;;;;:::i;:::-;16207:36;;16254:13;16270:22;16280:11;16270:5;:9;;:22;;;;:::i;:::-;16254:38;;16303:23;16329:28;16351:5;16329:17;16341:4;16329:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16303:54;;16376:7;16385:15;16402:4;16368:39;;;;;;;;;;15881:534;;;;;;;;:::o;2675:246::-;2733:7;2762:1;2757;:6;2753:47;;2787:1;2780:8;;;;2753:47;2810:9;2826:1;2822;:5;;;;:::i;:::-;2810:17;;2855:1;2850;2846;:5;;;;:::i;:::-;:10;2838:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2912:1;2905:8;;;2675: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:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:765::-;8324:6;8332;8340;8348;8397:3;8385:9;8376:7;8372:23;8368:33;8365:120;;;8404:79;;:::i;:::-;8365:120;8524:1;8549:53;8594:7;8585:6;8574:9;8570:22;8549:53;:::i;:::-;8539:63;;8495:117;8651:2;8677:53;8722:7;8713:6;8702:9;8698:22;8677:53;:::i;:::-;8667:63;;8622:118;8779:2;8805:53;8850:7;8841:6;8830:9;8826:22;8805:53;:::i;:::-;8795:63;;8750:118;8907:2;8933:53;8978:7;8969:6;8958:9;8954:22;8933:53;:::i;:::-;8923:63;;8878:118;8238:765;;;;;;;:::o;9009:86::-;9044:7;9084:4;9077:5;9073:16;9062:27;;9009:86;;;:::o;9101:112::-;9184:22;9200:5;9184:22;:::i;:::-;9179:3;9172:35;9101:112;;:::o;9219:214::-;9308:4;9346:2;9335:9;9331:18;9323:26;;9359:67;9423:1;9412:9;9408:17;9399:6;9359:67;:::i;:::-;9219:214;;;;:::o;9439:118::-;9526:24;9544:5;9526:24;:::i;:::-;9521:3;9514:37;9439:118;;:::o;9563:222::-;9656:4;9694:2;9683:9;9679:18;9671:26;;9707:71;9775:1;9764:9;9760:17;9751:6;9707:71;:::i;:::-;9563:222;;;;:::o;9791:329::-;9850:6;9899:2;9887:9;9878:7;9874:23;9870:32;9867:119;;;9905:79;;:::i;:::-;9867:119;10025:1;10050:53;10095:7;10086:6;10075:9;10071:22;10050:53;:::i;:::-;10040:63;;9996:117;9791:329;;;;:::o;10126:116::-;10196:21;10211:5;10196:21;:::i;:::-;10189:5;10186:32;10176:60;;10232:1;10229;10222:12;10176:60;10126:116;:::o;10248:133::-;10291:5;10329:6;10316:20;10307:29;;10345:30;10369:5;10345:30;:::i;:::-;10248:133;;;;:::o;10387:323::-;10443:6;10492:2;10480:9;10471:7;10467:23;10463:32;10460:119;;;10498:79;;:::i;:::-;10460:119;10618:1;10643:50;10685:7;10676:6;10665:9;10661:22;10643:50;:::i;:::-;10633:60;;10589:114;10387:323;;;;:::o;10716:329::-;10775:6;10824:2;10812:9;10803:7;10799:23;10795:32;10792:119;;;10830:79;;:::i;:::-;10792:119;10950:1;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10921:117;10716:329;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:180;14168:77;14165:1;14158:88;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14306:233;14345:3;14368:24;14386:5;14368:24;:::i;:::-;14359:33;;14414:66;14407:5;14404:77;14401:103;;14484:18;;:::i;:::-;14401:103;14531:1;14524:5;14520:13;14513:20;;14306:233;;;:::o;14545:191::-;14585:3;14604:20;14622:1;14604:20;:::i;:::-;14599:25;;14638:20;14656:1;14638:20;:::i;:::-;14633:25;;14681:1;14678;14674:9;14667:16;;14702:3;14699:1;14696:10;14693:36;;;14709:18;;:::i;:::-;14693:36;14545:191;;;;:::o;14742:182::-;14882:34;14878:1;14870:6;14866:14;14859:58;14742:182;:::o;14930:366::-;15072:3;15093:67;15157:2;15152:3;15093:67;:::i;:::-;15086:74;;15169:93;15258:3;15169:93;:::i;:::-;15287:2;15282:3;15278:12;15271:19;;14930:366;;;:::o;15302:419::-;15468:4;15506:2;15495:9;15491:18;15483:26;;15555:9;15549:4;15545:20;15541:1;15530:9;15526:17;15519:47;15583:131;15709:4;15583:131;:::i;:::-;15575:139;;15302:419;;;:::o;15727:220::-;15867:34;15863:1;15855:6;15851:14;15844:58;15936:3;15931:2;15923:6;15919:15;15912:28;15727:220;:::o;15953:366::-;16095:3;16116:67;16180:2;16175:3;16116:67;:::i;:::-;16109:74;;16192:93;16281:3;16192:93;:::i;:::-;16310:2;16305:3;16301:12;16294:19;;15953:366;;;:::o;16325:419::-;16491:4;16529:2;16518:9;16514:18;16506:26;;16578:9;16572:4;16568:20;16564:1;16553:9;16549:17;16542:47;16606:131;16732:4;16606:131;:::i;:::-;16598:139;;16325:419;;;:::o;16750:225::-;16890:34;16886:1;16878:6;16874:14;16867:58;16959:8;16954:2;16946:6;16942:15;16935:33;16750:225;:::o;16981:366::-;17123:3;17144:67;17208:2;17203:3;17144:67;:::i;:::-;17137:74;;17220:93;17309:3;17220:93;:::i;:::-;17338:2;17333:3;17329:12;17322:19;;16981:366;;;:::o;17353:419::-;17519:4;17557:2;17546:9;17542:18;17534:26;;17606:9;17600:4;17596:20;17592:1;17581:9;17577:17;17570:47;17634:131;17760:4;17634:131;:::i;:::-;17626:139;;17353:419;;;:::o;17778:225::-;17918:34;17914:1;17906:6;17902:14;17895:58;17987:8;17982:2;17974:6;17970:15;17963:33;17778:225;:::o;18009:366::-;18151:3;18172:67;18236:2;18231:3;18172:67;:::i;:::-;18165:74;;18248:93;18337:3;18248:93;:::i;:::-;18366:2;18361:3;18357:12;18350:19;;18009:366;;;:::o;18381:419::-;18547:4;18585:2;18574:9;18570:18;18562:26;;18634:9;18628:4;18624:20;18620:1;18609:9;18605:17;18598:47;18662:131;18788:4;18662:131;:::i;:::-;18654:139;;18381:419;;;:::o;18806:223::-;18946:34;18942:1;18934:6;18930:14;18923:58;19015:6;19010:2;19002:6;18998:15;18991:31;18806:223;:::o;19035:366::-;19177:3;19198:67;19262:2;19257:3;19198:67;:::i;:::-;19191:74;;19274:93;19363:3;19274:93;:::i;:::-;19392:2;19387:3;19383:12;19376:19;;19035:366;;;:::o;19407:419::-;19573:4;19611:2;19600:9;19596:18;19588:26;;19660:9;19654:4;19650:20;19646:1;19635:9;19631:17;19624:47;19688:131;19814:4;19688:131;:::i;:::-;19680:139;;19407:419;;;:::o;19832:221::-;19972:34;19968:1;19960:6;19956:14;19949:58;20041:4;20036:2;20028:6;20024:15;20017:29;19832:221;:::o;20059:366::-;20201:3;20222:67;20286:2;20281:3;20222:67;:::i;:::-;20215:74;;20298:93;20387:3;20298:93;:::i;:::-;20416:2;20411:3;20407:12;20400:19;;20059:366;;;:::o;20431:419::-;20597:4;20635:2;20624:9;20620:18;20612:26;;20684:9;20678:4;20674:20;20670:1;20659:9;20655:17;20648:47;20712:131;20838:4;20712:131;:::i;:::-;20704:139;;20431:419;;;:::o;20856:224::-;20996:34;20992:1;20984:6;20980:14;20973:58;21065:7;21060:2;21052:6;21048:15;21041:32;20856:224;:::o;21086:366::-;21228:3;21249:67;21313:2;21308:3;21249:67;:::i;:::-;21242:74;;21325:93;21414:3;21325:93;:::i;:::-;21443:2;21438:3;21434:12;21427:19;;21086:366;;;:::o;21458:419::-;21624:4;21662:2;21651:9;21647:18;21639:26;;21711:9;21705:4;21701:20;21697:1;21686:9;21682:17;21675:47;21739:131;21865:4;21739:131;:::i;:::-;21731:139;;21458:419;;;:::o;21883:222::-;22023:34;22019:1;22011:6;22007:14;22000:58;22092:5;22087:2;22079:6;22075:15;22068:30;21883:222;:::o;22111:366::-;22253:3;22274:67;22338:2;22333:3;22274:67;:::i;:::-;22267:74;;22350:93;22439:3;22350:93;:::i;:::-;22468:2;22463:3;22459:12;22452:19;;22111:366;;;:::o;22483:419::-;22649:4;22687:2;22676:9;22672:18;22664:26;;22736:9;22730:4;22726:20;22722:1;22711:9;22707:17;22700:47;22764:131;22890:4;22764:131;:::i;:::-;22756:139;;22483:419;;;:::o;22908:228::-;23048:34;23044:1;23036:6;23032:14;23025:58;23117:11;23112:2;23104:6;23100:15;23093:36;22908:228;:::o;23142:366::-;23284:3;23305:67;23369:2;23364:3;23305:67;:::i;:::-;23298:74;;23381:93;23470:3;23381:93;:::i;:::-;23499:2;23494:3;23490:12;23483:19;;23142:366;;;:::o;23514:419::-;23680:4;23718:2;23707:9;23703:18;23695:26;;23767:9;23761:4;23757:20;23753:1;23742:9;23738:17;23731:47;23795:131;23921:4;23795:131;:::i;:::-;23787:139;;23514:419;;;:::o;23939:250::-;24079:34;24075:1;24067:6;24063:14;24056:58;24148:33;24143:2;24135:6;24131:15;24124:58;23939:250;:::o;24195:366::-;24337:3;24358:67;24422:2;24417:3;24358:67;:::i;:::-;24351:74;;24434:93;24523:3;24434:93;:::i;:::-;24552:2;24547:3;24543:12;24536:19;;24195:366;;;:::o;24567:419::-;24733:4;24771:2;24760:9;24756:18;24748:26;;24820:9;24814:4;24810:20;24806:1;24795:9;24791:17;24784:47;24848:131;24974:4;24848:131;:::i;:::-;24840:139;;24567:419;;;:::o;24992:178::-;25132:30;25128:1;25120:6;25116:14;25109:54;24992:178;:::o;25176:366::-;25318:3;25339:67;25403:2;25398:3;25339:67;:::i;:::-;25332:74;;25415:93;25504:3;25415:93;:::i;:::-;25533:2;25528:3;25524:12;25517:19;;25176:366;;;:::o;25548:419::-;25714:4;25752:2;25741:9;25737:18;25729:26;;25801:9;25795:4;25791:20;25787:1;25776:9;25772:17;25765:47;25829:131;25955:4;25829:131;:::i;:::-;25821:139;;25548:419;;;:::o;25973:222::-;26113:34;26109:1;26101:6;26097:14;26090:58;26182:5;26177:2;26169:6;26165:15;26158:30;25973:222;:::o;26201:366::-;26343:3;26364:67;26428:2;26423:3;26364:67;:::i;:::-;26357:74;;26440:93;26529:3;26440:93;:::i;:::-;26558:2;26553:3;26549:12;26542:19;;26201:366;;;:::o;26573:419::-;26739:4;26777:2;26766:9;26762:18;26754:26;;26826:9;26820:4;26816:20;26812:1;26801:9;26797:17;26790:47;26854:131;26980:4;26854:131;:::i;:::-;26846:139;;26573:419;;;:::o;26998:222::-;27138:34;27134:1;27126:6;27122:14;27115:58;27207:5;27202:2;27194:6;27190:15;27183:30;26998:222;:::o;27226:366::-;27368:3;27389:67;27453:2;27448:3;27389:67;:::i;:::-;27382:74;;27465:93;27554:3;27465:93;:::i;:::-;27583:2;27578:3;27574:12;27567:19;;27226:366;;;:::o;27598:419::-;27764:4;27802:2;27791:9;27787:18;27779:26;;27851:9;27845:4;27841:20;27837:1;27826:9;27822:17;27815:47;27879:131;28005:4;27879:131;:::i;:::-;27871:139;;27598:419;;;:::o;28023:194::-;28063:4;28083:20;28101:1;28083:20;:::i;:::-;28078:25;;28117:20;28135:1;28117:20;:::i;:::-;28112:25;;28161:1;28158;28154:9;28146:17;;28185:1;28179:4;28176:11;28173:37;;;28190:18;;:::i;:::-;28173:37;28023:194;;;;:::o;28223:229::-;28363:34;28359:1;28351:6;28347:14;28340:58;28432:12;28427:2;28419:6;28415:15;28408:37;28223:229;:::o;28458:366::-;28600:3;28621:67;28685:2;28680:3;28621:67;:::i;:::-;28614:74;;28697:93;28786:3;28697:93;:::i;:::-;28815:2;28810:3;28806:12;28799:19;;28458:366;;;:::o;28830:419::-;28996:4;29034:2;29023:9;29019:18;29011:26;;29083:9;29077:4;29073:20;29069:1;29058:9;29054:17;29047:47;29111:131;29237:4;29111:131;:::i;:::-;29103:139;;28830:419;;;:::o;29255:143::-;29312:5;29343:6;29337:13;29328:22;;29359:33;29386:5;29359:33;:::i;:::-;29255:143;;;;:::o;29404:351::-;29474:6;29523:2;29511:9;29502:7;29498:23;29494:32;29491:119;;;29529:79;;:::i;:::-;29491:119;29649:1;29674:64;29730:7;29721:6;29710:9;29706:22;29674:64;:::i;:::-;29664:74;;29620:128;29404:351;;;;:::o;29761:85::-;29806:7;29835:5;29824:16;;29761:85;;;:::o;29852:158::-;29910:9;29943:61;29961:42;29970:32;29996:5;29970:32;:::i;:::-;29961:42;:::i;:::-;29943:61;:::i;:::-;29930:74;;29852:158;;;:::o;30016:147::-;30111:45;30150:5;30111:45;:::i;:::-;30106:3;30099:58;30016:147;;:::o;30169:114::-;30236:6;30270:5;30264:12;30254:22;;30169:114;;;:::o;30289:184::-;30388:11;30422:6;30417:3;30410:19;30462:4;30457:3;30453:14;30438:29;;30289:184;;;;:::o;30479:132::-;30546:4;30569:3;30561:11;;30599:4;30594:3;30590:14;30582:22;;30479:132;;;:::o;30617:108::-;30694:24;30712:5;30694:24;:::i;:::-;30689:3;30682:37;30617:108;;:::o;30731:179::-;30800:10;30821:46;30863:3;30855:6;30821:46;:::i;:::-;30899:4;30894:3;30890:14;30876:28;;30731:179;;;;:::o;30916:113::-;30986:4;31018;31013:3;31009:14;31001:22;;30916:113;;;:::o;31065:732::-;31184:3;31213:54;31261:5;31213:54;:::i;:::-;31283:86;31362:6;31357:3;31283:86;:::i;:::-;31276:93;;31393:56;31443:5;31393:56;:::i;:::-;31472:7;31503:1;31488:284;31513:6;31510:1;31507:13;31488:284;;;31589:6;31583:13;31616:63;31675:3;31660:13;31616:63;:::i;:::-;31609:70;;31702:60;31755:6;31702:60;:::i;:::-;31692:70;;31548:224;31535:1;31532;31528:9;31523:14;;31488:284;;;31492:14;31788:3;31781:10;;31189:608;;;31065:732;;;;:::o;31803:831::-;32066:4;32104:3;32093:9;32089:19;32081:27;;32118:71;32186:1;32175:9;32171:17;32162:6;32118:71;:::i;:::-;32199:80;32275:2;32264:9;32260:18;32251:6;32199:80;:::i;:::-;32326:9;32320:4;32316:20;32311:2;32300:9;32296:18;32289:48;32354:108;32457:4;32448:6;32354:108;:::i;:::-;32346:116;;32472:72;32540:2;32529:9;32525:18;32516:6;32472:72;:::i;:::-;32554:73;32622:3;32611:9;32607:19;32598:6;32554:73;:::i;:::-;31803:831;;;;;;;;:::o;32640:180::-;32688:77;32685:1;32678:88;32785:4;32782:1;32775:15;32809:4;32806:1;32799:15;32826:185;32866:1;32883:20;32901:1;32883:20;:::i;:::-;32878:25;;32917:20;32935:1;32917:20;:::i;:::-;32912:25;;32956:1;32946:35;;32961:18;;:::i;:::-;32946:35;33003:1;33000;32996:9;32991:14;;32826:185;;;;:::o;33017:177::-;33157:29;33153:1;33145:6;33141:14;33134:53;33017:177;:::o;33200:366::-;33342:3;33363:67;33427:2;33422:3;33363:67;:::i;:::-;33356:74;;33439:93;33528:3;33439:93;:::i;:::-;33557:2;33552:3;33548:12;33541:19;;33200:366;;;:::o;33572:419::-;33738:4;33776:2;33765:9;33761:18;33753:26;;33825:9;33819:4;33815:20;33811:1;33800:9;33796:17;33789:47;33853:131;33979:4;33853:131;:::i;:::-;33845:139;;33572:419;;;:::o;33997:348::-;34037:7;34060:20;34078:1;34060:20;:::i;:::-;34055:25;;34094:20;34112:1;34094:20;:::i;:::-;34089:25;;34282:1;34214:66;34210:74;34207:1;34204:81;34199:1;34192:9;34185:17;34181:105;34178:131;;;34289:18;;:::i;:::-;34178:131;34337:1;34334;34330:9;34319:20;;33997:348;;;;:::o;34351:220::-;34491:34;34487:1;34479:6;34475:14;34468:58;34560:3;34555:2;34547:6;34543:15;34536:28;34351:220;:::o;34577:366::-;34719:3;34740:67;34804:2;34799:3;34740:67;:::i;:::-;34733:74;;34816:93;34905:3;34816:93;:::i;:::-;34934:2;34929:3;34925:12;34918:19;;34577:366;;;:::o;34949:419::-;35115:4;35153:2;35142:9;35138:18;35130:26;;35202:9;35196:4;35192:20;35188:1;35177:9;35173:17;35166:47;35230:131;35356:4;35230:131;:::i;:::-;35222:139;;34949:419;;;:::o

Swarm Source

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