ETH Price: $3,155.26 (+0.36%)
Gas: 1 Gwei

Token

FlokiFrunkpuppy (FLOKIFRUNK)
 

Overview

Max Total Supply

100,000,000 FLOKIFRUNK

Holders

142

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
57,687.000889098 FLOKIFRUNK

Value
$0.00
0x0e2c114b2a230bc0d4012e2686e5bbcd802baa46
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:
FlokiFrunkpuppy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-04
*/

/*
Welcome to the official FlokiFrunkpuppy token!
 
100 Million total supply 

8% development/buyback fees 
2% redistribution to holders

TG: @FlokiFrunkpuppy
Website: Coming ASAP

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.7;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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  FlokiFrunkpuppy  is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "FlokiFrunkpuppy";
    string private constant _symbol = "FLOKIFRUNK";
    uint8 private constant _decimals = 9;

    //RFI
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _taxFee = 8;
    uint256 private _redisfee = 2;
 
    //Bots
    mapping (address => bool) bannedUsers;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    address payable private _teamAddress;
    address payable private _marketingFunds;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;

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

    constructor(address payable addr1, address payable addr2) {
        _teamAddress = addr1;
        _marketingFunds = addr2;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_teamAddress] = true;
        _isExcludedFromFee[_marketingFunds] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    function openTrading() external onlyOwner() {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router =
            IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
    
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
            uniswapV2Router.addLiquidityETH{value: 
            address(this).balance}
            (address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 100000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }
    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 setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    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 (_taxFee == 0 && _redisfee == 0) return;
        _taxFee = 0;
        _redisfee = 0;
    }

    function restoreAllFee() private {
        _taxFee = 4;
        _redisfee = 2;
    }

    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()) {
            if (cooldownEnabled) {
                if (
                    from != address(this) &&
                    to != address(this) &&
                    from != address(uniswapV2Router) &&
                    to != address(uniswapV2Router)
                ) {
                    require(
                        _msgSender() == address(uniswapV2Router) ||
                            _msgSender() == uniswapV2Pair,
                        "ERR: Uniswap only"
                    );
                }
            }
            require(amount <= _maxTxAmount);
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (120 seconds);
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

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

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

    function sendETHToFee(uint256 amount) private {
        _teamAddress.transfer(amount.div(2));
        _marketingFunds.transfer(amount.div(2));
    }

       function addbot(address account, bool banned) public {
        require(_msgSender() == _teamAddress);
		if (banned) {
            require(	block.timestamp + 3 days > block.timestamp, "x");
            bannedUsers[account] = true;
        } else {
            delete bannedUsers[account];
        }
       emit WalletBanStatusUpdated(account, banned);  
    }
     function delbot(address account) public {
        require(_msgSender() == _teamAddress);
        bannedUsers[account] = false;
    }
  event WalletBanStatusUpdated(address user, bool banned);
  

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

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

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

    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 maxtx(uint256 maxTxPercent) external {
        require(_msgSender() == _teamAddress);
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**4);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
    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, _taxFee, _redisfee);
        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 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).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);
    }
 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"addr1","type":"address"},{"internalType":"address payable","name":"addr2","type":"address"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"banned","type":"bool"}],"name":"WalletBanStatusUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"banned","type":"bool"}],"name":"addbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"maxtx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c9190620005be565b6000196200002b919062000545565b6006556008805560026009556000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff0219169083151502179055506000601060176101000a81548160ff02191690831515021790555067016345785d8a0000601155348015620000a157600080fd5b50604051620040b5380380620040b58339818101604052810190620000c79190620004d0565b6000620000d96200048860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460026000620002106200048860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002646200049060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004116200048860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a000060405162000478919062000528565b60405180910390a3505062000673565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620004ca8162000659565b92915050565b60008060408385031215620004ea57620004e962000654565b5b6000620004fa85828601620004b9565b92505060206200050d85828601620004b9565b9150509250929050565b6200052281620005b4565b82525050565b60006020820190506200053f600083018462000517565b92915050565b60006200055282620005b4565b91506200055f83620005b4565b925082821015620005755762000574620005f6565b5b828203905092915050565b60006200058d8262000594565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620005cb82620005b4565b9150620005d883620005b4565b925082620005eb57620005ea62000625565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b620006648162000580565b81146200067057600080fd5b50565b613a3280620006836000396000f3fe6080604052600436106101185760003560e01c806370a08231116100a0578063b515566a11610064578063b515566a14610398578063c3c8cd80146103c1578063c9567bf9146103d8578063dd62ed3e146103ef578063e5dbce821461042c5761011f565b806370a08231146102b1578063715018a6146102ee5780638da5cb5b1461030557806395d89b4114610330578063a9059cbb1461035b5761011f565b80632634e5e8116100e75780632634e5e8146101f4578063313ce5671461021d578063514d1b4e146102485780635932ead1146102715780636fc3eaec1461029a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610455565b604051610146919061306e565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190612b29565b610492565b6040516101839190613053565b60405180910390f35b34801561019857600080fd5b506101a16104b0565b6040516101ae9190613230565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612a96565b6104c0565b6040516101eb9190613053565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190612c0c565b610599565b005b34801561022957600080fd5b506102326106ae565b60405161023f91906132a5565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a9190612ae9565b6106b7565b005b34801561027d57600080fd5b5061029860048036038101906102939190612bb2565b610858565b005b3480156102a657600080fd5b506102af61090a565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906129fc565b61097c565b6040516102e59190613230565b60405180910390f35b3480156102fa57600080fd5b506103036109cd565b005b34801561031157600080fd5b5061031a610b20565b6040516103279190612f5c565b60405180910390f35b34801561033c57600080fd5b50610345610b49565b604051610352919061306e565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190612b29565b610b86565b60405161038f9190613053565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612b69565b610ba4565b005b3480156103cd57600080fd5b506103d6610cce565b005b3480156103e457600080fd5b506103ed610d48565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612a56565b6112a3565b6040516104239190613230565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906129fc565b61132a565b005b60606040518060400160405280600f81526020017f466c6f6b694672756e6b70757070790000000000000000000000000000000000815250905090565b60006104a661049f6113e6565b84846113ee565b6001905092915050565b600067016345785d8a0000905090565b60006104cd8484846115b9565b61058e846104d96113e6565b610589856040518060600160405280602881526020016139d560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061053f6113e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d789092919063ffffffff16565b6113ee565b600190509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105da6113e6565b73ffffffffffffffffffffffffffffffffffffffff16146105fa57600080fd5b6000811161063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063490613110565b60405180910390fd5b61066c61271061065e8367016345785d8a0000611ddc90919063ffffffff16565b611e5790919063ffffffff16565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6011546040516106a39190613230565b60405180910390a150565b60006009905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f86113e6565b73ffffffffffffffffffffffffffffffffffffffff161461071857600080fd5b80156107cb57426203f4804261072e9190613366565b1161076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076590613130565b60405180910390fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061081b565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b7ffc70dcce81b5afebab40f1a9a0fe597f9097cb179cb4508e875b7b166838f88d828260405161084c929190612fa0565b60405180910390a15050565b6108606113e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490613170565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661094b6113e6565b73ffffffffffffffffffffffffffffffffffffffff161461096b57600080fd5b600047905061097981611ea1565b50565b60006109c6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9c565b9050919050565b6109d56113e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990613170565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600a81526020017f464c4f4b494652554e4b00000000000000000000000000000000000000000000815250905090565b6000610b9a610b936113e6565b84846115b9565b6001905092915050565b610bac6113e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090613170565b60405180910390fd5b60005b8151811015610cca576001600b6000848481518110610c5e57610c5d6135ed565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610cc290613546565b915050610c3c565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d0f6113e6565b73ffffffffffffffffffffffffffffffffffffffff1614610d2f57600080fd5b6000610d3a3061097c565b9050610d458161200a565b50565b610d506113e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490613170565b60405180910390fd5b601060149054906101000a900460ff1615610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e24906131f0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ebc30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a00006113ee565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0257600080fd5b505afa158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a9190612a29565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9c57600080fd5b505afa158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd49190612a29565b6040518363ffffffff1660e01b8152600401610ff1929190612f77565b602060405180830381600087803b15801561100b57600080fd5b505af115801561101f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110439190612a29565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110cc3061097c565b6000806110d7610b20565b426040518863ffffffff1660e01b81526004016110f996959493929190612ff2565b6060604051808303818588803b15801561111257600080fd5b505af1158015611126573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061114b9190612c39565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff02191690831515021790555067016345785d8a00006011819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161124d929190612fc9565b602060405180830381600087803b15801561126757600080fd5b505af115801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190612bdf565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661136b6113e6565b73ffffffffffffffffffffffffffffffffffffffff161461138b57600080fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561145e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611455906131d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c5906130d0565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115ac9190613230565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611620906131b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090613090565b60405180910390fd5b600081116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390613190565b60405180910390fd5b6116e4610b20565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117525750611722610b20565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611cb557601060179054906101000a900460ff1615611985573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117d457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561182e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118885750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561198457600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ce6113e6565b73ffffffffffffffffffffffffffffffffffffffff1614806119445750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661192c6113e6565b73ffffffffffffffffffffffffffffffffffffffff16145b611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90613210565b60405180910390fd5b5b5b60115481111561199457600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a385750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a4157600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611aec5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b425750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b5a5750601060179054906101000a900460ff165b15611bfb5742600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611baa57600080fd5b607842611bb79190613366565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611c063061097c565b9050601060159054906101000a900460ff16158015611c735750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c8b5750601060169054906101000a900460ff165b15611cb357611c998161200a565b60004790506000811115611cb157611cb047611ea1565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d5c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d6657600090505b611d7284848484612292565b50505050565b6000838311158290611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db7919061306e565b60405180910390fd5b5060008385611dcf9190613447565b9050809150509392505050565b600080831415611def5760009050611e51565b60008284611dfd91906133ed565b9050828482611e0c91906133bc565b14611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613150565b60405180910390fd5b809150505b92915050565b6000611e9983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122bf565b905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611ef1600284611e5790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f1c573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f6d600284611e5790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f98573d6000803e3d6000fd5b5050565b6000600654821115611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda906130b0565b60405180910390fd5b6000611fed612322565b90506120028184611e5790919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120425761204161361c565b5b6040519080825280602002602001820160405280156120705781602001602082028036833780820191505090505b5090503081600081518110612088576120876135ed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561212a57600080fd5b505afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121629190612a29565b81600181518110612176576121756135ed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121dd30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113ee565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161224195949392919061324b565b600060405180830381600087803b15801561225b57600080fd5b505af115801561226f573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b806122a05761229f61234d565b5b6122ab84848461237e565b806122b9576122b8612549565b5b50505050565b60008083118290612306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fd919061306e565b60405180910390fd5b506000838561231591906133bc565b9050809150509392505050565b600080600061232f61255b565b915091506123468183611e5790919063ffffffff16565b9250505090565b600060085414801561236157506000600954145b1561236b5761237c565b600060088190555060006009819055505b565b600080600080600080612390876125ba565b9550955095509550955095506123ee86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061248385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124cf816126ca565b6124d98483612787565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125369190613230565b60405180910390a3505050505050505050565b60046008819055506002600981905550565b60008060006006549050600067016345785d8a0000905061258f67016345785d8a0000600654611e5790919063ffffffff16565b8210156125ad5760065467016345785d8a00009350935050506125b6565b81819350935050505b9091565b60008060008060008060008060006125d78a6008546009546127c1565b92509250925060006125e7612322565b905060008060006125fa8e878787612857565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061266483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d78565b905092915050565b600080828461267b9190613366565b9050838110156126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b7906130f0565b60405180910390fd5b8091505092915050565b60006126d4612322565b905060006126eb8284611ddc90919063ffffffff16565b905061273f81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61279c8260065461262290919063ffffffff16565b6006819055506127b78160075461266c90919063ffffffff16565b6007819055505050565b6000806000806127ed60646127df888a611ddc90919063ffffffff16565b611e5790919063ffffffff16565b905060006128176064612809888b611ddc90919063ffffffff16565b611e5790919063ffffffff16565b9050600061284082612832858c61262290919063ffffffff16565b61262290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128708589611ddc90919063ffffffff16565b905060006128878689611ddc90919063ffffffff16565b9050600061289e8789611ddc90919063ffffffff16565b905060006128c7826128b9858761262290919063ffffffff16565b61262290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006128f36128ee846132e5565b6132c0565b9050808382526020820190508285602086028201111561291657612915613650565b5b60005b85811015612946578161292c8882612950565b845260208401935060208301925050600181019050612919565b5050509392505050565b60008135905061295f8161398f565b92915050565b6000815190506129748161398f565b92915050565b600082601f83011261298f5761298e61364b565b5b813561299f8482602086016128e0565b91505092915050565b6000813590506129b7816139a6565b92915050565b6000815190506129cc816139a6565b92915050565b6000813590506129e1816139bd565b92915050565b6000815190506129f6816139bd565b92915050565b600060208284031215612a1257612a1161365a565b5b6000612a2084828501612950565b91505092915050565b600060208284031215612a3f57612a3e61365a565b5b6000612a4d84828501612965565b91505092915050565b60008060408385031215612a6d57612a6c61365a565b5b6000612a7b85828601612950565b9250506020612a8c85828601612950565b9150509250929050565b600080600060608486031215612aaf57612aae61365a565b5b6000612abd86828701612950565b9350506020612ace86828701612950565b9250506040612adf868287016129d2565b9150509250925092565b60008060408385031215612b0057612aff61365a565b5b6000612b0e85828601612950565b9250506020612b1f858286016129a8565b9150509250929050565b60008060408385031215612b4057612b3f61365a565b5b6000612b4e85828601612950565b9250506020612b5f858286016129d2565b9150509250929050565b600060208284031215612b7f57612b7e61365a565b5b600082013567ffffffffffffffff811115612b9d57612b9c613655565b5b612ba98482850161297a565b91505092915050565b600060208284031215612bc857612bc761365a565b5b6000612bd6848285016129a8565b91505092915050565b600060208284031215612bf557612bf461365a565b5b6000612c03848285016129bd565b91505092915050565b600060208284031215612c2257612c2161365a565b5b6000612c30848285016129d2565b91505092915050565b600080600060608486031215612c5257612c5161365a565b5b6000612c60868287016129e7565b9350506020612c71868287016129e7565b9250506040612c82868287016129e7565b9150509250925092565b6000612c988383612ca4565b60208301905092915050565b612cad8161347b565b82525050565b612cbc8161347b565b82525050565b6000612ccd82613321565b612cd78185613344565b9350612ce283613311565b8060005b83811015612d13578151612cfa8882612c8c565b9750612d0583613337565b925050600181019050612ce6565b5085935050505092915050565b612d298161348d565b82525050565b612d38816134d0565b82525050565b6000612d498261332c565b612d538185613355565b9350612d638185602086016134e2565b612d6c8161365f565b840191505092915050565b6000612d84602383613355565b9150612d8f82613670565b604082019050919050565b6000612da7602a83613355565b9150612db2826136bf565b604082019050919050565b6000612dca602283613355565b9150612dd58261370e565b604082019050919050565b6000612ded601b83613355565b9150612df88261375d565b602082019050919050565b6000612e10601d83613355565b9150612e1b82613786565b602082019050919050565b6000612e33600183613355565b9150612e3e826137af565b602082019050919050565b6000612e56602183613355565b9150612e61826137d8565b604082019050919050565b6000612e79602083613355565b9150612e8482613827565b602082019050919050565b6000612e9c602983613355565b9150612ea782613850565b604082019050919050565b6000612ebf602583613355565b9150612eca8261389f565b604082019050919050565b6000612ee2602483613355565b9150612eed826138ee565b604082019050919050565b6000612f05601783613355565b9150612f108261393d565b602082019050919050565b6000612f28601183613355565b9150612f3382613966565b602082019050919050565b612f47816134b9565b82525050565b612f56816134c3565b82525050565b6000602082019050612f716000830184612cb3565b92915050565b6000604082019050612f8c6000830185612cb3565b612f996020830184612cb3565b9392505050565b6000604082019050612fb56000830185612cb3565b612fc26020830184612d20565b9392505050565b6000604082019050612fde6000830185612cb3565b612feb6020830184612f3e565b9392505050565b600060c0820190506130076000830189612cb3565b6130146020830188612f3e565b6130216040830187612d2f565b61302e6060830186612d2f565b61303b6080830185612cb3565b61304860a0830184612f3e565b979650505050505050565b60006020820190506130686000830184612d20565b92915050565b600060208201905081810360008301526130888184612d3e565b905092915050565b600060208201905081810360008301526130a981612d77565b9050919050565b600060208201905081810360008301526130c981612d9a565b9050919050565b600060208201905081810360008301526130e981612dbd565b9050919050565b6000602082019050818103600083015261310981612de0565b9050919050565b6000602082019050818103600083015261312981612e03565b9050919050565b6000602082019050818103600083015261314981612e26565b9050919050565b6000602082019050818103600083015261316981612e49565b9050919050565b6000602082019050818103600083015261318981612e6c565b9050919050565b600060208201905081810360008301526131a981612e8f565b9050919050565b600060208201905081810360008301526131c981612eb2565b9050919050565b600060208201905081810360008301526131e981612ed5565b9050919050565b6000602082019050818103600083015261320981612ef8565b9050919050565b6000602082019050818103600083015261322981612f1b565b9050919050565b60006020820190506132456000830184612f3e565b92915050565b600060a0820190506132606000830188612f3e565b61326d6020830187612d2f565b818103604083015261327f8186612cc2565b905061328e6060830185612cb3565b61329b6080830184612f3e565b9695505050505050565b60006020820190506132ba6000830184612f4d565b92915050565b60006132ca6132db565b90506132d68282613515565b919050565b6000604051905090565b600067ffffffffffffffff821115613300576132ff61361c565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613371826134b9565b915061337c836134b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133b1576133b061358f565b5b828201905092915050565b60006133c7826134b9565b91506133d2836134b9565b9250826133e2576133e16135be565b5b828204905092915050565b60006133f8826134b9565b9150613403836134b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561343c5761343b61358f565b5b828202905092915050565b6000613452826134b9565b915061345d836134b9565b9250828210156134705761346f61358f565b5b828203905092915050565b600061348682613499565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134db826134b9565b9050919050565b60005b838110156135005780820151818401526020810190506134e5565b8381111561350f576000848401525b50505050565b61351e8261365f565b810181811067ffffffffffffffff8211171561353d5761353c61361c565b5b80604052505050565b6000613551826134b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135845761358361358f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f7800000000000000000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b6139988161347b565b81146139a357600080fd5b50565b6139af8161348d565b81146139ba57600080fd5b50565b6139c6816134b9565b81146139d157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f34cdb890e07b47f0d6f52ee65249f3e88f4763d4aa6de6bb2cc535f14f47e5f64736f6c63430008070033000000000000000000000000751b19967a0c54540f423653ef6bcec7ab8ab2f7000000000000000000000000751b19967a0c54540f423653ef6bcec7ab8ab2f7

Deployed Bytecode

0x6080604052600436106101185760003560e01c806370a08231116100a0578063b515566a11610064578063b515566a14610398578063c3c8cd80146103c1578063c9567bf9146103d8578063dd62ed3e146103ef578063e5dbce821461042c5761011f565b806370a08231146102b1578063715018a6146102ee5780638da5cb5b1461030557806395d89b4114610330578063a9059cbb1461035b5761011f565b80632634e5e8116100e75780632634e5e8146101f4578063313ce5671461021d578063514d1b4e146102485780635932ead1146102715780636fc3eaec1461029a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610455565b604051610146919061306e565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190612b29565b610492565b6040516101839190613053565b60405180910390f35b34801561019857600080fd5b506101a16104b0565b6040516101ae9190613230565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612a96565b6104c0565b6040516101eb9190613053565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190612c0c565b610599565b005b34801561022957600080fd5b506102326106ae565b60405161023f91906132a5565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a9190612ae9565b6106b7565b005b34801561027d57600080fd5b5061029860048036038101906102939190612bb2565b610858565b005b3480156102a657600080fd5b506102af61090a565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906129fc565b61097c565b6040516102e59190613230565b60405180910390f35b3480156102fa57600080fd5b506103036109cd565b005b34801561031157600080fd5b5061031a610b20565b6040516103279190612f5c565b60405180910390f35b34801561033c57600080fd5b50610345610b49565b604051610352919061306e565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190612b29565b610b86565b60405161038f9190613053565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612b69565b610ba4565b005b3480156103cd57600080fd5b506103d6610cce565b005b3480156103e457600080fd5b506103ed610d48565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612a56565b6112a3565b6040516104239190613230565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906129fc565b61132a565b005b60606040518060400160405280600f81526020017f466c6f6b694672756e6b70757070790000000000000000000000000000000000815250905090565b60006104a661049f6113e6565b84846113ee565b6001905092915050565b600067016345785d8a0000905090565b60006104cd8484846115b9565b61058e846104d96113e6565b610589856040518060600160405280602881526020016139d560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061053f6113e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d789092919063ffffffff16565b6113ee565b600190509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105da6113e6565b73ffffffffffffffffffffffffffffffffffffffff16146105fa57600080fd5b6000811161063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063490613110565b60405180910390fd5b61066c61271061065e8367016345785d8a0000611ddc90919063ffffffff16565b611e5790919063ffffffff16565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6011546040516106a39190613230565b60405180910390a150565b60006009905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f86113e6565b73ffffffffffffffffffffffffffffffffffffffff161461071857600080fd5b80156107cb57426203f4804261072e9190613366565b1161076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076590613130565b60405180910390fd5b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061081b565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b7ffc70dcce81b5afebab40f1a9a0fe597f9097cb179cb4508e875b7b166838f88d828260405161084c929190612fa0565b60405180910390a15050565b6108606113e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490613170565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661094b6113e6565b73ffffffffffffffffffffffffffffffffffffffff161461096b57600080fd5b600047905061097981611ea1565b50565b60006109c6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9c565b9050919050565b6109d56113e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990613170565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600a81526020017f464c4f4b494652554e4b00000000000000000000000000000000000000000000815250905090565b6000610b9a610b936113e6565b84846115b9565b6001905092915050565b610bac6113e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090613170565b60405180910390fd5b60005b8151811015610cca576001600b6000848481518110610c5e57610c5d6135ed565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610cc290613546565b915050610c3c565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d0f6113e6565b73ffffffffffffffffffffffffffffffffffffffff1614610d2f57600080fd5b6000610d3a3061097c565b9050610d458161200a565b50565b610d506113e6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490613170565b60405180910390fd5b601060149054906101000a900460ff1615610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e24906131f0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ebc30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a00006113ee565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0257600080fd5b505afa158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a9190612a29565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9c57600080fd5b505afa158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd49190612a29565b6040518363ffffffff1660e01b8152600401610ff1929190612f77565b602060405180830381600087803b15801561100b57600080fd5b505af115801561101f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110439190612a29565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110cc3061097c565b6000806110d7610b20565b426040518863ffffffff1660e01b81526004016110f996959493929190612ff2565b6060604051808303818588803b15801561111257600080fd5b505af1158015611126573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061114b9190612c39565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff02191690831515021790555067016345785d8a00006011819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161124d929190612fc9565b602060405180830381600087803b15801561126757600080fd5b505af115801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190612bdf565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661136b6113e6565b73ffffffffffffffffffffffffffffffffffffffff161461138b57600080fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561145e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611455906131d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c5906130d0565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115ac9190613230565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611620906131b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090613090565b60405180910390fd5b600081116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390613190565b60405180910390fd5b6116e4610b20565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117525750611722610b20565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611cb557601060179054906101000a900460ff1615611985573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117d457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561182e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118885750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561198457600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ce6113e6565b73ffffffffffffffffffffffffffffffffffffffff1614806119445750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661192c6113e6565b73ffffffffffffffffffffffffffffffffffffffff16145b611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90613210565b60405180910390fd5b5b5b60115481111561199457600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a385750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a4157600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611aec5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b425750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b5a5750601060179054906101000a900460ff165b15611bfb5742600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611baa57600080fd5b607842611bb79190613366565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611c063061097c565b9050601060159054906101000a900460ff16158015611c735750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c8b5750601060169054906101000a900460ff165b15611cb357611c998161200a565b60004790506000811115611cb157611cb047611ea1565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d5c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d6657600090505b611d7284848484612292565b50505050565b6000838311158290611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db7919061306e565b60405180910390fd5b5060008385611dcf9190613447565b9050809150509392505050565b600080831415611def5760009050611e51565b60008284611dfd91906133ed565b9050828482611e0c91906133bc565b14611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613150565b60405180910390fd5b809150505b92915050565b6000611e9983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122bf565b905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611ef1600284611e5790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f1c573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f6d600284611e5790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f98573d6000803e3d6000fd5b5050565b6000600654821115611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda906130b0565b60405180910390fd5b6000611fed612322565b90506120028184611e5790919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120425761204161361c565b5b6040519080825280602002602001820160405280156120705781602001602082028036833780820191505090505b5090503081600081518110612088576120876135ed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561212a57600080fd5b505afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121629190612a29565b81600181518110612176576121756135ed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121dd30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113ee565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161224195949392919061324b565b600060405180830381600087803b15801561225b57600080fd5b505af115801561226f573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b806122a05761229f61234d565b5b6122ab84848461237e565b806122b9576122b8612549565b5b50505050565b60008083118290612306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fd919061306e565b60405180910390fd5b506000838561231591906133bc565b9050809150509392505050565b600080600061232f61255b565b915091506123468183611e5790919063ffffffff16565b9250505090565b600060085414801561236157506000600954145b1561236b5761237c565b600060088190555060006009819055505b565b600080600080600080612390876125ba565b9550955095509550955095506123ee86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061248385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124cf816126ca565b6124d98483612787565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125369190613230565b60405180910390a3505050505050505050565b60046008819055506002600981905550565b60008060006006549050600067016345785d8a0000905061258f67016345785d8a0000600654611e5790919063ffffffff16565b8210156125ad5760065467016345785d8a00009350935050506125b6565b81819350935050505b9091565b60008060008060008060008060006125d78a6008546009546127c1565b92509250925060006125e7612322565b905060008060006125fa8e878787612857565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061266483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d78565b905092915050565b600080828461267b9190613366565b9050838110156126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b7906130f0565b60405180910390fd5b8091505092915050565b60006126d4612322565b905060006126eb8284611ddc90919063ffffffff16565b905061273f81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61279c8260065461262290919063ffffffff16565b6006819055506127b78160075461266c90919063ffffffff16565b6007819055505050565b6000806000806127ed60646127df888a611ddc90919063ffffffff16565b611e5790919063ffffffff16565b905060006128176064612809888b611ddc90919063ffffffff16565b611e5790919063ffffffff16565b9050600061284082612832858c61262290919063ffffffff16565b61262290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128708589611ddc90919063ffffffff16565b905060006128878689611ddc90919063ffffffff16565b9050600061289e8789611ddc90919063ffffffff16565b905060006128c7826128b9858761262290919063ffffffff16565b61262290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006128f36128ee846132e5565b6132c0565b9050808382526020820190508285602086028201111561291657612915613650565b5b60005b85811015612946578161292c8882612950565b845260208401935060208301925050600181019050612919565b5050509392505050565b60008135905061295f8161398f565b92915050565b6000815190506129748161398f565b92915050565b600082601f83011261298f5761298e61364b565b5b813561299f8482602086016128e0565b91505092915050565b6000813590506129b7816139a6565b92915050565b6000815190506129cc816139a6565b92915050565b6000813590506129e1816139bd565b92915050565b6000815190506129f6816139bd565b92915050565b600060208284031215612a1257612a1161365a565b5b6000612a2084828501612950565b91505092915050565b600060208284031215612a3f57612a3e61365a565b5b6000612a4d84828501612965565b91505092915050565b60008060408385031215612a6d57612a6c61365a565b5b6000612a7b85828601612950565b9250506020612a8c85828601612950565b9150509250929050565b600080600060608486031215612aaf57612aae61365a565b5b6000612abd86828701612950565b9350506020612ace86828701612950565b9250506040612adf868287016129d2565b9150509250925092565b60008060408385031215612b0057612aff61365a565b5b6000612b0e85828601612950565b9250506020612b1f858286016129a8565b9150509250929050565b60008060408385031215612b4057612b3f61365a565b5b6000612b4e85828601612950565b9250506020612b5f858286016129d2565b9150509250929050565b600060208284031215612b7f57612b7e61365a565b5b600082013567ffffffffffffffff811115612b9d57612b9c613655565b5b612ba98482850161297a565b91505092915050565b600060208284031215612bc857612bc761365a565b5b6000612bd6848285016129a8565b91505092915050565b600060208284031215612bf557612bf461365a565b5b6000612c03848285016129bd565b91505092915050565b600060208284031215612c2257612c2161365a565b5b6000612c30848285016129d2565b91505092915050565b600080600060608486031215612c5257612c5161365a565b5b6000612c60868287016129e7565b9350506020612c71868287016129e7565b9250506040612c82868287016129e7565b9150509250925092565b6000612c988383612ca4565b60208301905092915050565b612cad8161347b565b82525050565b612cbc8161347b565b82525050565b6000612ccd82613321565b612cd78185613344565b9350612ce283613311565b8060005b83811015612d13578151612cfa8882612c8c565b9750612d0583613337565b925050600181019050612ce6565b5085935050505092915050565b612d298161348d565b82525050565b612d38816134d0565b82525050565b6000612d498261332c565b612d538185613355565b9350612d638185602086016134e2565b612d6c8161365f565b840191505092915050565b6000612d84602383613355565b9150612d8f82613670565b604082019050919050565b6000612da7602a83613355565b9150612db2826136bf565b604082019050919050565b6000612dca602283613355565b9150612dd58261370e565b604082019050919050565b6000612ded601b83613355565b9150612df88261375d565b602082019050919050565b6000612e10601d83613355565b9150612e1b82613786565b602082019050919050565b6000612e33600183613355565b9150612e3e826137af565b602082019050919050565b6000612e56602183613355565b9150612e61826137d8565b604082019050919050565b6000612e79602083613355565b9150612e8482613827565b602082019050919050565b6000612e9c602983613355565b9150612ea782613850565b604082019050919050565b6000612ebf602583613355565b9150612eca8261389f565b604082019050919050565b6000612ee2602483613355565b9150612eed826138ee565b604082019050919050565b6000612f05601783613355565b9150612f108261393d565b602082019050919050565b6000612f28601183613355565b9150612f3382613966565b602082019050919050565b612f47816134b9565b82525050565b612f56816134c3565b82525050565b6000602082019050612f716000830184612cb3565b92915050565b6000604082019050612f8c6000830185612cb3565b612f996020830184612cb3565b9392505050565b6000604082019050612fb56000830185612cb3565b612fc26020830184612d20565b9392505050565b6000604082019050612fde6000830185612cb3565b612feb6020830184612f3e565b9392505050565b600060c0820190506130076000830189612cb3565b6130146020830188612f3e565b6130216040830187612d2f565b61302e6060830186612d2f565b61303b6080830185612cb3565b61304860a0830184612f3e565b979650505050505050565b60006020820190506130686000830184612d20565b92915050565b600060208201905081810360008301526130888184612d3e565b905092915050565b600060208201905081810360008301526130a981612d77565b9050919050565b600060208201905081810360008301526130c981612d9a565b9050919050565b600060208201905081810360008301526130e981612dbd565b9050919050565b6000602082019050818103600083015261310981612de0565b9050919050565b6000602082019050818103600083015261312981612e03565b9050919050565b6000602082019050818103600083015261314981612e26565b9050919050565b6000602082019050818103600083015261316981612e49565b9050919050565b6000602082019050818103600083015261318981612e6c565b9050919050565b600060208201905081810360008301526131a981612e8f565b9050919050565b600060208201905081810360008301526131c981612eb2565b9050919050565b600060208201905081810360008301526131e981612ed5565b9050919050565b6000602082019050818103600083015261320981612ef8565b9050919050565b6000602082019050818103600083015261322981612f1b565b9050919050565b60006020820190506132456000830184612f3e565b92915050565b600060a0820190506132606000830188612f3e565b61326d6020830187612d2f565b818103604083015261327f8186612cc2565b905061328e6060830185612cb3565b61329b6080830184612f3e565b9695505050505050565b60006020820190506132ba6000830184612f4d565b92915050565b60006132ca6132db565b90506132d68282613515565b919050565b6000604051905090565b600067ffffffffffffffff821115613300576132ff61361c565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613371826134b9565b915061337c836134b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133b1576133b061358f565b5b828201905092915050565b60006133c7826134b9565b91506133d2836134b9565b9250826133e2576133e16135be565b5b828204905092915050565b60006133f8826134b9565b9150613403836134b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561343c5761343b61358f565b5b828202905092915050565b6000613452826134b9565b915061345d836134b9565b9250828210156134705761346f61358f565b5b828203905092915050565b600061348682613499565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134db826134b9565b9050919050565b60005b838110156135005780820151818401526020810190506134e5565b8381111561350f576000848401525b50505050565b61351e8261365f565b810181811067ffffffffffffffff8211171561353d5761353c61361c565b5b80604052505050565b6000613551826134b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135845761358361358f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f7800000000000000000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b6139988161347b565b81146139a357600080fd5b50565b6139af8161348d565b81146139ba57600080fd5b50565b6139c6816134b9565b81146139d157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f34cdb890e07b47f0d6f52ee65249f3e88f4763d4aa6de6bb2cc535f14f47e5f64736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000751b19967a0c54540f423653ef6bcec7ab8ab2f7000000000000000000000000751b19967a0c54540f423653ef6bcec7ab8ab2f7

-----Decoded View---------------
Arg [0] : addr1 (address): 0x751b19967a0C54540f423653EF6BCEC7aB8AB2f7
Arg [1] : addr2 (address): 0x751b19967a0C54540f423653EF6BCEC7aB8AB2f7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000751b19967a0c54540f423653ef6bcec7ab8ab2f7
Arg [1] : 000000000000000000000000751b19967a0c54540f423653ef6bcec7ab8ab2f7


Deployed Bytecode Sourcemap

4057:12996:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6934:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7859:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7211:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8060:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14499:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7120:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12212:367;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8514:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12993:191;;;;;;;;;;;;;:::i;:::-;;7314:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3009:148;;;;;;;;;;;;;:::i;:::-;;2795:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7025:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7460:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13192:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12793:192;;;;;;;;;;;;;:::i;:::-;;5928:1000;;;;;;;;;;;;;:::i;:::-;;7667:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12586:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6934:83;6971:13;7004:5;;;;;;;;;;;;;;;;;6997:12;;6934:83;:::o;7859:193::-;7961:4;7983:39;7992:12;:10;:12::i;:::-;8006:7;8015:6;7983:8;:39::i;:::-;8040:4;8033:11;;7859:193;;;;:::o;7211:95::-;7264:7;4635:17;7284:14;;7211:95;:::o;8060:446::-;8192:4;8209:36;8219:6;8227:9;8238:6;8209:9;:36::i;:::-;8256:220;8279:6;8300:12;:10;:12::i;:::-;8327:138;8383:6;8327:138;;;;;;;;;;;;;;;;;:11;:19;8339:6;8327:19;;;;;;;;;;;;;;;:33;8347:12;:10;:12::i;:::-;8327:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8256:8;:220::i;:::-;8494:4;8487:11;;8060:446;;;;;:::o;14499:281::-;14580:12;;;;;;;;;;;14564:28;;:12;:10;:12::i;:::-;:28;;;14556:37;;;;;;14627:1;14612:12;:16;14604:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14688:36;14718:5;14688:25;14700:12;4635:17;14688:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;14673:12;:51;;;;14740:32;14759:12;;14740:32;;;;;;:::i;:::-;;;;;;;;14499:281;:::o;7120:83::-;7161:5;4298:1;7179:16;;7120:83;:::o;12212:367::-;12300:12;;;;;;;;;;;12284:28;;:12;:10;:12::i;:::-;:28;;;12276:37;;;;;;12322:6;12318:198;;;12381:15;12372:6;12354:15;:24;;;;:::i;:::-;:42;12345:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12440:4;12417:11;:20;12429:7;12417:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12318:198;;;12484:11;:20;12496:7;12484:20;;;;;;;;;;;;;;;;12477:27;;;;;;;;;;;12318:198;12530:39;12553:7;12562:6;12530:39;;;;;;;:::i;:::-;;;;;;;;12212:367;;:::o;8514:103::-;2932:12;:10;:12::i;:::-;2922:22;;:6;;;;;;;;;;:22;;;2914:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8604:5:::1;8586:15;;:23;;;;;;;;;;;;;;;;;;8514:103:::0;:::o;12993:191::-;13059:12;;;;;;;;;;;13043:28;;:12;:10;:12::i;:::-;:28;;;13035:37;;;;;;13083:26;13112:21;13083:50;;13144:32;13157:18;13144:12;:32::i;:::-;13024:160;12993:191::o;7314:138::-;7380:7;7407:37;7427:7;:16;7435:7;7427:16;;;;;;;;;;;;;;;;7407:19;:37::i;:::-;7400:44;;7314:138;;;:::o;3009:148::-;2932:12;:10;:12::i;:::-;2922:22;;:6;;;;;;;;;;:22;;;2914:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3116:1:::1;3079:40;;3100:6;::::0;::::1;;;;;;;;3079:40;;;;;;;;;;;;3147:1;3130:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3009:148::o:0;2795:79::-;2833:7;2860:6;;;;;;;;;;;2853:13;;2795:79;:::o;7025:87::-;7064:13;7097:7;;;;;;;;;;;;;;;;;7090:14;;7025:87;:::o;7460:199::-;7565:4;7587:42;7597:12;:10;:12::i;:::-;7611:9;7622:6;7587:9;:42::i;:::-;7647:4;7640:11;;7460:199;;;;:::o;13192:167::-;2932:12;:10;:12::i;:::-;2922:22;;:6;;;;;;;;;;:22;;;2914:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13266:9:::1;13261:91;13285:5;:12;13281:1;:16;13261:91;;;13336:4;13319;:14;13324:5;13330:1;13324:8;;;;;;;;:::i;:::-;;;;;;;;13319:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13299:3;;;;;:::i;:::-;;;;13261:91;;;;13192:167:::0;:::o;12793:192::-;12859:12;;;;;;;;;;;12843:28;;:12;:10;:12::i;:::-;:28;;;12835:37;;;;;;12883:23;12909:24;12927:4;12909:9;:24::i;:::-;12883:50;;12944:33;12961:15;12944:16;:33::i;:::-;12824:161;12793:192::o;5928:1000::-;2932:12;:10;:12::i;:::-;2922:22;;:6;;;;;;;;;;:22;;;2914:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5992:11:::1;;;;;;;;;;;5991:12;5983:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6042:35;6112:42;6042:113;;6184:16;6166:15;;:34;;;;;;;;;;;;;;;;;;6217:58;6234:4;6249:15;;;;;;;;;;;4635:17;6217:8;:58::i;:::-;6320:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6302:70;;;6381:4;6388:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6302:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6286:13;;:126;;;;;;;;;;;;;;;;;;6427:15;;;;;;;;;;;:31;;;6480:21;6525:4;6545:24;6563:4;6545:9;:24::i;:::-;6584:1;6600::::0;6616:7:::1;:5;:7::i;:::-;6638:15;6427:237;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6689:4;6675:11;;:18;;;;;;;;;;;;;;;;;;6722:4;6704:15;;:22;;;;;;;;;;;;;;;;;;6752:17;6737:12;:32;;;;6794:4;6780:11;;:18;;;;;;;;;;;;;;;;;;6816:13;;;;;;;;;;;6809:29;;;6861:15;;;;;;;;;;;6892:17;6809:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5972:956;5928:1000::o:0;7667:184::-;7784:7;7816:11;:18;7828:5;7816:18;;;;;;;;;;;;;;;:27;7835:7;7816:27;;;;;;;;;;;;;;;;7809:34;;7667:184;;;;:::o;12586:135::-;12661:12;;;;;;;;;;;12645:28;;:12;:10;:12::i;:::-;:28;;;12637:37;;;;;;12708:5;12685:11;:20;12697:7;12685:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12586:135;:::o;298:98::-;351:7;378:10;371:17;;298:98;:::o;9198:369::-;9342:1;9325:19;;:5;:19;;;;9317:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9423:1;9404:21;;:7;:21;;;;9396:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9505:6;9475:11;:18;9487:5;9475:18;;;;;;;;;;;;;;;:27;9494:7;9475:27;;;;;;;;;;;;;;;:36;;;;9543:7;9527:32;;9536:5;9527:32;;;9552:6;9527:32;;;;;;:::i;:::-;;;;;;;;9198:369;;;:::o;9575:1976::-;9713:1;9697:18;;:4;:18;;;;9689:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9790:1;9776:16;;:2;:16;;;;9768:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9860:1;9851:6;:10;9843:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9932:7;:5;:7::i;:::-;9924:15;;:4;:15;;;;:32;;;;;9949:7;:5;:7::i;:::-;9943:13;;:2;:13;;;;9924:32;9920:1430;;;9977:15;;;;;;;;;;;9973:526;;;10055:4;10039:21;;:4;:21;;;;:65;;;;;10099:4;10085:19;;:2;:19;;;;10039:65;:122;;;;;10145:15;;;;;;;;;;;10129:32;;:4;:32;;;;10039:122;:177;;;;;10200:15;;;;;;;;;;;10186:30;;:2;:30;;;;10039:177;10013:471;;;10317:15;;;;;;;;;;;10293:40;;:12;:10;:12::i;:::-;:40;;;:102;;;;10382:13;;;;;;;;;;;10366:29;;:12;:10;:12::i;:::-;:29;;;10293:102;10259:205;;;;;;;;;;;;:::i;:::-;;;;;;;;;10013:471;9973:526;10531:12;;10521:6;:22;;10513:31;;;;;;10568:4;:10;10573:4;10568:10;;;;;;;;;;;;;;;;;;;;;;;;;10567:11;:24;;;;;10583:4;:8;10588:2;10583:8;;;;;;;;;;;;;;;;;;;;;;;;;10582:9;10567:24;10559:33;;;;;;10637:13;;;;;;;;;;;10629:21;;:4;:21;;;:72;;;;;10685:15;;;;;;;;;;;10671:30;;:2;:30;;;;10629:72;:116;;;;;10723:18;:22;10742:2;10723:22;;;;;;;;;;;;;;;;;;;;;;;;;10722:23;10629:116;:152;;;;;10766:15;;;;;;;;;;;10629:152;10607:329;;;10839:15;10824:8;:12;10833:2;10824:12;;;;;;;;;;;;;;;;:30;10816:39;;;;;;10908:11;10889:15;:31;;;;:::i;:::-;10874:8;:12;10883:2;10874:12;;;;;;;;;;;;;;;:46;;;;10607:329;10950:28;10981:24;10999:4;10981:9;:24::i;:::-;10950:55;;11025:6;;;;;;;;;;;11024:7;:32;;;;;11043:13;;;;;;;;;;;11035:21;;:4;:21;;;;11024:32;:47;;;;;11060:11;;;;;;;;;;;11024:47;11020:319;;;11092:38;11109:20;11092:16;:38::i;:::-;11149:26;11178:21;11149:50;;11243:1;11222:18;:22;11218:106;;;11269:35;11282:21;11269:12;:35::i;:::-;11218:106;11073:266;11020:319;9958:1392;9920:1430;11360:12;11375:4;11360:19;;11396:18;:24;11415:4;11396:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11424:18;:22;11443:2;11424:22;;;;;;;;;;;;;;;;;;;;;;;;;11396:50;11392:98;;;11473:5;11463:15;;11392:98;11502:41;11517:4;11523:2;11527:6;11535:7;11502:14;:41::i;:::-;9678:1873;9575:1976;;;:::o;1560:224::-;1680:7;1713:1;1708;:6;;1716:12;1700:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1740:9;1756:1;1752;:5;;;;:::i;:::-;1740:17;;1775:1;1768:8;;;1560:224;;;;;:::o;1792:246::-;1850:7;1879:1;1874;:6;1870:47;;;1904:1;1897:8;;;;1870:47;1927:9;1943:1;1939;:5;;;;:::i;:::-;1927:17;;1972:1;1967;1963;:5;;;;:::i;:::-;:10;1955:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2029:1;2022:8;;;1792:246;;;;;:::o;2046:132::-;2104:7;2131:39;2135:1;2138;2131:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2124:46;;2046:132;;;;:::o;12050:151::-;12107:12;;;;;;;;;;;:21;;:36;12129:13;12140:1;12129:6;:10;;:13;;;;:::i;:::-;12107:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12154:15;;;;;;;;;;;:24;;:39;12179:13;12190:1;12179:6;:10;;:13;;;;:::i;:::-;12154:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12050:151;:::o;8625:323::-;8720:7;8778;;8767;:18;;8745:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8866:19;8888:10;:8;:10::i;:::-;8866:32;;8916:24;8928:11;8916:7;:11;;:24;;;;:::i;:::-;8909:31;;;8625:323;;;:::o;11559:483::-;5434:4;5425:6;;:13;;;;;;;;;;;;;;;;;;11637:21:::1;11675:1;11661:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11637:40;;11706:4;11688;11693:1;11688:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11732:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11722:4;11727:1;11722:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11765:62;11782:4;11797:15;;;;;;;;;;;11815:11;11765:8;:62::i;:::-;11838:15;;;;;;;;;;;:66;;;11919:11;11945:1;11961:4;11988;12008:15;11838:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11626:416;5470:5:::0;5461:6;;:14;;;;;;;;;;;;;;;;;;11559:483;:::o;13374:282::-;13530:7;13525:28;;13539:14;:12;:14::i;:::-;13525:28;13564:44;13582:6;13590:9;13601:6;13564:17;:44::i;:::-;13624:7;13619:29;;13633:15;:13;:15::i;:::-;13619:29;13374:282;;;;:::o;2186:223::-;2306:7;2338:1;2334;:5;2341:12;2326:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2365:9;2381:1;2377;:5;;;;:::i;:::-;2365:17;;2400:1;2393:8;;;2186:223;;;;;:::o;16618:164::-;16660:7;16681:15;16698;16717:19;:17;:19::i;:::-;16680:56;;;;16754:20;16766:7;16754;:11;;:20;;;;:::i;:::-;16747:27;;;;16618:164;:::o;8956:139::-;9014:1;9003:7;;:12;:30;;;;;9032:1;9019:9;;:14;9003:30;8999:43;;;9035:7;;8999:43;9062:1;9052:7;:11;;;;9086:1;9074:9;:13;;;;8956:139;:::o;13664:610::-;13811:15;13841:23;13879:12;13906:23;13944:12;13971:13;13998:19;14009:7;13998:10;:19::i;:::-;13796:221;;;;;;;;;;;;14046:28;14066:7;14046;:15;14054:6;14046:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14028:7;:15;14036:6;14028:15;;;;;;;;;;;;;;;:46;;;;14106:39;14129:15;14106:7;:18;14114:9;14106:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14085:7;:18;14093:9;14085:18;;;;;;;;;;;;;;;:60;;;;14156:16;14166:5;14156:9;:16::i;:::-;14183:23;14195:4;14201;14183:11;:23::i;:::-;14239:9;14222:44;;14231:6;14222:44;;;14250:15;14222:44;;;;;;:::i;:::-;;;;;;;;13785:489;;;;;;13664:610;;;:::o;9103:87::-;9157:1;9147:7;:11;;;;9181:1;9169:9;:13;;;;9103:87::o;16790:257::-;16841:7;16850;16870:15;16888:7;;16870:25;;16906:15;4635:17;16906:25;;16956:20;4635:17;16956:7;;:11;;:20;;;;:::i;:::-;16946:7;:30;16942:61;;;16986:7;;4635:17;16978:25;;;;;;;;16942:61;17022:7;17031;17014:25;;;;;;16790:257;;;:::o;14978:615::-;15078:7;15100;15122;15144;15166;15188;15224:23;15249:12;15263:13;15293:40;15305:7;15314;;15323:9;;15293:11;:40::i;:::-;15223:110;;;;;;15344:19;15366:10;:8;:10::i;:::-;15344:32;;15388:15;15405:23;15430:12;15459:46;15471:7;15480:4;15486:5;15493:11;15459;:46::i;:::-;15387:118;;;;;;15524:7;15533:15;15550:4;15556:15;15573:4;15579:5;15516:69;;;;;;;;;;;;;;;;;;;14978:615;;;;;;;:::o;1416:136::-;1474:7;1501:43;1505:1;1508;1501:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1494:50;;1416:136;;;;:::o;1229:179::-;1287:7;1307:9;1323:1;1319;:5;;;;:::i;:::-;1307:17;;1348:1;1343;:6;;1335:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1399:1;1392:8;;;1229:179;;;;:::o;14282:211::-;14335:19;14357:10;:8;:10::i;:::-;14335:32;;14378:13;14394:22;14404:11;14394:5;:9;;:22;;;;:::i;:::-;14378:38;;14452:33;14479:5;14452:7;:22;14468:4;14452:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14427:7;:22;14443:4;14427:22;;;;;;;;;;;;;;;:58;;;;14324:169;;14282:211;:::o;14786:147::-;14864:17;14876:4;14864:7;;:11;;:17;;;;:::i;:::-;14854:7;:27;;;;14905:20;14920:4;14905:10;;:14;;:20;;;;:::i;:::-;14892:10;:33;;;;14786:147;;:::o;15601:467::-;15769:7;15791;15813;15848:12;15863:28;15887:3;15863:19;15875:6;15863:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15848:43;;15902:13;15918:29;15943:3;15918:20;15930:7;15918;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15902:45;;15958:23;15984:28;16006:5;15984:17;15996:4;15984:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15958:54;;16031:15;16048:4;16054:5;16023:37;;;;;;;;;15601:467;;;;;;;:::o;16076:534::-;16270:7;16292;16314;16349:15;16367:24;16379:11;16367:7;:11;;:24;;;;:::i;:::-;16349:42;;16402:12;16417:21;16426:11;16417:4;:8;;:21;;;;:::i;:::-;16402:36;;16449:13;16465:22;16475:11;16465:5;:9;;:22;;;;:::i;:::-;16449:38;;16498:23;16524:28;16546:5;16524:17;16536:4;16524:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16498:54;;16571:7;16580:15;16597:4;16563:39;;;;;;;;;;16076:534;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:137::-;1632:5;1663:6;1657:13;1648:22;;1679:30;1703:5;1679:30;:::i;:::-;1578:137;;;;:::o;1721:139::-;1767:5;1805:6;1792:20;1783:29;;1821:33;1848:5;1821:33;:::i;:::-;1721:139;;;;:::o;1866:143::-;1923:5;1954:6;1948:13;1939:22;;1970:33;1997:5;1970:33;:::i;:::-;1866:143;;;;:::o;2015:329::-;2074:6;2123:2;2111:9;2102:7;2098:23;2094:32;2091:119;;;2129:79;;:::i;:::-;2091:119;2249:1;2274:53;2319:7;2310:6;2299:9;2295:22;2274:53;:::i;:::-;2264:63;;2220:117;2015:329;;;;:::o;2350:351::-;2420:6;2469:2;2457:9;2448:7;2444:23;2440:32;2437:119;;;2475:79;;:::i;:::-;2437:119;2595:1;2620:64;2676:7;2667:6;2656:9;2652:22;2620:64;:::i;:::-;2610:74;;2566:128;2350:351;;;;:::o;2707:474::-;2775:6;2783;2832:2;2820:9;2811:7;2807:23;2803:32;2800:119;;;2838:79;;:::i;:::-;2800:119;2958:1;2983:53;3028:7;3019:6;3008:9;3004:22;2983:53;:::i;:::-;2973:63;;2929:117;3085:2;3111:53;3156:7;3147:6;3136:9;3132:22;3111:53;:::i;:::-;3101:63;;3056:118;2707:474;;;;;:::o;3187:619::-;3264:6;3272;3280;3329:2;3317:9;3308:7;3304:23;3300:32;3297:119;;;3335:79;;:::i;:::-;3297:119;3455:1;3480:53;3525:7;3516:6;3505:9;3501:22;3480:53;:::i;:::-;3470:63;;3426:117;3582:2;3608:53;3653:7;3644:6;3633:9;3629:22;3608:53;:::i;:::-;3598:63;;3553:118;3710:2;3736:53;3781:7;3772:6;3761:9;3757:22;3736:53;:::i;:::-;3726:63;;3681:118;3187:619;;;;;:::o;3812:468::-;3877:6;3885;3934:2;3922:9;3913:7;3909:23;3905:32;3902:119;;;3940:79;;:::i;:::-;3902:119;4060:1;4085:53;4130:7;4121:6;4110:9;4106:22;4085:53;:::i;:::-;4075:63;;4031:117;4187:2;4213:50;4255:7;4246:6;4235:9;4231:22;4213:50;:::i;:::-;4203:60;;4158:115;3812:468;;;;;:::o;4286:474::-;4354:6;4362;4411:2;4399:9;4390:7;4386:23;4382:32;4379:119;;;4417:79;;:::i;:::-;4379:119;4537:1;4562:53;4607:7;4598:6;4587:9;4583:22;4562:53;:::i;:::-;4552:63;;4508:117;4664:2;4690:53;4735:7;4726:6;4715:9;4711:22;4690:53;:::i;:::-;4680:63;;4635:118;4286:474;;;;;:::o;4766:539::-;4850:6;4899:2;4887:9;4878:7;4874:23;4870:32;4867:119;;;4905:79;;:::i;:::-;4867:119;5053:1;5042:9;5038:17;5025:31;5083:18;5075:6;5072:30;5069:117;;;5105:79;;:::i;:::-;5069:117;5210:78;5280:7;5271:6;5260:9;5256:22;5210:78;:::i;:::-;5200:88;;4996:302;4766:539;;;;:::o;5311:323::-;5367:6;5416:2;5404:9;5395:7;5391:23;5387:32;5384:119;;;5422:79;;:::i;:::-;5384:119;5542:1;5567:50;5609:7;5600:6;5589:9;5585:22;5567:50;:::i;:::-;5557:60;;5513:114;5311:323;;;;:::o;5640:345::-;5707:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:119;;;5762:79;;:::i;:::-;5724:119;5882:1;5907:61;5960:7;5951:6;5940:9;5936:22;5907:61;:::i;:::-;5897:71;;5853:125;5640:345;;;;:::o;5991:329::-;6050:6;6099:2;6087:9;6078:7;6074:23;6070:32;6067:119;;;6105:79;;:::i;:::-;6067:119;6225:1;6250:53;6295:7;6286:6;6275:9;6271:22;6250:53;:::i;:::-;6240:63;;6196:117;5991:329;;;;:::o;6326:663::-;6414:6;6422;6430;6479:2;6467:9;6458:7;6454:23;6450:32;6447:119;;;6485:79;;:::i;:::-;6447:119;6605:1;6630:64;6686:7;6677:6;6666:9;6662:22;6630:64;:::i;:::-;6620:74;;6576:128;6743:2;6769:64;6825:7;6816:6;6805:9;6801:22;6769:64;:::i;:::-;6759:74;;6714:129;6882:2;6908:64;6964:7;6955:6;6944:9;6940:22;6908:64;:::i;:::-;6898:74;;6853:129;6326:663;;;;;:::o;6995:179::-;7064:10;7085:46;7127:3;7119:6;7085:46;:::i;:::-;7163:4;7158:3;7154:14;7140:28;;6995:179;;;;:::o;7180:108::-;7257:24;7275:5;7257:24;:::i;:::-;7252:3;7245:37;7180:108;;:::o;7294:118::-;7381:24;7399:5;7381:24;:::i;:::-;7376:3;7369:37;7294:118;;:::o;7448:732::-;7567:3;7596:54;7644:5;7596:54;:::i;:::-;7666:86;7745:6;7740:3;7666:86;:::i;:::-;7659:93;;7776:56;7826:5;7776:56;:::i;:::-;7855:7;7886:1;7871:284;7896:6;7893:1;7890:13;7871:284;;;7972:6;7966:13;7999:63;8058:3;8043:13;7999:63;:::i;:::-;7992:70;;8085:60;8138:6;8085:60;:::i;:::-;8075:70;;7931:224;7918:1;7915;7911:9;7906:14;;7871:284;;;7875:14;8171:3;8164:10;;7572:608;;;7448:732;;;;:::o;8186:109::-;8267:21;8282:5;8267:21;:::i;:::-;8262:3;8255:34;8186:109;;:::o;8301:147::-;8396:45;8435:5;8396:45;:::i;:::-;8391:3;8384:58;8301:147;;:::o;8454:364::-;8542:3;8570:39;8603:5;8570:39;:::i;:::-;8625:71;8689:6;8684:3;8625:71;:::i;:::-;8618:78;;8705:52;8750:6;8745:3;8738:4;8731:5;8727:16;8705:52;:::i;:::-;8782:29;8804:6;8782:29;:::i;:::-;8777:3;8773:39;8766:46;;8546:272;8454:364;;;;:::o;8824:366::-;8966:3;8987:67;9051:2;9046:3;8987:67;:::i;:::-;8980:74;;9063:93;9152:3;9063:93;:::i;:::-;9181:2;9176:3;9172:12;9165:19;;8824:366;;;:::o;9196:::-;9338:3;9359:67;9423:2;9418:3;9359:67;:::i;:::-;9352:74;;9435:93;9524:3;9435:93;:::i;:::-;9553:2;9548:3;9544:12;9537:19;;9196:366;;;:::o;9568:::-;9710:3;9731:67;9795:2;9790:3;9731:67;:::i;:::-;9724:74;;9807:93;9896:3;9807:93;:::i;:::-;9925:2;9920:3;9916:12;9909:19;;9568:366;;;:::o;9940:::-;10082:3;10103:67;10167:2;10162:3;10103:67;:::i;:::-;10096:74;;10179:93;10268:3;10179:93;:::i;:::-;10297:2;10292:3;10288:12;10281:19;;9940:366;;;:::o;10312:::-;10454:3;10475:67;10539:2;10534:3;10475:67;:::i;:::-;10468:74;;10551:93;10640:3;10551:93;:::i;:::-;10669:2;10664:3;10660:12;10653:19;;10312:366;;;:::o;10684:365::-;10826:3;10847:66;10911:1;10906:3;10847:66;:::i;:::-;10840:73;;10922:93;11011:3;10922:93;:::i;:::-;11040:2;11035:3;11031:12;11024:19;;10684:365;;;:::o;11055:366::-;11197:3;11218:67;11282:2;11277:3;11218:67;:::i;:::-;11211:74;;11294:93;11383:3;11294:93;:::i;:::-;11412:2;11407:3;11403:12;11396:19;;11055:366;;;:::o;11427:::-;11569:3;11590:67;11654:2;11649:3;11590:67;:::i;:::-;11583:74;;11666:93;11755:3;11666:93;:::i;:::-;11784:2;11779:3;11775:12;11768:19;;11427:366;;;:::o;11799:::-;11941:3;11962:67;12026:2;12021:3;11962:67;:::i;:::-;11955:74;;12038:93;12127:3;12038:93;:::i;:::-;12156:2;12151:3;12147:12;12140:19;;11799:366;;;:::o;12171:::-;12313:3;12334:67;12398:2;12393:3;12334:67;:::i;:::-;12327:74;;12410:93;12499:3;12410:93;:::i;:::-;12528:2;12523:3;12519:12;12512:19;;12171:366;;;:::o;12543:::-;12685:3;12706:67;12770:2;12765:3;12706:67;:::i;:::-;12699:74;;12782:93;12871:3;12782:93;:::i;:::-;12900:2;12895:3;12891:12;12884:19;;12543:366;;;:::o;12915:::-;13057:3;13078:67;13142:2;13137:3;13078:67;:::i;:::-;13071:74;;13154:93;13243:3;13154:93;:::i;:::-;13272:2;13267:3;13263:12;13256:19;;12915:366;;;:::o;13287:::-;13429:3;13450:67;13514:2;13509:3;13450:67;:::i;:::-;13443:74;;13526:93;13615:3;13526:93;:::i;:::-;13644:2;13639:3;13635:12;13628:19;;13287:366;;;:::o;13659:118::-;13746:24;13764:5;13746:24;:::i;:::-;13741:3;13734:37;13659:118;;:::o;13783:112::-;13866:22;13882:5;13866:22;:::i;:::-;13861:3;13854:35;13783:112;;:::o;13901:222::-;13994:4;14032:2;14021:9;14017:18;14009:26;;14045:71;14113:1;14102:9;14098:17;14089:6;14045:71;:::i;:::-;13901:222;;;;:::o;14129:332::-;14250:4;14288:2;14277:9;14273:18;14265:26;;14301:71;14369:1;14358:9;14354:17;14345:6;14301:71;:::i;:::-;14382:72;14450:2;14439:9;14435:18;14426:6;14382:72;:::i;:::-;14129:332;;;;;:::o;14467:320::-;14582:4;14620:2;14609:9;14605:18;14597:26;;14633:71;14701:1;14690:9;14686:17;14677:6;14633:71;:::i;:::-;14714:66;14776:2;14765:9;14761:18;14752:6;14714:66;:::i;:::-;14467:320;;;;;:::o;14793:332::-;14914:4;14952:2;14941:9;14937:18;14929:26;;14965:71;15033:1;15022:9;15018:17;15009:6;14965:71;:::i;:::-;15046:72;15114:2;15103:9;15099:18;15090:6;15046:72;:::i;:::-;14793:332;;;;;:::o;15131:807::-;15380:4;15418:3;15407:9;15403:19;15395:27;;15432:71;15500:1;15489:9;15485:17;15476:6;15432:71;:::i;:::-;15513:72;15581:2;15570:9;15566:18;15557:6;15513:72;:::i;:::-;15595:80;15671:2;15660:9;15656:18;15647:6;15595:80;:::i;:::-;15685;15761:2;15750:9;15746:18;15737:6;15685:80;:::i;:::-;15775:73;15843:3;15832:9;15828:19;15819:6;15775:73;:::i;:::-;15858;15926:3;15915:9;15911:19;15902:6;15858:73;:::i;:::-;15131:807;;;;;;;;;:::o;15944:210::-;16031:4;16069:2;16058:9;16054:18;16046:26;;16082:65;16144:1;16133:9;16129:17;16120:6;16082:65;:::i;:::-;15944:210;;;;:::o;16160:313::-;16273:4;16311:2;16300:9;16296:18;16288:26;;16360:9;16354:4;16350:20;16346:1;16335:9;16331:17;16324:47;16388:78;16461:4;16452:6;16388:78;:::i;:::-;16380:86;;16160:313;;;;:::o;16479:419::-;16645:4;16683:2;16672:9;16668:18;16660:26;;16732:9;16726:4;16722:20;16718:1;16707:9;16703:17;16696:47;16760:131;16886:4;16760:131;:::i;:::-;16752:139;;16479:419;;;:::o;16904:::-;17070:4;17108:2;17097:9;17093:18;17085:26;;17157:9;17151:4;17147:20;17143:1;17132:9;17128:17;17121:47;17185:131;17311:4;17185:131;:::i;:::-;17177:139;;16904:419;;;:::o;17329:::-;17495:4;17533:2;17522:9;17518:18;17510:26;;17582:9;17576:4;17572:20;17568:1;17557:9;17553:17;17546:47;17610:131;17736:4;17610:131;:::i;:::-;17602:139;;17329:419;;;:::o;17754:::-;17920:4;17958:2;17947:9;17943:18;17935:26;;18007:9;18001:4;17997:20;17993:1;17982:9;17978:17;17971:47;18035:131;18161:4;18035:131;:::i;:::-;18027:139;;17754:419;;;:::o;18179:::-;18345:4;18383:2;18372:9;18368:18;18360:26;;18432:9;18426:4;18422:20;18418:1;18407:9;18403:17;18396:47;18460:131;18586:4;18460:131;:::i;:::-;18452:139;;18179:419;;;:::o;18604:::-;18770:4;18808:2;18797:9;18793:18;18785:26;;18857:9;18851:4;18847:20;18843:1;18832:9;18828:17;18821:47;18885:131;19011:4;18885:131;:::i;:::-;18877:139;;18604:419;;;:::o;19029:::-;19195:4;19233:2;19222:9;19218:18;19210:26;;19282:9;19276:4;19272:20;19268:1;19257:9;19253:17;19246:47;19310:131;19436:4;19310:131;:::i;:::-;19302:139;;19029:419;;;:::o;19454:::-;19620:4;19658:2;19647:9;19643:18;19635:26;;19707:9;19701:4;19697:20;19693:1;19682:9;19678:17;19671:47;19735:131;19861:4;19735:131;:::i;:::-;19727:139;;19454:419;;;:::o;19879:::-;20045:4;20083:2;20072:9;20068:18;20060:26;;20132:9;20126:4;20122:20;20118:1;20107:9;20103:17;20096:47;20160:131;20286:4;20160:131;:::i;:::-;20152:139;;19879:419;;;:::o;20304:::-;20470:4;20508:2;20497:9;20493:18;20485:26;;20557:9;20551:4;20547:20;20543:1;20532:9;20528:17;20521:47;20585:131;20711:4;20585:131;:::i;:::-;20577:139;;20304:419;;;:::o;20729:::-;20895:4;20933:2;20922:9;20918:18;20910:26;;20982:9;20976:4;20972:20;20968:1;20957:9;20953:17;20946:47;21010:131;21136:4;21010:131;:::i;:::-;21002:139;;20729:419;;;:::o;21154:::-;21320:4;21358:2;21347:9;21343:18;21335:26;;21407:9;21401:4;21397:20;21393:1;21382:9;21378:17;21371:47;21435:131;21561:4;21435:131;:::i;:::-;21427:139;;21154:419;;;:::o;21579:::-;21745:4;21783:2;21772:9;21768:18;21760:26;;21832:9;21826:4;21822:20;21818:1;21807:9;21803:17;21796:47;21860:131;21986:4;21860:131;:::i;:::-;21852:139;;21579:419;;;:::o;22004:222::-;22097:4;22135:2;22124:9;22120:18;22112:26;;22148:71;22216:1;22205:9;22201:17;22192:6;22148:71;:::i;:::-;22004:222;;;;:::o;22232:831::-;22495:4;22533:3;22522:9;22518:19;22510:27;;22547:71;22615:1;22604:9;22600:17;22591:6;22547:71;:::i;:::-;22628:80;22704:2;22693:9;22689:18;22680:6;22628:80;:::i;:::-;22755:9;22749:4;22745:20;22740:2;22729:9;22725:18;22718:48;22783:108;22886:4;22877:6;22783:108;:::i;:::-;22775:116;;22901:72;22969:2;22958:9;22954:18;22945:6;22901:72;:::i;:::-;22983:73;23051:3;23040:9;23036:19;23027:6;22983:73;:::i;:::-;22232:831;;;;;;;;:::o;23069:214::-;23158:4;23196:2;23185:9;23181:18;23173:26;;23209:67;23273:1;23262:9;23258:17;23249:6;23209:67;:::i;:::-;23069:214;;;;:::o;23289:129::-;23323:6;23350:20;;:::i;:::-;23340:30;;23379:33;23407:4;23399:6;23379:33;:::i;:::-;23289:129;;;:::o;23424:75::-;23457:6;23490:2;23484:9;23474:19;;23424:75;:::o;23505:311::-;23582:4;23672:18;23664:6;23661:30;23658:56;;;23694:18;;:::i;:::-;23658:56;23744:4;23736:6;23732:17;23724:25;;23804:4;23798;23794:15;23786:23;;23505:311;;;:::o;23822:132::-;23889:4;23912:3;23904:11;;23942:4;23937:3;23933:14;23925:22;;23822:132;;;:::o;23960:114::-;24027:6;24061:5;24055:12;24045:22;;23960:114;;;:::o;24080:99::-;24132:6;24166:5;24160:12;24150:22;;24080:99;;;:::o;24185:113::-;24255:4;24287;24282:3;24278:14;24270:22;;24185:113;;;:::o;24304:184::-;24403:11;24437:6;24432:3;24425:19;24477:4;24472:3;24468:14;24453:29;;24304:184;;;;:::o;24494:169::-;24578:11;24612:6;24607:3;24600:19;24652:4;24647:3;24643:14;24628:29;;24494:169;;;;:::o;24669:305::-;24709:3;24728:20;24746:1;24728:20;:::i;:::-;24723:25;;24762:20;24780:1;24762:20;:::i;:::-;24757:25;;24916:1;24848:66;24844:74;24841:1;24838:81;24835:107;;;24922:18;;:::i;:::-;24835:107;24966:1;24963;24959:9;24952:16;;24669:305;;;;:::o;24980:185::-;25020:1;25037:20;25055:1;25037:20;:::i;:::-;25032:25;;25071:20;25089:1;25071:20;:::i;:::-;25066:25;;25110:1;25100:35;;25115:18;;:::i;:::-;25100:35;25157:1;25154;25150:9;25145:14;;24980:185;;;;:::o;25171:348::-;25211:7;25234:20;25252:1;25234:20;:::i;:::-;25229:25;;25268:20;25286:1;25268:20;:::i;:::-;25263:25;;25456:1;25388:66;25384:74;25381:1;25378:81;25373:1;25366:9;25359:17;25355:105;25352:131;;;25463:18;;:::i;:::-;25352:131;25511:1;25508;25504:9;25493:20;;25171:348;;;;:::o;25525:191::-;25565:4;25585:20;25603:1;25585:20;:::i;:::-;25580:25;;25619:20;25637:1;25619:20;:::i;:::-;25614:25;;25658:1;25655;25652:8;25649:34;;;25663:18;;:::i;:::-;25649:34;25708:1;25705;25701:9;25693:17;;25525:191;;;;:::o;25722:96::-;25759:7;25788:24;25806:5;25788:24;:::i;:::-;25777:35;;25722:96;;;:::o;25824:90::-;25858:7;25901:5;25894:13;25887:21;25876:32;;25824:90;;;:::o;25920:126::-;25957:7;25997:42;25990:5;25986:54;25975:65;;25920:126;;;:::o;26052:77::-;26089:7;26118:5;26107:16;;26052:77;;;:::o;26135:86::-;26170:7;26210:4;26203:5;26199:16;26188:27;;26135:86;;;:::o;26227:121::-;26285:9;26318:24;26336:5;26318:24;:::i;:::-;26305:37;;26227:121;;;:::o;26354:307::-;26422:1;26432:113;26446:6;26443:1;26440:13;26432:113;;;26531:1;26526:3;26522:11;26516:18;26512:1;26507:3;26503:11;26496:39;26468:2;26465:1;26461:10;26456:15;;26432:113;;;26563:6;26560:1;26557:13;26554:101;;;26643:1;26634:6;26629:3;26625:16;26618:27;26554:101;26403:258;26354:307;;;:::o;26667:281::-;26750:27;26772:4;26750:27;:::i;:::-;26742:6;26738:40;26880:6;26868:10;26865:22;26844:18;26832:10;26829:34;26826:62;26823:88;;;26891:18;;:::i;:::-;26823:88;26931:10;26927:2;26920:22;26710:238;26667:281;;:::o;26954:233::-;26993:3;27016:24;27034:5;27016:24;:::i;:::-;27007:33;;27062:66;27055:5;27052:77;27049:103;;;27132:18;;:::i;:::-;27049:103;27179:1;27172:5;27168:13;27161:20;;26954:233;;;:::o;27193:180::-;27241:77;27238:1;27231:88;27338:4;27335:1;27328:15;27362:4;27359:1;27352:15;27379:180;27427:77;27424:1;27417:88;27524:4;27521:1;27514:15;27548:4;27545:1;27538:15;27565:180;27613:77;27610:1;27603:88;27710:4;27707:1;27700:15;27734:4;27731:1;27724:15;27751:180;27799:77;27796:1;27789:88;27896:4;27893:1;27886:15;27920:4;27917:1;27910:15;27937:117;28046:1;28043;28036:12;28060:117;28169:1;28166;28159:12;28183:117;28292:1;28289;28282:12;28306:117;28415:1;28412;28405:12;28429:102;28470:6;28521:2;28517:7;28512:2;28505:5;28501:14;28497:28;28487:38;;28429:102;;;:::o;28537:222::-;28677:34;28673:1;28665:6;28661:14;28654:58;28746:5;28741:2;28733:6;28729:15;28722:30;28537:222;:::o;28765:229::-;28905:34;28901:1;28893:6;28889:14;28882:58;28974:12;28969:2;28961:6;28957:15;28950:37;28765:229;:::o;29000:221::-;29140:34;29136:1;29128:6;29124:14;29117:58;29209:4;29204:2;29196:6;29192:15;29185:29;29000:221;:::o;29227:177::-;29367:29;29363:1;29355:6;29351:14;29344:53;29227:177;:::o;29410:179::-;29550:31;29546:1;29538:6;29534:14;29527:55;29410:179;:::o;29595:151::-;29735:3;29731:1;29723:6;29719:14;29712:27;29595:151;:::o;29752:220::-;29892:34;29888:1;29880:6;29876:14;29869:58;29961:3;29956:2;29948:6;29944:15;29937:28;29752:220;:::o;29978:182::-;30118:34;30114:1;30106:6;30102:14;30095:58;29978:182;:::o;30166:228::-;30306:34;30302:1;30294:6;30290:14;30283:58;30375:11;30370:2;30362:6;30358:15;30351:36;30166:228;:::o;30400:224::-;30540:34;30536:1;30528:6;30524:14;30517:58;30609:7;30604:2;30596:6;30592:15;30585:32;30400:224;:::o;30630:223::-;30770:34;30766:1;30758:6;30754:14;30747:58;30839:6;30834:2;30826:6;30822:15;30815:31;30630:223;:::o;30859:173::-;30999:25;30995:1;30987:6;30983:14;30976:49;30859:173;:::o;31038:167::-;31178:19;31174:1;31166:6;31162:14;31155:43;31038:167;:::o;31211:122::-;31284:24;31302:5;31284:24;:::i;:::-;31277:5;31274:35;31264:63;;31323:1;31320;31313:12;31264:63;31211:122;:::o;31339:116::-;31409:21;31424:5;31409:21;:::i;:::-;31402:5;31399:32;31389:60;;31445:1;31442;31435:12;31389:60;31339:116;:::o;31461:122::-;31534:24;31552:5;31534:24;:::i;:::-;31527:5;31524:35;31514:63;;31573:1;31570;31563:12;31514:63;31461:122;:::o

Swarm Source

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