ETH Price: $3,406.74 (+1.55%)

Token

Bowser Token (Bowser Token)
 

Overview

Max Total Supply

1,000,000,000,000 Bowser Token

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,494,635,231.942062606 Bowser Token

Value
$0.00
0x1773B6Dd559a767fadC0C797D168bc060e47bA5c
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:
BowserToken

Compiler Version
v0.8.4+commit.c7e474f2

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-01
*/

/*

1% transaction limit first five minutes

1 trillion supply

Anti snipe

blacklist for bots
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;


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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In, 
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

abstract contract IERC20Extented is IERC20 {
    function decimals() public view virtual returns (uint8);
    function name() public view virtual returns (string memory);
    function symbol() public view virtual returns (string memory);
}

contract BowserToken is Context, IERC20, IERC20Extented, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Bowser Token";
    string private constant _symbol = "Bowser Token";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _tFeeTotal;

    uint256 private _firstBlock;
    uint256 private _botBlocks;

    uint256 public _buybackFee = 100; // divided by 1000 (so, 10%)
    uint256 private _previousBuybackFee = _buybackFee;
    uint256 public _marketingFee = 25; // divided by 1000 (so, 2.5%)
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 public _devFee = 25; // divided by 1000 (so, 2.5%)
    uint256 private _previousDevFee = _devFee;
 
    uint256 public _marketingPercent = 33;
    uint256 public _buybackPercent = 67;
    
    mapping(address => bool) private bots;
    address payable private _marketingAddress = payable(0xD6be1842A692a60930C4D2aA3EdB537d93787f45);
    address payable private _buybackAddress = payable(0xBF0BEaA9291D5D216EFF43216Bc761E6fc162c50);

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 private _maxTxAmount;
  
    bool private tradingOpen = false;
    bool private inSwap = false;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event PercentsUpdated(uint256 _marketingPercent, uint256 _buybackPercent);
    event FeesUpdated(uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);

        _maxTxAmount = _tTotal; // start off transaction limit at 100% of total supply

        balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[_buybackAddress] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }
    
    function removeAllFee() private {
        if (_marketingFee == 0 && _buybackFee == 0 && _devFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousBuybackFee = _buybackFee;
        _previousDevFee = _devFee;
        
        _marketingFee = 0;
        _buybackFee = 0;
        _devFee = 0;
    }
    
    function restoreAllFee() private {
        _marketingFee = _previousMarketingFee;
        _buybackFee = _previousBuybackFee;
        _devFee = _previousDevFee;
    }

    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()) {
            require(tradingOpen);
            require(amount <= _maxTxAmount);
            
            if (block.timestamp <= _firstBlock + (5 minutes)) { // max transaction amount is 1% during first five minutes of trading
                require(amount <= _tTotal.div(100));
            }
            
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) { // buys
                if (block.timestamp <= _firstBlock.add(_botBlocks)) {
                    bots[to] = true;            
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { // sells, transfers (except for buys)
                require(!bots[to] && !bots[from]); // bots can't sell or transfer

                if (contractTokenBalance > 0) {
                    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);
        
        restoreAllFee();
    }
    
    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 {
        _marketingAddress.transfer(amount.mul(_marketingPercent).div(100));
        _buybackAddress.transfer(amount.mul(_buybackPercent).div(100));
    }
    
    function openTrading(uint256 botBlocks) external onlyOwner() {
        _firstBlock = block.timestamp;
        _botBlocks = botBlocks;
        tradingOpen = true;
    }

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

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

    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private {
        if (!takeFee) removeAllFee();
        (uint256 tTransferAmount, uint256 tBuyback, uint256 tMarketing, uint256 tDev) = _getValues(tAmount);
        balances[sender] = balances[sender].sub(tAmount);
        balances[recipient] = balances[recipient].add(tTransferAmount);
        _takeBuyback(tBuyback);
        _takeMarketing(tMarketing);
        _takeDev(tDev);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeBuyback(uint256 tBuyback) private {
        balances[address(this)] = balances[address(this)].add(tBuyback);
    }
    
    function _takeMarketing(uint256 tMarketing) private {
        balances[address(this)] = balances[address(this)].add(tMarketing);
    }
    
    function _takeDev(uint256 tDev) private {
        balances[address(this)] = balances[address(this)].add(tDev);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tBuyback = tAmount.mul(_buybackFee).div(1000);
        uint256 tMarketing = tAmount.mul(_marketingFee).div(1000);
        uint256 tDev = tAmount.mul(_devFee).div(1000);
        uint256 tTransferAmount = tAmount.sub(tBuyback).sub(tMarketing);
        tTransferAmount -= tDev;
        return (tTransferAmount, tBuyback, tMarketing, tDev);
    }
  
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
  
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    function removeBot(address account) public onlyOwner() {
        bots[account] = false;
    }
  
    function addBot(address account) public onlyOwner() {
        bots[account] = true;
    }
    
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
    
    function setPercents(uint256 marketingPercent, uint256 buybackPercent) external onlyOwner() {
        require(marketingPercent.add(buybackPercent) == 100, "Sum of percents must equal 100");
        _marketingPercent = marketingPercent;
        _buybackPercent = buybackPercent;
        emit PercentsUpdated(_marketingPercent, _buybackPercent);
    }
    
    function setTaxes(uint256 marketingFee, uint256 buybackFee, uint256 devFee) external onlyOwner() {
        require(marketingFee.add(buybackFee).add(devFee) <= 1000, "Sum of sell fees must be less than 1000");
        _marketingFee = marketingFee;
        _buybackFee = buybackFee;
        _devFee = devFee;
        
        _previousMarketingFee =  _marketingFee;
        _previousBuybackFee = _buybackFee;
        _previousDevFee = _devFee;
        
        emit FeesUpdated(_marketingFee, _buybackFee, _devFee);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"FeesUpdated","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":false,"internalType":"uint256","name":"_marketingPercent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_buybackPercent","type":"uint256"}],"name":"PercentsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buybackPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"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":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"botBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingPercent","type":"uint256"},{"internalType":"uint256","name":"buybackPercent","type":"uint256"}],"name":"setPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"buybackFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260646008556008546009556019600a55600a54600b556019600c55600c54600d556021600e556043600f5573d6be1842a692a60930c4d2aa3edb537d93787f45601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bf0beaa9291d5d216eff43216bc761e6fc162c50601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660006101000a81548160ff0219169083151502179055506000601660016101000a81548160ff0219169083151502179055503480156200011c57600080fd5b5060006200012f620007d860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200026530601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000620007e060201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ac57600080fd5b505afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e7919062000a0a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034a57600080fd5b505afa1580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000385919062000a0a565b6040518363ffffffff1660e01b8152600401620003a492919062000ad2565b602060405180830381600087803b158015620003bf57600080fd5b505af1158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000a0a565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620004db92919062000aff565b602060405180830381600087803b158015620004f657600080fd5b505af11580156200050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000531919062000a36565b50683635c9adc5dea00000601581905550683635c9adc5dea000006002600062000560620007d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620005b4620009b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000761620007d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620007c9919062000b70565b60405180910390a35062000cba565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000853576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084a9062000b4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bd9062000b2c565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009a6919062000b70565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620009ed8162000c86565b92915050565b60008151905062000a048162000ca0565b92915050565b60006020828403121562000a1d57600080fd5b600062000a2d84828501620009dc565b91505092915050565b60006020828403121562000a4957600080fd5b600062000a5984828501620009f3565b91505092915050565b62000a6d8162000b9e565b82525050565b600062000a8260228362000b8d565b915062000a8f8262000be8565b604082019050919050565b600062000aa960248362000b8d565b915062000ab68262000c37565b604082019050919050565b62000acc8162000bde565b82525050565b600060408201905062000ae9600083018562000a62565b62000af8602083018462000a62565b9392505050565b600060408201905062000b16600083018562000a62565b62000b25602083018462000ac1565b9392505050565b6000602082019050818103600083015262000b478162000a73565b9050919050565b6000602082019050818103600083015262000b698162000a9a565b9050919050565b600060208201905062000b87600083018462000ac1565b92915050565b600082825260208201905092915050565b600062000bab8262000bbe565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b62000c918162000b9e565b811462000c9d57600080fd5b50565b62000cab8162000bb2565b811462000cb757600080fd5b50565b6134058062000cca6000396000f3fe6080604052600436106101a05760003560e01c8063770d9907116100ec578063d16336491161008a578063e1d7eefd11610064578063e1d7eefd1461059d578063e9dae5ed146105c8578063ea2f0b37146105f1578063ffecf5161461061a576101a7565b8063d16336491461050e578063d543dbeb14610537578063dd62ed3e14610560576101a7565b8063a9059cbb116100c6578063a9059cbb14610466578063aa45026b146104a3578063b44a14b6146104ce578063c3c8cd80146104f7576101a7565b8063770d9907146103e55780638da5cb5b1461041057806395d89b411461043b576101a7565b8063313ce567116101595780635fecd926116101335780635fecd926146103515780636fc3eaec1461037a57806370a0823114610391578063715018a6146103ce576101a7565b8063313ce567146102d2578063437823ec146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd1461021457806319de79ab1461023f57806322976e0d1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610643565b6040516101ce9190612bc7565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612817565b610680565b60405161020b9190612bac565b60405180910390f35b34801561022057600080fd5b5061022961069e565b6040516102369190612d49565b60405180910390f35b34801561024b57600080fd5b506102546106af565b6040516102619190612d49565b60405180910390f35b34801561027657600080fd5b5061027f6106b5565b60405161028c9190612d49565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b791906127c8565b6106bb565b6040516102c99190612bac565b60405180910390f35b3480156102de57600080fd5b506102e7610794565b6040516102f49190612e1e565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061273a565b61079d565b005b34801561033257600080fd5b5061033b61088d565b6040516103489190612b91565b60405180910390f35b34801561035d57600080fd5b506103786004803603810190610373919061273a565b6108b3565b005b34801561038657600080fd5b5061038f6109a3565b005b34801561039d57600080fd5b506103b860048036038101906103b3919061273a565b610a15565b6040516103c59190612d49565b60405180910390f35b3480156103da57600080fd5b506103e3610a5e565b005b3480156103f157600080fd5b506103fa610bb1565b6040516104079190612d49565b60405180910390f35b34801561041c57600080fd5b50610425610bb7565b6040516104329190612b91565b60405180910390f35b34801561044757600080fd5b50610450610be0565b60405161045d9190612bc7565b60405180910390f35b34801561047257600080fd5b5061048d60048036038101906104889190612817565b610c1d565b60405161049a9190612bac565b60405180910390f35b3480156104af57600080fd5b506104b8610c3b565b6040516104c59190612d49565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f0919061287c565b610c41565b005b34801561050357600080fd5b5061050c610d7a565b005b34801561051a57600080fd5b5061053560048036038101906105309190612853565b610df4565b005b34801561054357600080fd5b5061055e60048036038101906105599190612853565b610eb5565b005b34801561056c57600080fd5b506105876004803603810190610582919061278c565b610ffe565b6040516105949190612d49565b60405180910390f35b3480156105a957600080fd5b506105b2611085565b6040516105bf9190612d49565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906128b8565b61108b565b005b3480156105fd57600080fd5b506106186004803603810190610613919061273a565b6111ff565b005b34801561062657600080fd5b50610641600480360381019061063c919061273a565b6112ef565b005b60606040518060400160405280600c81526020017f426f7773657220546f6b656e0000000000000000000000000000000000000000815250905090565b600061069461068d6113df565b84846113e7565b6001905092915050565b6000683635c9adc5dea00000905090565b60085481565b600a5481565b60006106c88484846115b2565b610789846106d46113df565b610784856040518060600160405280602881526020016133a860289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073a6113df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611baf9092919063ffffffff16565b6113e7565b600190509392505050565b60006009905090565b6107a56113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082990612ca9565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108bb6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612ca9565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e46113df565b73ffffffffffffffffffffffffffffffffffffffff1614610a0457600080fd5b6000479050610a1281611c13565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a666113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90612ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600c81526020017f426f7773657220546f6b656e0000000000000000000000000000000000000000815250905090565b6000610c31610c2a6113df565b84846115b2565b6001905092915050565b600c5481565b610c496113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612ca9565b60405180910390fd5b6064610ceb8284611d3690919063ffffffff16565b14610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290612ce9565b60405180910390fd5b81600e8190555080600f819055507f012f5df73148ec03a4ac44111fcf100a014ee232c9f1b328180ab5f3996821e5600e54600f54604051610d6e929190612dbe565b60405180910390a15050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dbb6113df565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb57600080fd5b6000610de630610a15565b9050610df181611d94565b50565b610dfc6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612ca9565b60405180910390fd5b42600681905550806007819055506001601660006101000a81548160ff02191690831515021790555050565b610ebd6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612ca9565b60405180910390fd5b60008111610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490612c49565b60405180910390fd5b610fbc6064610fae83683635c9adc5dea0000061208e90919063ffffffff16565b61210990919063ffffffff16565b6015819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601554604051610ff39190612d49565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b6110936113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790612ca9565b60405180910390fd5b6103e86111488261113a8587611d3690919063ffffffff16565b611d3690919063ffffffff16565b1115611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612c69565b60405180910390fd5b82600a819055508160088190555080600c81905550600a54600b81905550600854600981905550600c54600d819055507fcf8a1e1d5f09cf3c97dbb653cd9a4d7aace9292fbc1bb8211febf2d400febbdd600a54600854600c546040516111f293929190612de7565b60405180910390a1505050565b6112076113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90612ca9565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112f76113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b90612ca9565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90612d29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612c09565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a59190612d49565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990612d09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612be9565b60405180910390fd5b600081116116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612cc9565b60405180910390fd5b6116dd610bb7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561174b575061171b610bb7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ae457601660009054906101000a900460ff1661176957600080fd5b60155481111561177857600080fd5b61012c6006546117889190612e8e565b42116117b8576117ab6064683635c9adc5dea0000061210990919063ffffffff16565b8111156117b757600080fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118635750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118df5761187f600754600654611d3690919063ffffffff16565b42116118de576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b60006118ea30610a15565b9050601660019054906101000a900460ff161580156119575750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119ad5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a035750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ae257601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611aac5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ab557600080fd5b6000811115611ac857611ac781611d94565b5b60004790506000811115611ae057611adf47611c13565b5b505b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b8b5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b9557600090505b611ba184848484612153565b611ba961232c565b50505050565b6000838311158290611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee9190612bc7565b60405180910390fd5b5060008385611c069190612f6f565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c776064611c69600e548661208e90919063ffffffff16565b61210990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611ca2573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d076064611cf9600f548661208e90919063ffffffff16565b61210990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d32573d6000803e3d6000fd5b5050565b6000808284611d459190612e8e565b905083811015611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8190612c29565b60405180910390fd5b8091505092915050565b6001601660016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611df2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e205781602001602082028036833780820191505090505b5090503081600081518110611e5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0057600080fd5b505afa158015611f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f389190612763565b81600181518110611f72577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fd930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113e7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161203d959493929190612d64565b600060405180830381600087803b15801561205757600080fd5b505af115801561206b573d6000803e3d6000fd5b50505050506000601660016101000a81548160ff02191690831515021790555050565b6000808314156120a15760009050612103565b600082846120af9190612f15565b90508284826120be9190612ee4565b146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590612c89565b60405180910390fd5b809150505b92915050565b600061214b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612349565b905092915050565b80612161576121606123ac565b5b6000806000806121708661240e565b93509350935093506121ca86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061225f84600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3690919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122ab83612533565b6122b4826125cb565b6122bd81612663565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161231a9190612d49565b60405180910390a35050505050505050565b600b54600a81905550600954600881905550600d54600c81905550565b60008083118290612390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123879190612bc7565b60405180910390fd5b506000838561239f9190612ee4565b9050809150509392505050565b6000600a541480156123c057506000600854145b80156123ce57506000600c54145b156123d85761240c565b600a54600b81905550600854600981905550600c54600d819055506000600a8190555060006008819055506000600c819055505b565b600080600080600061243f6103e86124316008548961208e90919063ffffffff16565b61210990919063ffffffff16565b9050600061246c6103e861245e600a548a61208e90919063ffffffff16565b61210990919063ffffffff16565b905060006124996103e861248b600c548b61208e90919063ffffffff16565b61210990919063ffffffff16565b905060006124c2836124b4868c6124e990919063ffffffff16565b6124e990919063ffffffff16565b905081816124d09190612f6f565b9050808484849750975097509750505050509193509193565b600061252b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611baf565b905092915050565b61258581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b61261d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6126b581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008135905061270a81613379565b92915050565b60008151905061271f81613379565b92915050565b60008135905061273481613390565b92915050565b60006020828403121561274c57600080fd5b600061275a848285016126fb565b91505092915050565b60006020828403121561277557600080fd5b600061278384828501612710565b91505092915050565b6000806040838503121561279f57600080fd5b60006127ad858286016126fb565b92505060206127be858286016126fb565b9150509250929050565b6000806000606084860312156127dd57600080fd5b60006127eb868287016126fb565b93505060206127fc868287016126fb565b925050604061280d86828701612725565b9150509250925092565b6000806040838503121561282a57600080fd5b6000612838858286016126fb565b925050602061284985828601612725565b9150509250929050565b60006020828403121561286557600080fd5b600061287384828501612725565b91505092915050565b6000806040838503121561288f57600080fd5b600061289d85828601612725565b92505060206128ae85828601612725565b9150509250929050565b6000806000606084860312156128cd57600080fd5b60006128db86828701612725565b93505060206128ec86828701612725565b92505060406128fd86828701612725565b9150509250925092565b6000612913838361291f565b60208301905092915050565b61292881612fa3565b82525050565b61293781612fa3565b82525050565b600061294882612e49565b6129528185612e6c565b935061295d83612e39565b8060005b8381101561298e5781516129758882612907565b975061298083612e5f565b925050600181019050612961565b5085935050505092915050565b6129a481612fb5565b82525050565b6129b381612ff8565b82525050565b60006129c482612e54565b6129ce8185612e7d565b93506129de81856020860161300a565b6129e78161309b565b840191505092915050565b60006129ff602383612e7d565b9150612a0a826130ac565b604082019050919050565b6000612a22602283612e7d565b9150612a2d826130fb565b604082019050919050565b6000612a45601b83612e7d565b9150612a508261314a565b602082019050919050565b6000612a68601d83612e7d565b9150612a7382613173565b602082019050919050565b6000612a8b602783612e7d565b9150612a968261319c565b604082019050919050565b6000612aae602183612e7d565b9150612ab9826131eb565b604082019050919050565b6000612ad1602083612e7d565b9150612adc8261323a565b602082019050919050565b6000612af4602983612e7d565b9150612aff82613263565b604082019050919050565b6000612b17601e83612e7d565b9150612b22826132b2565b602082019050919050565b6000612b3a602583612e7d565b9150612b45826132db565b604082019050919050565b6000612b5d602483612e7d565b9150612b688261332a565b604082019050919050565b612b7c81612fe1565b82525050565b612b8b81612feb565b82525050565b6000602082019050612ba6600083018461292e565b92915050565b6000602082019050612bc1600083018461299b565b92915050565b60006020820190508181036000830152612be181846129b9565b905092915050565b60006020820190508181036000830152612c02816129f2565b9050919050565b60006020820190508181036000830152612c2281612a15565b9050919050565b60006020820190508181036000830152612c4281612a38565b9050919050565b60006020820190508181036000830152612c6281612a5b565b9050919050565b60006020820190508181036000830152612c8281612a7e565b9050919050565b60006020820190508181036000830152612ca281612aa1565b9050919050565b60006020820190508181036000830152612cc281612ac4565b9050919050565b60006020820190508181036000830152612ce281612ae7565b9050919050565b60006020820190508181036000830152612d0281612b0a565b9050919050565b60006020820190508181036000830152612d2281612b2d565b9050919050565b60006020820190508181036000830152612d4281612b50565b9050919050565b6000602082019050612d5e6000830184612b73565b92915050565b600060a082019050612d796000830188612b73565b612d8660208301876129aa565b8181036040830152612d98818661293d565b9050612da7606083018561292e565b612db46080830184612b73565b9695505050505050565b6000604082019050612dd36000830185612b73565b612de06020830184612b73565b9392505050565b6000606082019050612dfc6000830186612b73565b612e096020830185612b73565b612e166040830184612b73565b949350505050565b6000602082019050612e336000830184612b82565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e9982612fe1565b9150612ea483612fe1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ed957612ed861303d565b5b828201905092915050565b6000612eef82612fe1565b9150612efa83612fe1565b925082612f0a57612f0961306c565b5b828204905092915050565b6000612f2082612fe1565b9150612f2b83612fe1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f6457612f6361303d565b5b828202905092915050565b6000612f7a82612fe1565b9150612f8583612fe1565b925082821015612f9857612f9761303d565b5b828203905092915050565b6000612fae82612fc1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061300382612fe1565b9050919050565b60005b8381101561302857808201518184015260208101905061300d565b83811115613037576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f53756d206f662073656c6c2066656573206d757374206265206c65737320746860008201527f616e203130303000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f53756d206f662070657263656e7473206d75737420657175616c203130300000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61338281612fa3565b811461338d57600080fd5b50565b61339981612fe1565b81146133a457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204130dc03ed495789ebfe5ad571f62b58ec151ec5de54fca6996d125bf2b16ce164736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063770d9907116100ec578063d16336491161008a578063e1d7eefd11610064578063e1d7eefd1461059d578063e9dae5ed146105c8578063ea2f0b37146105f1578063ffecf5161461061a576101a7565b8063d16336491461050e578063d543dbeb14610537578063dd62ed3e14610560576101a7565b8063a9059cbb116100c6578063a9059cbb14610466578063aa45026b146104a3578063b44a14b6146104ce578063c3c8cd80146104f7576101a7565b8063770d9907146103e55780638da5cb5b1461041057806395d89b411461043b576101a7565b8063313ce567116101595780635fecd926116101335780635fecd926146103515780636fc3eaec1461037a57806370a0823114610391578063715018a6146103ce576101a7565b8063313ce567146102d2578063437823ec146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd1461021457806319de79ab1461023f57806322976e0d1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610643565b6040516101ce9190612bc7565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612817565b610680565b60405161020b9190612bac565b60405180910390f35b34801561022057600080fd5b5061022961069e565b6040516102369190612d49565b60405180910390f35b34801561024b57600080fd5b506102546106af565b6040516102619190612d49565b60405180910390f35b34801561027657600080fd5b5061027f6106b5565b60405161028c9190612d49565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b791906127c8565b6106bb565b6040516102c99190612bac565b60405180910390f35b3480156102de57600080fd5b506102e7610794565b6040516102f49190612e1e565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061273a565b61079d565b005b34801561033257600080fd5b5061033b61088d565b6040516103489190612b91565b60405180910390f35b34801561035d57600080fd5b506103786004803603810190610373919061273a565b6108b3565b005b34801561038657600080fd5b5061038f6109a3565b005b34801561039d57600080fd5b506103b860048036038101906103b3919061273a565b610a15565b6040516103c59190612d49565b60405180910390f35b3480156103da57600080fd5b506103e3610a5e565b005b3480156103f157600080fd5b506103fa610bb1565b6040516104079190612d49565b60405180910390f35b34801561041c57600080fd5b50610425610bb7565b6040516104329190612b91565b60405180910390f35b34801561044757600080fd5b50610450610be0565b60405161045d9190612bc7565b60405180910390f35b34801561047257600080fd5b5061048d60048036038101906104889190612817565b610c1d565b60405161049a9190612bac565b60405180910390f35b3480156104af57600080fd5b506104b8610c3b565b6040516104c59190612d49565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f0919061287c565b610c41565b005b34801561050357600080fd5b5061050c610d7a565b005b34801561051a57600080fd5b5061053560048036038101906105309190612853565b610df4565b005b34801561054357600080fd5b5061055e60048036038101906105599190612853565b610eb5565b005b34801561056c57600080fd5b506105876004803603810190610582919061278c565b610ffe565b6040516105949190612d49565b60405180910390f35b3480156105a957600080fd5b506105b2611085565b6040516105bf9190612d49565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906128b8565b61108b565b005b3480156105fd57600080fd5b506106186004803603810190610613919061273a565b6111ff565b005b34801561062657600080fd5b50610641600480360381019061063c919061273a565b6112ef565b005b60606040518060400160405280600c81526020017f426f7773657220546f6b656e0000000000000000000000000000000000000000815250905090565b600061069461068d6113df565b84846113e7565b6001905092915050565b6000683635c9adc5dea00000905090565b60085481565b600a5481565b60006106c88484846115b2565b610789846106d46113df565b610784856040518060600160405280602881526020016133a860289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073a6113df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611baf9092919063ffffffff16565b6113e7565b600190509392505050565b60006009905090565b6107a56113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082990612ca9565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108bb6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612ca9565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e46113df565b73ffffffffffffffffffffffffffffffffffffffff1614610a0457600080fd5b6000479050610a1281611c13565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a666113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90612ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600c81526020017f426f7773657220546f6b656e0000000000000000000000000000000000000000815250905090565b6000610c31610c2a6113df565b84846115b2565b6001905092915050565b600c5481565b610c496113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612ca9565b60405180910390fd5b6064610ceb8284611d3690919063ffffffff16565b14610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290612ce9565b60405180910390fd5b81600e8190555080600f819055507f012f5df73148ec03a4ac44111fcf100a014ee232c9f1b328180ab5f3996821e5600e54600f54604051610d6e929190612dbe565b60405180910390a15050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dbb6113df565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb57600080fd5b6000610de630610a15565b9050610df181611d94565b50565b610dfc6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612ca9565b60405180910390fd5b42600681905550806007819055506001601660006101000a81548160ff02191690831515021790555050565b610ebd6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612ca9565b60405180910390fd5b60008111610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490612c49565b60405180910390fd5b610fbc6064610fae83683635c9adc5dea0000061208e90919063ffffffff16565b61210990919063ffffffff16565b6015819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601554604051610ff39190612d49565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b6110936113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790612ca9565b60405180910390fd5b6103e86111488261113a8587611d3690919063ffffffff16565b611d3690919063ffffffff16565b1115611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612c69565b60405180910390fd5b82600a819055508160088190555080600c81905550600a54600b81905550600854600981905550600c54600d819055507fcf8a1e1d5f09cf3c97dbb653cd9a4d7aace9292fbc1bb8211febf2d400febbdd600a54600854600c546040516111f293929190612de7565b60405180910390a1505050565b6112076113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90612ca9565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112f76113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b90612ca9565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90612d29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612c09565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a59190612d49565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990612d09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612be9565b60405180910390fd5b600081116116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612cc9565b60405180910390fd5b6116dd610bb7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561174b575061171b610bb7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ae457601660009054906101000a900460ff1661176957600080fd5b60155481111561177857600080fd5b61012c6006546117889190612e8e565b42116117b8576117ab6064683635c9adc5dea0000061210990919063ffffffff16565b8111156117b757600080fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118635750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118df5761187f600754600654611d3690919063ffffffff16565b42116118de576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b60006118ea30610a15565b9050601660019054906101000a900460ff161580156119575750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119ad5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a035750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ae257601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611aac5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ab557600080fd5b6000811115611ac857611ac781611d94565b5b60004790506000811115611ae057611adf47611c13565b5b505b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b8b5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b9557600090505b611ba184848484612153565b611ba961232c565b50505050565b6000838311158290611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee9190612bc7565b60405180910390fd5b5060008385611c069190612f6f565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c776064611c69600e548661208e90919063ffffffff16565b61210990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611ca2573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d076064611cf9600f548661208e90919063ffffffff16565b61210990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d32573d6000803e3d6000fd5b5050565b6000808284611d459190612e8e565b905083811015611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8190612c29565b60405180910390fd5b8091505092915050565b6001601660016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611df2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e205781602001602082028036833780820191505090505b5090503081600081518110611e5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0057600080fd5b505afa158015611f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f389190612763565b81600181518110611f72577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fd930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113e7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161203d959493929190612d64565b600060405180830381600087803b15801561205757600080fd5b505af115801561206b573d6000803e3d6000fd5b50505050506000601660016101000a81548160ff02191690831515021790555050565b6000808314156120a15760009050612103565b600082846120af9190612f15565b90508284826120be9190612ee4565b146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590612c89565b60405180910390fd5b809150505b92915050565b600061214b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612349565b905092915050565b80612161576121606123ac565b5b6000806000806121708661240e565b93509350935093506121ca86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061225f84600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3690919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122ab83612533565b6122b4826125cb565b6122bd81612663565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161231a9190612d49565b60405180910390a35050505050505050565b600b54600a81905550600954600881905550600d54600c81905550565b60008083118290612390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123879190612bc7565b60405180910390fd5b506000838561239f9190612ee4565b9050809150509392505050565b6000600a541480156123c057506000600854145b80156123ce57506000600c54145b156123d85761240c565b600a54600b81905550600854600981905550600c54600d819055506000600a8190555060006008819055506000600c819055505b565b600080600080600061243f6103e86124316008548961208e90919063ffffffff16565b61210990919063ffffffff16565b9050600061246c6103e861245e600a548a61208e90919063ffffffff16565b61210990919063ffffffff16565b905060006124996103e861248b600c548b61208e90919063ffffffff16565b61210990919063ffffffff16565b905060006124c2836124b4868c6124e990919063ffffffff16565b6124e990919063ffffffff16565b905081816124d09190612f6f565b9050808484849750975097509750505050509193509193565b600061252b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611baf565b905092915050565b61258581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b61261d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6126b581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008135905061270a81613379565b92915050565b60008151905061271f81613379565b92915050565b60008135905061273481613390565b92915050565b60006020828403121561274c57600080fd5b600061275a848285016126fb565b91505092915050565b60006020828403121561277557600080fd5b600061278384828501612710565b91505092915050565b6000806040838503121561279f57600080fd5b60006127ad858286016126fb565b92505060206127be858286016126fb565b9150509250929050565b6000806000606084860312156127dd57600080fd5b60006127eb868287016126fb565b93505060206127fc868287016126fb565b925050604061280d86828701612725565b9150509250925092565b6000806040838503121561282a57600080fd5b6000612838858286016126fb565b925050602061284985828601612725565b9150509250929050565b60006020828403121561286557600080fd5b600061287384828501612725565b91505092915050565b6000806040838503121561288f57600080fd5b600061289d85828601612725565b92505060206128ae85828601612725565b9150509250929050565b6000806000606084860312156128cd57600080fd5b60006128db86828701612725565b93505060206128ec86828701612725565b92505060406128fd86828701612725565b9150509250925092565b6000612913838361291f565b60208301905092915050565b61292881612fa3565b82525050565b61293781612fa3565b82525050565b600061294882612e49565b6129528185612e6c565b935061295d83612e39565b8060005b8381101561298e5781516129758882612907565b975061298083612e5f565b925050600181019050612961565b5085935050505092915050565b6129a481612fb5565b82525050565b6129b381612ff8565b82525050565b60006129c482612e54565b6129ce8185612e7d565b93506129de81856020860161300a565b6129e78161309b565b840191505092915050565b60006129ff602383612e7d565b9150612a0a826130ac565b604082019050919050565b6000612a22602283612e7d565b9150612a2d826130fb565b604082019050919050565b6000612a45601b83612e7d565b9150612a508261314a565b602082019050919050565b6000612a68601d83612e7d565b9150612a7382613173565b602082019050919050565b6000612a8b602783612e7d565b9150612a968261319c565b604082019050919050565b6000612aae602183612e7d565b9150612ab9826131eb565b604082019050919050565b6000612ad1602083612e7d565b9150612adc8261323a565b602082019050919050565b6000612af4602983612e7d565b9150612aff82613263565b604082019050919050565b6000612b17601e83612e7d565b9150612b22826132b2565b602082019050919050565b6000612b3a602583612e7d565b9150612b45826132db565b604082019050919050565b6000612b5d602483612e7d565b9150612b688261332a565b604082019050919050565b612b7c81612fe1565b82525050565b612b8b81612feb565b82525050565b6000602082019050612ba6600083018461292e565b92915050565b6000602082019050612bc1600083018461299b565b92915050565b60006020820190508181036000830152612be181846129b9565b905092915050565b60006020820190508181036000830152612c02816129f2565b9050919050565b60006020820190508181036000830152612c2281612a15565b9050919050565b60006020820190508181036000830152612c4281612a38565b9050919050565b60006020820190508181036000830152612c6281612a5b565b9050919050565b60006020820190508181036000830152612c8281612a7e565b9050919050565b60006020820190508181036000830152612ca281612aa1565b9050919050565b60006020820190508181036000830152612cc281612ac4565b9050919050565b60006020820190508181036000830152612ce281612ae7565b9050919050565b60006020820190508181036000830152612d0281612b0a565b9050919050565b60006020820190508181036000830152612d2281612b2d565b9050919050565b60006020820190508181036000830152612d4281612b50565b9050919050565b6000602082019050612d5e6000830184612b73565b92915050565b600060a082019050612d796000830188612b73565b612d8660208301876129aa565b8181036040830152612d98818661293d565b9050612da7606083018561292e565b612db46080830184612b73565b9695505050505050565b6000604082019050612dd36000830185612b73565b612de06020830184612b73565b9392505050565b6000606082019050612dfc6000830186612b73565b612e096020830185612b73565b612e166040830184612b73565b949350505050565b6000602082019050612e336000830184612b82565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e9982612fe1565b9150612ea483612fe1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ed957612ed861303d565b5b828201905092915050565b6000612eef82612fe1565b9150612efa83612fe1565b925082612f0a57612f0961306c565b5b828204905092915050565b6000612f2082612fe1565b9150612f2b83612fe1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f6457612f6361303d565b5b828202905092915050565b6000612f7a82612fe1565b9150612f8583612fe1565b925082821015612f9857612f9761303d565b5b828203905092915050565b6000612fae82612fc1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061300382612fe1565b9050919050565b60005b8381101561302857808201518184015260208101905061300d565b83811115613037576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f53756d206f662073656c6c2066656573206d757374206265206c65737320746860008201527f616e203130303000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f53756d206f662070657263656e7473206d75737420657175616c203130300000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61338281612fa3565b811461338d57600080fd5b50565b61339981612fe1565b81146133a457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204130dc03ed495789ebfe5ad571f62b58ec151ec5de54fca6996d125bf2b16ce164736f6c63430008040033

Deployed Bytecode Sourcemap

7120:11052:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9813:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10672:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10117:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7726:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7850:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10841:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10017:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16559:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8484:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16796:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14880:196;;;;;;;;;;;;;:::i;:::-;;10220:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2698:148;;;;;;;;;;;;;:::i;:::-;;8095:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2484:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9913:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10346:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7980:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17271:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14675:197;;;;;;;;;;;;;:::i;:::-;;14496:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17004:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10521:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8139:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17637:530;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16680:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16901:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9813:92;9859:13;9892:5;;;;;;;;;;;;;;;;;9885:12;;9813:92;:::o;10672:161::-;10747:4;10764:39;10773:12;:10;:12::i;:::-;10787:7;10796:6;10764:8;:39::i;:::-;10821:4;10814:11;;10672:161;;;;:::o;10117:95::-;10170:7;7594:21;10190:14;;10117:95;:::o;7726:32::-;;;;:::o;7850:33::-;;;;:::o;10841:310::-;10939:4;10956:36;10966:6;10974:9;10985:6;10956:9;:36::i;:::-;11003:118;11012:6;11019:12;:10;:12::i;:::-;11032:88;11070:6;11032:88;;;;;;;;;;;;;;;;;:11;:19;11044:6;11032:19;;;;;;;;;;;;;;;:33;11052:12;:10;:12::i;:::-;11032:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;11003:8;:118::i;:::-;11139:4;11132:11;;10841:310;;;;;:::o;10017:92::-;10067:5;7368:1;10085:16;;10017:92;:::o;16559:111::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16658:4:::1;16628:18;:27;16647:7;16628:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;16559:111:::0;:::o;8484:28::-;;;;;;;;;;;;;:::o;16796:95::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16878:5:::1;16862:4;:13;16867:7;16862:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16796:95:::0;:::o;14880:196::-;14946:17;;;;;;;;;;;14930:33;;:12;:10;:12::i;:::-;:33;;;14922:42;;;;;;14975:26;15004:21;14975:50;;15036:32;15049:18;15036:12;:32::i;:::-;14880:196;:::o;10220:118::-;10286:7;10313:8;:17;10322:7;10313:17;;;;;;;;;;;;;;;;10306:24;;10220:118;;;:::o;2698:148::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2805:1:::1;2768:40;;2789:6;::::0;::::1;;;;;;;;2768:40;;;;;;;;;;;;2836:1;2819:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2698:148::o:0;8095:37::-;;;;:::o;2484:79::-;2522:7;2549:6;;;;;;;;;;;2542:13;;2484:79;:::o;9913:96::-;9961:13;9994:7;;;;;;;;;;;;;;;;;9987:14;;9913:96;:::o;10346:167::-;10424:4;10441:42;10451:12;:10;:12::i;:::-;10465:9;10476:6;10441:9;:42::i;:::-;10501:4;10494:11;;10346:167;;;;:::o;7980:27::-;;;;:::o;17271:354::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17422:3:::1;17382:36;17403:14;17382:16;:20;;:36;;;;:::i;:::-;:43;17374:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;17491:16;17471:17;:36;;;;17536:14;17518:15;:32;;;;17566:51;17582:17;;17601:15;;17566:51;;;;;;;:::i;:::-;;;;;;;;17271:354:::0;;:::o;14675:197::-;14741:17;;;;;;;;;;;14725:33;;:12;:10;:12::i;:::-;:33;;;14717:42;;;;;;14770:23;14796:24;14814:4;14796:9;:24::i;:::-;14770:50;;14831:33;14848:15;14831:16;:33::i;:::-;14675:197;:::o;14496:171::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14582:15:::1;14568:11;:29;;;;14621:9;14608:10;:22;;;;14655:4;14641:11;;:18;;;;;;;;;;;;;;;;;;14496:171:::0;:::o;17004:255::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17106:1:::1;17091:12;:16;17083:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17167:36;17197:5;17167:25;17179:12;7594:21;17167:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;17152:12;:51;;;;17219:32;17238:12;;17219:32;;;;;;:::i;:::-;;;;;;;;17004:255:::0;:::o;10521:143::-;10602:7;10629:11;:18;10641:5;10629:18;;;;;;;;;;;;;;;:27;10648:7;10629:27;;;;;;;;;;;;;;;;10622:34;;10521:143;;;;:::o;8139:35::-;;;;:::o;17637:530::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17797:4:::1;17753:40;17786:6;17753:28;17770:10;17753:12;:16;;:28;;;;:::i;:::-;:32;;:40;;;;:::i;:::-;:48;;17745:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;17872:12;17856:13;:28;;;;17909:10;17895:11;:24;;;;17940:6;17930:7;:16;;;;17992:13;;17967:21;:38;;;;18038:11;;18016:19;:33;;;;18078:7;;18060:15;:25;;;;18111:48;18123:13;;18138:11;;18151:7;;18111:48;;;;;;;;:::i;:::-;;;;;;;;17637:530:::0;;;:::o;16680:110::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16777:5:::1;16747:18;:27;16766:7;16747:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16680:110:::0;:::o;16901:91::-;2621:12;:10;:12::i;:::-;2611:22;;:6;;;;;;;;;;:22;;;2603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16980:4:::1;16964;:13;16969:7;16964:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16901:91:::0;:::o;205:98::-;258:7;285:10;278:17;;205:98;:::o;11683:335::-;11793:1;11776:19;;:5;:19;;;;11768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11874:1;11855:21;;:7;:21;;;;11847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11956:6;11926:11;:18;11938:5;11926:18;;;;;;;;;;;;;;;:27;11945:7;11926:27;;;;;;;;;;;;;;;:36;;;;11994:7;11978:32;;11987:5;11978:32;;;12003:6;11978:32;;;;;;:::i;:::-;;;;;;;;11683:335;;;:::o;12029:1824::-;12133:1;12117:18;;:4;:18;;;;12109:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12210:1;12196:16;;:2;:16;;;;12188:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12280:1;12271:6;:10;12263:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12352:7;:5;:7::i;:::-;12344:15;;:4;:15;;;;:32;;;;;12369:7;:5;:7::i;:::-;12363:13;;:2;:13;;;;12344:32;12340:1258;;;12401:11;;;;;;;;;;;12393:20;;;;;;12446:12;;12436:6;:22;;12428:31;;;;;;12526:9;12511:11;;:25;;;;:::i;:::-;12492:15;:44;12488:189;;12644:16;12656:3;7594:21;12644:11;;:16;;;;:::i;:::-;12634:6;:26;;12626:35;;;;;;12488:189;12717:13;;;;;;;;;;;12709:21;;:4;:21;;;:55;;;;;12748:15;;;;;;;;;;;12734:30;;:2;:30;;;;12709:55;12705:225;;;12816:27;12832:10;;12816:11;;:15;;:27;;;;:::i;:::-;12797:15;:46;12793:122;;12879:4;12868;:8;12873:2;12868:8;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;12793:122;12705:225;12944:28;12975:24;12993:4;12975:9;:24::i;:::-;12944:55;;13019:6;;;;;;;;;;;13018:7;:32;;;;;13037:13;;;;;;;;;;;13029:21;;:4;:21;;;;13018:32;:61;;;;;13055:18;:24;13074:4;13055:24;;;;;;;;;;;;;;;;;;;;;;;;;13054:25;13018:61;:88;;;;;13084:18;:22;13103:2;13084:22;;;;;;;;;;;;;;;;;;;;;;;;;13083:23;13018:88;13014:573;;;13174:4;:8;13179:2;13174:8;;;;;;;;;;;;;;;;;;;;;;;;;13173:9;:24;;;;;13187:4;:10;13192:4;13187:10;;;;;;;;;;;;;;;;;;;;;;;;;13186:11;13173:24;13165:33;;;;;;13277:1;13254:20;:24;13250:111;;;13303:38;13320:20;13303:16;:38::i;:::-;13250:111;13397:26;13426:21;13397:50;;13491:1;13470:18;:22;13466:106;;;13517:35;13530:21;13517:12;:35::i;:::-;13466:106;13014:573;;12340:1258;;13610:12;13625:4;13610:19;;13654:18;:24;13673:4;13654:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13682:18;:22;13701:2;13682:22;;;;;;;;;;;;;;;;;;;;;;;;;13654:50;13650:98;;;13731:5;13721:15;;13650:98;13768:41;13783:4;13789:2;13793:6;13801:7;13768:14;:41::i;:::-;13830:15;:13;:15::i;:::-;12029:1824;;;;:::o;1342:190::-;1428:7;1461:1;1456;:6;;1464:12;1448:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1488:9;1504:1;1500;:5;;;;:::i;:::-;1488:17;;1523:1;1516:8;;;1342:190;;;;;:::o;14280:204::-;14337:17;;;;;;;;;;;:26;;:66;14364:38;14398:3;14364:29;14375:17;;14364:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;14337:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14414:15;;;;;;;;;;;:24;;:62;14439:36;14471:3;14439:27;14450:15;;14439:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;14414:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14280:204;:::o;1011:179::-;1069:7;1089:9;1105:1;1101;:5;;;;:::i;:::-;1089:17;;1130:1;1125;:6;;1117:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1181:1;1174:8;;;1011:179;;;;:::o;13865:407::-;8898:4;8889:6;;:13;;;;;;;;;;;;;;;;;;13943:21:::1;13981:1;13967:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13943:40;;14012:4;13994;13999:1;13994:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;14038:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14028:4;14033:1;14028:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;14071:62;14088:4;14103:15;;;;;;;;;;;14121:11;14071:8;:62::i;:::-;14144:15;;;;;;;;;;;:66;;;14211:11;14224:1;14227:4;14241;14248:15;14144:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8913:1;8934:5:::0;8925:6;;:14;;;;;;;;;;;;;;;;;;13865:407;:::o;1540:246::-;1598:7;1627:1;1622;:6;1618:47;;;1652:1;1645:8;;;;1618:47;1675:9;1691:1;1687;:5;;;;:::i;:::-;1675:17;;1720:1;1715;1711;:5;;;;:::i;:::-;:10;1703:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1777:1;1770:8;;;1540:246;;;;;:::o;1794:132::-;1852:7;1879:39;1883:1;1886;1879:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1872:46;;1794:132;;;;:::o;15084:542::-;15198:7;15193:28;;15207:14;:12;:14::i;:::-;15193:28;15233:23;15258:16;15276:18;15296:12;15312:19;15323:7;15312:10;:19::i;:::-;15232:99;;;;;;;;15361:29;15382:7;15361:8;:16;15370:6;15361:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;15342:8;:16;15351:6;15342:16;;;;;;;;;;;;;;;:48;;;;15423:40;15447:15;15423:8;:19;15432:9;15423:19;;;;;;;;;;;;;;;;:23;;:40;;;;:::i;:::-;15401:8;:19;15410:9;15401:19;;;;;;;;;;;;;;;:62;;;;15474:22;15487:8;15474:12;:22::i;:::-;15507:26;15522:10;15507:14;:26::i;:::-;15544:14;15553:4;15544:8;:14::i;:::-;15591:9;15574:44;;15583:6;15574:44;;;15602:15;15574:44;;;;;;:::i;:::-;;;;;;;;15084:542;;;;;;;;:::o;11506:169::-;11566:21;;11550:13;:37;;;;11612:19;;11598:11;:33;;;;11652:15;;11642:7;:25;;;;11506:169::o;1934:189::-;2020:7;2052:1;2048;:5;2055:12;2040:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2079:9;2095:1;2091;:5;;;;:::i;:::-;2079:17;;2114:1;2107:8;;;1934:189;;;;;:::o;11163:331::-;11227:1;11210:13;;:18;:38;;;;;11247:1;11232:11;;:16;11210:38;:54;;;;;11263:1;11252:7;;:12;11210:54;11206:67;;;11266:7;;11206:67;11307:13;;11283:21;:37;;;;11353:11;;11331:19;:33;;;;11393:7;;11375:15;:25;;;;11437:1;11421:13;:17;;;;11463:1;11449:11;:15;;;;11485:1;11475:7;:11;;;;11163:331;:::o;16087:462::-;16146:7;16155;16164;16173;16193:16;16212:34;16241:4;16212:24;16224:11;;16212:7;:11;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;16193:53;;16257:18;16278:36;16309:4;16278:26;16290:13;;16278:7;:11;;:26;;;;:::i;:::-;:30;;:36;;;;:::i;:::-;16257:57;;16325:12;16340:30;16365:4;16340:20;16352:7;;16340;:11;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;16325:45;;16381:23;16407:37;16433:10;16407:21;16419:8;16407:7;:11;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;16381:63;;16474:4;16455:23;;;;;:::i;:::-;;;16497:15;16514:8;16524:10;16536:4;16489:52;;;;;;;;;;;;16087:462;;;;;:::o;1198:136::-;1256:7;1283:43;1287:1;1290;1283:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1276:50;;1198:136;;;;:::o;15634:130::-;15719:37;15747:8;15719;:23;15736:4;15719:23;;;;;;;;;;;;;;;;:27;;:37;;;;:::i;:::-;15693:8;:23;15710:4;15693:23;;;;;;;;;;;;;;;:63;;;;15634:130;:::o;15776:136::-;15865:39;15893:10;15865:8;:23;15882:4;15865:23;;;;;;;;;;;;;;;;:27;;:39;;;;:::i;:::-;15839:8;:23;15856:4;15839:23;;;;;;;;;;;;;;;:65;;;;15776:136;:::o;15924:118::-;16001:33;16029:4;16001:8;:23;16018:4;16001:23;;;;;;;;;;;;;;;;:27;;:33;;;;:::i;:::-;15975:8;:23;15992:4;15975:23;;;;;;;;;;;;;;;:59;;;;15924:118;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:139::-;347:5;385:6;372:20;363:29;;401:33;428:5;401:33;:::i;:::-;353:87;;;;:::o;446:262::-;505:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;613:1;638:53;683:7;674:6;663:9;659:22;638:53;:::i;:::-;628:63;;584:117;512:196;;;;:::o;714:284::-;784:6;833:2;821:9;812:7;808:23;804:32;801:2;;;849:1;846;839:12;801:2;892:1;917:64;973:7;964:6;953:9;949:22;917:64;:::i;:::-;907:74;;863:128;791:207;;;;:::o;1004:407::-;1072:6;1080;1129:2;1117:9;1108:7;1104:23;1100:32;1097:2;;;1145:1;1142;1135:12;1097:2;1188:1;1213:53;1258:7;1249:6;1238:9;1234:22;1213:53;:::i;:::-;1203:63;;1159:117;1315:2;1341:53;1386:7;1377:6;1366:9;1362:22;1341:53;:::i;:::-;1331:63;;1286:118;1087:324;;;;;:::o;1417:552::-;1494:6;1502;1510;1559:2;1547:9;1538:7;1534:23;1530:32;1527:2;;;1575:1;1572;1565:12;1527:2;1618:1;1643:53;1688:7;1679:6;1668:9;1664:22;1643:53;:::i;:::-;1633:63;;1589:117;1745:2;1771:53;1816:7;1807:6;1796:9;1792:22;1771:53;:::i;:::-;1761:63;;1716:118;1873:2;1899:53;1944:7;1935:6;1924:9;1920:22;1899:53;:::i;:::-;1889:63;;1844:118;1517:452;;;;;:::o;1975:407::-;2043:6;2051;2100:2;2088:9;2079:7;2075:23;2071:32;2068:2;;;2116:1;2113;2106:12;2068:2;2159:1;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;:::i;:::-;2174:63;;2130:117;2286:2;2312:53;2357:7;2348:6;2337:9;2333:22;2312:53;:::i;:::-;2302:63;;2257:118;2058:324;;;;;:::o;2388:262::-;2447:6;2496:2;2484:9;2475:7;2471:23;2467:32;2464:2;;;2512:1;2509;2502:12;2464:2;2555:1;2580:53;2625:7;2616:6;2605:9;2601:22;2580:53;:::i;:::-;2570:63;;2526:117;2454:196;;;;:::o;2656:407::-;2724:6;2732;2781:2;2769:9;2760:7;2756:23;2752:32;2749:2;;;2797:1;2794;2787:12;2749:2;2840:1;2865:53;2910:7;2901:6;2890:9;2886:22;2865:53;:::i;:::-;2855:63;;2811:117;2967:2;2993:53;3038:7;3029:6;3018:9;3014:22;2993:53;:::i;:::-;2983:63;;2938:118;2739:324;;;;;:::o;3069:552::-;3146:6;3154;3162;3211:2;3199:9;3190:7;3186:23;3182:32;3179:2;;;3227:1;3224;3217:12;3179:2;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3525:2;3551:53;3596:7;3587:6;3576:9;3572:22;3551:53;:::i;:::-;3541:63;;3496:118;3169:452;;;;;:::o;3627:179::-;3696:10;3717:46;3759:3;3751:6;3717:46;:::i;:::-;3795:4;3790:3;3786:14;3772:28;;3707:99;;;;:::o;3812:108::-;3889:24;3907:5;3889:24;:::i;:::-;3884:3;3877:37;3867:53;;:::o;3926:118::-;4013:24;4031:5;4013:24;:::i;:::-;4008:3;4001:37;3991:53;;:::o;4080:732::-;4199:3;4228:54;4276:5;4228:54;:::i;:::-;4298:86;4377:6;4372:3;4298:86;:::i;:::-;4291:93;;4408:56;4458:5;4408:56;:::i;:::-;4487:7;4518:1;4503:284;4528:6;4525:1;4522:13;4503:284;;;4604:6;4598:13;4631:63;4690:3;4675:13;4631:63;:::i;:::-;4624:70;;4717:60;4770:6;4717:60;:::i;:::-;4707:70;;4563:224;4550:1;4547;4543:9;4538:14;;4503:284;;;4507:14;4803:3;4796:10;;4204:608;;;;;;;:::o;4818:109::-;4899:21;4914:5;4899:21;:::i;:::-;4894:3;4887:34;4877:50;;:::o;4933:147::-;5028:45;5067:5;5028:45;:::i;:::-;5023:3;5016:58;5006:74;;:::o;5086:364::-;5174:3;5202:39;5235:5;5202:39;:::i;:::-;5257:71;5321:6;5316:3;5257:71;:::i;:::-;5250:78;;5337:52;5382:6;5377:3;5370:4;5363:5;5359:16;5337:52;:::i;:::-;5414:29;5436:6;5414:29;:::i;:::-;5409:3;5405:39;5398:46;;5178:272;;;;;:::o;5456:366::-;5598:3;5619:67;5683:2;5678:3;5619:67;:::i;:::-;5612:74;;5695:93;5784:3;5695:93;:::i;:::-;5813:2;5808:3;5804:12;5797:19;;5602:220;;;:::o;5828:366::-;5970:3;5991:67;6055:2;6050:3;5991:67;:::i;:::-;5984:74;;6067:93;6156:3;6067:93;:::i;:::-;6185:2;6180:3;6176:12;6169:19;;5974:220;;;:::o;6200:366::-;6342:3;6363:67;6427:2;6422:3;6363:67;:::i;:::-;6356:74;;6439:93;6528:3;6439:93;:::i;:::-;6557:2;6552:3;6548:12;6541:19;;6346:220;;;:::o;6572:366::-;6714:3;6735:67;6799:2;6794:3;6735:67;:::i;:::-;6728:74;;6811:93;6900:3;6811:93;:::i;:::-;6929:2;6924:3;6920:12;6913:19;;6718:220;;;:::o;6944:366::-;7086:3;7107:67;7171:2;7166:3;7107:67;:::i;:::-;7100:74;;7183:93;7272:3;7183:93;:::i;:::-;7301:2;7296:3;7292:12;7285:19;;7090:220;;;:::o;7316:366::-;7458:3;7479:67;7543:2;7538:3;7479:67;:::i;:::-;7472:74;;7555:93;7644:3;7555:93;:::i;:::-;7673:2;7668:3;7664:12;7657:19;;7462:220;;;:::o;7688:366::-;7830:3;7851:67;7915:2;7910:3;7851:67;:::i;:::-;7844:74;;7927:93;8016:3;7927:93;:::i;:::-;8045:2;8040:3;8036:12;8029:19;;7834:220;;;:::o;8060:366::-;8202:3;8223:67;8287:2;8282:3;8223:67;:::i;:::-;8216:74;;8299:93;8388:3;8299:93;:::i;:::-;8417:2;8412:3;8408:12;8401:19;;8206:220;;;:::o;8432:366::-;8574:3;8595:67;8659:2;8654:3;8595:67;:::i;:::-;8588:74;;8671:93;8760:3;8671:93;:::i;:::-;8789:2;8784:3;8780:12;8773:19;;8578:220;;;:::o;8804:366::-;8946:3;8967:67;9031:2;9026:3;8967:67;:::i;:::-;8960:74;;9043:93;9132:3;9043:93;:::i;:::-;9161:2;9156:3;9152:12;9145:19;;8950:220;;;:::o;9176:366::-;9318:3;9339:67;9403:2;9398:3;9339:67;:::i;:::-;9332:74;;9415:93;9504:3;9415:93;:::i;:::-;9533:2;9528:3;9524:12;9517:19;;9322:220;;;:::o;9548:118::-;9635:24;9653:5;9635:24;:::i;:::-;9630:3;9623:37;9613:53;;:::o;9672:112::-;9755:22;9771:5;9755:22;:::i;:::-;9750:3;9743:35;9733:51;;:::o;9790:222::-;9883:4;9921:2;9910:9;9906:18;9898:26;;9934:71;10002:1;9991:9;9987:17;9978:6;9934:71;:::i;:::-;9888:124;;;;:::o;10018:210::-;10105:4;10143:2;10132:9;10128:18;10120:26;;10156:65;10218:1;10207:9;10203:17;10194:6;10156:65;:::i;:::-;10110:118;;;;:::o;10234:313::-;10347:4;10385:2;10374:9;10370:18;10362:26;;10434:9;10428:4;10424:20;10420:1;10409:9;10405:17;10398:47;10462:78;10535:4;10526:6;10462:78;:::i;:::-;10454:86;;10352:195;;;;:::o;10553:419::-;10719:4;10757:2;10746:9;10742:18;10734:26;;10806:9;10800:4;10796:20;10792:1;10781:9;10777:17;10770:47;10834:131;10960:4;10834:131;:::i;:::-;10826:139;;10724:248;;;:::o;10978:419::-;11144:4;11182:2;11171:9;11167:18;11159:26;;11231:9;11225:4;11221:20;11217:1;11206:9;11202:17;11195:47;11259:131;11385:4;11259:131;:::i;:::-;11251:139;;11149:248;;;:::o;11403:419::-;11569:4;11607:2;11596:9;11592:18;11584:26;;11656:9;11650:4;11646:20;11642:1;11631:9;11627:17;11620:47;11684:131;11810:4;11684:131;:::i;:::-;11676:139;;11574:248;;;:::o;11828:419::-;11994:4;12032:2;12021:9;12017:18;12009:26;;12081:9;12075:4;12071:20;12067:1;12056:9;12052:17;12045:47;12109:131;12235:4;12109:131;:::i;:::-;12101:139;;11999:248;;;:::o;12253:419::-;12419:4;12457:2;12446:9;12442:18;12434:26;;12506:9;12500:4;12496:20;12492:1;12481:9;12477:17;12470:47;12534:131;12660:4;12534:131;:::i;:::-;12526:139;;12424:248;;;:::o;12678:419::-;12844:4;12882:2;12871:9;12867:18;12859:26;;12931:9;12925:4;12921:20;12917:1;12906:9;12902:17;12895:47;12959:131;13085:4;12959:131;:::i;:::-;12951:139;;12849:248;;;:::o;13103:419::-;13269:4;13307:2;13296:9;13292:18;13284:26;;13356:9;13350:4;13346:20;13342:1;13331:9;13327:17;13320:47;13384:131;13510:4;13384:131;:::i;:::-;13376:139;;13274:248;;;:::o;13528:419::-;13694:4;13732:2;13721:9;13717:18;13709:26;;13781:9;13775:4;13771:20;13767:1;13756:9;13752:17;13745:47;13809:131;13935:4;13809:131;:::i;:::-;13801:139;;13699:248;;;:::o;13953:419::-;14119:4;14157:2;14146:9;14142:18;14134:26;;14206:9;14200:4;14196:20;14192:1;14181:9;14177:17;14170:47;14234:131;14360:4;14234:131;:::i;:::-;14226:139;;14124:248;;;:::o;14378:419::-;14544:4;14582:2;14571:9;14567:18;14559:26;;14631:9;14625:4;14621:20;14617:1;14606:9;14602:17;14595:47;14659:131;14785:4;14659:131;:::i;:::-;14651:139;;14549:248;;;:::o;14803:419::-;14969:4;15007:2;14996:9;14992:18;14984:26;;15056:9;15050:4;15046:20;15042:1;15031:9;15027:17;15020:47;15084:131;15210:4;15084:131;:::i;:::-;15076:139;;14974:248;;;:::o;15228:222::-;15321:4;15359:2;15348:9;15344:18;15336:26;;15372:71;15440:1;15429:9;15425:17;15416:6;15372:71;:::i;:::-;15326:124;;;;:::o;15456:831::-;15719:4;15757:3;15746:9;15742:19;15734:27;;15771:71;15839:1;15828:9;15824:17;15815:6;15771:71;:::i;:::-;15852:80;15928:2;15917:9;15913:18;15904:6;15852:80;:::i;:::-;15979:9;15973:4;15969:20;15964:2;15953:9;15949:18;15942:48;16007:108;16110:4;16101:6;16007:108;:::i;:::-;15999:116;;16125:72;16193:2;16182:9;16178:18;16169:6;16125:72;:::i;:::-;16207:73;16275:3;16264:9;16260:19;16251:6;16207:73;:::i;:::-;15724:563;;;;;;;;:::o;16293:332::-;16414:4;16452:2;16441:9;16437:18;16429:26;;16465:71;16533:1;16522:9;16518:17;16509:6;16465:71;:::i;:::-;16546:72;16614:2;16603:9;16599:18;16590:6;16546:72;:::i;:::-;16419:206;;;;;:::o;16631:442::-;16780:4;16818:2;16807:9;16803:18;16795:26;;16831:71;16899:1;16888:9;16884:17;16875:6;16831:71;:::i;:::-;16912:72;16980:2;16969:9;16965:18;16956:6;16912:72;:::i;:::-;16994;17062:2;17051:9;17047:18;17038:6;16994:72;:::i;:::-;16785:288;;;;;;:::o;17079:214::-;17168:4;17206:2;17195:9;17191:18;17183:26;;17219:67;17283:1;17272:9;17268:17;17259:6;17219:67;:::i;:::-;17173:120;;;;:::o;17299:132::-;17366:4;17389:3;17381:11;;17419:4;17414:3;17410:14;17402:22;;17371:60;;;:::o;17437:114::-;17504:6;17538:5;17532:12;17522:22;;17511:40;;;:::o;17557:99::-;17609:6;17643:5;17637:12;17627:22;;17616:40;;;:::o;17662:113::-;17732:4;17764;17759:3;17755:14;17747:22;;17737:38;;;:::o;17781:184::-;17880:11;17914:6;17909:3;17902:19;17954:4;17949:3;17945:14;17930:29;;17892:73;;;;:::o;17971:169::-;18055:11;18089:6;18084:3;18077:19;18129:4;18124:3;18120:14;18105:29;;18067:73;;;;:::o;18146:305::-;18186:3;18205:20;18223:1;18205:20;:::i;:::-;18200:25;;18239:20;18257:1;18239:20;:::i;:::-;18234:25;;18393:1;18325:66;18321:74;18318:1;18315:81;18312:2;;;18399:18;;:::i;:::-;18312:2;18443:1;18440;18436:9;18429:16;;18190:261;;;;:::o;18457:185::-;18497:1;18514:20;18532:1;18514:20;:::i;:::-;18509:25;;18548:20;18566:1;18548:20;:::i;:::-;18543:25;;18587:1;18577:2;;18592:18;;:::i;:::-;18577:2;18634:1;18631;18627:9;18622:14;;18499:143;;;;:::o;18648:348::-;18688:7;18711:20;18729:1;18711:20;:::i;:::-;18706:25;;18745:20;18763:1;18745:20;:::i;:::-;18740:25;;18933:1;18865:66;18861:74;18858:1;18855:81;18850:1;18843:9;18836:17;18832:105;18829:2;;;18940:18;;:::i;:::-;18829:2;18988:1;18985;18981:9;18970:20;;18696:300;;;;:::o;19002:191::-;19042:4;19062:20;19080:1;19062:20;:::i;:::-;19057:25;;19096:20;19114:1;19096:20;:::i;:::-;19091:25;;19135:1;19132;19129:8;19126:2;;;19140:18;;:::i;:::-;19126:2;19185:1;19182;19178:9;19170:17;;19047:146;;;;:::o;19199:96::-;19236:7;19265:24;19283:5;19265:24;:::i;:::-;19254:35;;19244:51;;;:::o;19301:90::-;19335:7;19378:5;19371:13;19364:21;19353:32;;19343:48;;;:::o;19397:126::-;19434:7;19474:42;19467:5;19463:54;19452:65;;19442:81;;;:::o;19529:77::-;19566:7;19595:5;19584:16;;19574:32;;;:::o;19612:86::-;19647:7;19687:4;19680:5;19676:16;19665:27;;19655:43;;;:::o;19704:121::-;19762:9;19795:24;19813:5;19795:24;:::i;:::-;19782:37;;19772:53;;;:::o;19831:307::-;19899:1;19909:113;19923:6;19920:1;19917:13;19909:113;;;20008:1;20003:3;19999:11;19993:18;19989:1;19984:3;19980:11;19973:39;19945:2;19942:1;19938:10;19933:15;;19909:113;;;20040:6;20037:1;20034:13;20031:2;;;20120:1;20111:6;20106:3;20102:16;20095:27;20031:2;19880:258;;;;:::o;20144:180::-;20192:77;20189:1;20182:88;20289:4;20286:1;20279:15;20313:4;20310:1;20303:15;20330:180;20378:77;20375:1;20368:88;20475:4;20472:1;20465:15;20499:4;20496:1;20489:15;20516:102;20557:6;20608:2;20604:7;20599:2;20592:5;20588:14;20584:28;20574:38;;20564:54;;;:::o;20624:222::-;20764:34;20760:1;20752:6;20748:14;20741:58;20833:5;20828:2;20820:6;20816:15;20809:30;20730:116;:::o;20852:221::-;20992:34;20988:1;20980:6;20976:14;20969:58;21061:4;21056:2;21048:6;21044:15;21037:29;20958:115;:::o;21079:177::-;21219:29;21215:1;21207:6;21203:14;21196:53;21185:71;:::o;21262:179::-;21402:31;21398:1;21390:6;21386:14;21379:55;21368:73;:::o;21447:226::-;21587:34;21583:1;21575:6;21571:14;21564:58;21656:9;21651:2;21643:6;21639:15;21632:34;21553:120;:::o;21679:220::-;21819:34;21815:1;21807:6;21803:14;21796:58;21888:3;21883:2;21875:6;21871:15;21864:28;21785:114;:::o;21905:182::-;22045:34;22041:1;22033:6;22029:14;22022:58;22011:76;:::o;22093:228::-;22233:34;22229:1;22221:6;22217:14;22210:58;22302:11;22297:2;22289:6;22285:15;22278:36;22199:122;:::o;22327:180::-;22467:32;22463:1;22455:6;22451:14;22444:56;22433:74;:::o;22513:224::-;22653:34;22649:1;22641:6;22637:14;22630:58;22722:7;22717:2;22709:6;22705:15;22698:32;22619:118;:::o;22743:223::-;22883:34;22879:1;22871:6;22867:14;22860:58;22952:6;22947:2;22939:6;22935:15;22928:31;22849:117;:::o;22972:122::-;23045:24;23063:5;23045:24;:::i;:::-;23038:5;23035:35;23025:2;;23084:1;23081;23074:12;23025:2;23015:79;:::o;23100:122::-;23173:24;23191:5;23173:24;:::i;:::-;23166:5;23163:35;23153:2;;23212:1;23209;23202:12;23153:2;23143:79;:::o

Swarm Source

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