ETH Price: $2,575.22 (+2.90%)

Token

Projekt Diamond (DIAMND)
 

Overview

Max Total Supply

100,000,000,000,000 DIAMND

Holders

219

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
386,694,623,743.667154275 DIAMND

Value
$0.00
0x5Bc1Aa29cC117753f00c23E017dB71cdC9BBD95E
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:
ProjektDiamond

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-13
*/

/* 
 * Projekt Diamond, by The Fair Token Project
 * Hold $DIAMND, Earn ETH
 * 100% LP Lock
 * 0% burn
 * 8% ETH Redistribution
 * View Your Earnings: https://app.fairtokenproject.com
 * Join Telegram: t.me/projektdiamond
 * Follow Twitter: twitter.com/token_project
 * 
 * ****USING FTPAntiBot****
 *
 * Projekt Diamond uses FTPAntiBot to automatically detect scalping and pump-and-dump bots
 * Visit FairTokenProject.com/#antibot to learn how to use AntiBot with your project
 * Your contract must hold 5Bil $GOLD(ProjektGold) or 5Bil $GREEN(ProjektGreen) in order to make calls on mainnet
 * Calls on kovan testnet require > 1 $GOLD or $GREEN
 *
 * FTP Telegram: t.me/fairtokenproject
 * 
 */ 

// 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 m_Owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        m_Owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return m_Owner;
    }
    function transferOwnership(address _address) public virtual onlyOwner {
        emit OwnershipTransferred(m_Owner, _address);
        m_Owner = _address;
    }
    modifier onlyOwner() {
        require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
        _;
    }                                                                                           
}
contract Taxable is Ownable {
    using SafeMath for uint256; 
    FTPExternal External;
    address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD);
    address payable private m_DevAddress;
    uint256 private m_DevAlloc = 2000;
    uint256[] m_TaxAlloc;
    address payable[] m_TaxAddresses;
    mapping (address => uint256) private m_TaxIdx;
    uint256 public m_TotalAlloc;

    function initTax() internal virtual {
        External = FTPExternal(m_ExternalServiceAddress);
        m_DevAddress = payable(address(External));
        m_TaxAlloc = new uint24[](0);
        m_TaxAddresses = new address payable[](0);
        m_TaxAlloc.push(0);
        m_TaxAddresses.push(payable(address(0)));
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
    function payTaxes(uint256 _eth, uint256 _d) internal virtual {
        for (uint i = 1; i < m_TaxAlloc.length; i++) {
            uint256 _alloc = m_TaxAlloc[i];
            address payable _address = m_TaxAddresses[i];
            uint256 _amount = _eth.mul(_alloc).div(_d);
            if (_amount > 1){
                _address.transfer(_amount);
                if(_address == m_DevAddress)
                    External.deposit(_amount);
            }
        }
    }
    function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() {
        uint _idx = m_TaxIdx[_address];
        if (_idx == 0) {
            require(m_TotalAlloc.add(_alloc) <= 10500);
            m_TaxAlloc.push(_alloc);
            m_TaxAddresses.push(_address);
            m_TaxIdx[_address] = m_TaxAlloc.length - 1;
            m_TotalAlloc = m_TotalAlloc.add(_alloc);
        } else { // update alloc for this address
            uint256 _priorAlloc =  m_TaxAlloc[_idx];
            require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500);  
            m_TaxAlloc[_idx] = _alloc;
            m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc);
        }
    }
    function totalTaxAlloc() internal virtual view returns (uint256) {
        return m_TotalAlloc;
    }
    function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) {
        uint _idx = m_TaxIdx[_address];
        return m_TaxAlloc[_idx];
    }
    function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() {
        setTaxAlloc(m_DevAddress, 0);
        m_DevAddress = _address;
        m_DevAlloc = _alloc;
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
}                                                                                    
interface IUniswapV2Factory {                                                         
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface FTPAntiBot {
    function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool);
    function registerBlock(address _recipient, address _sender, address _origin) external;
}
interface FTPEthReflect {
    function init(address _contract, uint256 _alloc, address _pair, address _pairCurrency, uint256 _liquidity, uint256 _supply) external;
    function getAlloc() external view returns (uint256);
    function trackSell(address _holder, uint256 _newEth) external;
    function trackPurchase(address _holder) external;
}
interface FTPExternal {
    function owner() external returns(address);
    function deposit(uint256 _amount) external;
}
contract ProjektDiamond is Context, IERC20, Taxable {
    using SafeMath for uint256;
    // TOKEN
    uint256 private constant TOTAL_SUPPLY = 100000000000000 * 10**9;
    string private m_Name = "Projekt Diamond";
    string private m_Symbol = "DIAMND";
    uint8 private m_Decimals = 9;
    // EXCHANGES
    address private m_UniswapV2Pair;
    IUniswapV2Router02 private m_UniswapV2Router;
    // TRANSACTIONS
    uint256 private m_TxLimit  = 500000000000 * 10**9;
    uint256 private m_WalletLimit = m_TxLimit.mul(3);
    bool private m_Liquidity = false;
    event SetTxLimit(uint TxLimit);
    // ETH REFLECT
    FTPEthReflect private EthReflect;
    address payable m_EthReflectSvcAddress = payable(0x770166531C33f8e0E3D00Ca3633F02F0D55f23C5);
    uint256 m_EthReflectAlloc;
    uint256 m_EthReflectAmount;
    // ANTIBOT
    FTPAntiBot private AntiBot;
    address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3;
    uint256 private m_BanCount = 0;
    // MISC
    address private m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00;
    mapping (address => bool) private m_Blacklist;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    uint256 private m_LastEthBal = 0;
    bool private m_Launched = false;
    bool private m_IsSwap = false;
    uint256 private pMax = 100000; // max alloc percentage

    modifier lockTheSwap {
        m_IsSwap = true;
        _;
        m_IsSwap = false;
    }

    modifier onlyDev() {
        require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized");
        _;
    }
    
    receive() external payable {}

    constructor () {
        EthReflect = FTPEthReflect(m_EthReflectSvcAddress);
        AntiBot = FTPAntiBot(m_AntibotSvcAddress);
        initTax();

        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }
    function name() public view returns (string memory) {
        return m_Name;
    }
    function symbol() public view returns (string memory) {
        return m_Symbol;
    }
    function decimals() public view returns (uint8) {
        return m_Decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    function balanceOf(address _account) public view override returns (uint256) {
        return m_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 m_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(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function _readyToTax(address _sender) private view returns (bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair;
    }
    function _isBuy(address _sender) private view returns (bool) {
        return _sender == m_UniswapV2Pair;
    }
    function _trader(address _sender, address _recipient) private view returns (bool) {
        return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
    }
    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
    }
    function _txRestricted(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }
    function _walletCapped(address _recipient) private view returns (bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router);
    }
    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");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }
    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_recipient != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
        require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]);
        
        if(_isExchangeTransfer(_sender, _recipient) && m_Launched) {
            require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop");                                          
            require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin),  "Beep Beep Boop, You're a piece of poop");
            AntiBot.registerBlock(_sender, _recipient, tx.origin);
        }
         
        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);
            
        uint256 _taxes = 0;
        if (_trader(_sender, _recipient)) {
            require(m_Launched);
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= m_TxLimit);
            
            _taxes = _getTaxes(_sender, _recipient, _amount);
            _tax(_sender);
        }
        
        _updateBalances(_sender, _recipient, _amount, _taxes);
        _trackEthReflection(_sender, _recipient);
	}
    function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private {
        uint256 _netAmount = _amount.sub(_taxes);
        m_Balances[_sender] = m_Balances[_sender].sub(_amount);
        m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount);
        m_Balances[address(this)] = m_Balances[address(this)].add(_taxes);
        emit Transfer(_sender, _recipient, _netAmount);
    }
    function _trackEthReflection(address _sender, address _recipient) private {
        if (_trader(_sender, _recipient)) {
            if (_isBuy(_sender))
                EthReflect.trackPurchase(_recipient);
            else if (m_EthReflectAmount > 0) {
                EthReflect.trackSell(_sender, m_EthReflectAmount);
                m_EthReflectAmount = 0;
            }
        }
    }
	function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) {
        uint256 _ret = 0;
        if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) {
            return _ret;
        }
        _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc()));
        m_EthReflectAlloc = EthReflect.getAlloc();
        _ret = _ret.add(_amount.mul(m_EthReflectAlloc).div(pMax));
        return _ret;
    }
    function _tax(address _sender) private {
        if (_readyToTax(_sender)) {
            uint256 _tokenBalance = balanceOf(address(this));
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }
    function _swapTokensForETH(uint256 _amount) private lockTheSwap {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = m_UniswapV2Router.WETH();
        _approve(address(this), address(m_UniswapV2Router), _amount);
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    function _getTaxDenominator() private view returns (uint) {
        uint _ret = 0;
        _ret = _ret.add(totalTaxAlloc());
        _ret = _ret.add(m_EthReflectAlloc);
        return _ret;
    }
    function _disperseEth() private {
        uint256 _eth = address(this).balance;
        if (_eth <= m_LastEthBal)
            return;
            
        uint256 _newEth = _eth.sub(m_LastEthBal);
        uint _d = _getTaxDenominator();
        if (_d < 1)
            return;

        payTaxes(_newEth, _d);

        m_EthReflectAmount = _newEth.mul(m_EthReflectAlloc).div(_d);
        m_EthReflectSvcAddress.transfer(m_EthReflectAmount);

        m_LastEthBal = address(this).balance;
    }
    function addLiquidity() external onlyOwner() {
        require(!m_Liquidity,"Liquidity already added.");
        uint256 _ethBalance = address(this).balance;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
        EthReflect.init(address(this), 8000, m_UniswapV2Pair, _uniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY);
        m_Liquidity = true;
    }
    function launch() external onlyOwner() {
        m_Launched = true;
    }
    function setTxLimit(uint256 _amount) external onlyOwner() {                                            
        m_TxLimit = _amount.mul(10**9);
        emit SetTxLimit(m_TxLimit);
    }
    function checkIfBlacklist(address _address) external view returns (bool) {
        return m_Blacklist[_address];
    }
    function blacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = true;
    }
    function rmBlacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = false;
    }
    function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() {
        setTaxAlloc(_address, _alloc);
        if (_alloc > 0) {
            m_ExcludedAddresses[_address] = true;
        }
    }
    function setWebThree(address _address) external onlyDev() {
        m_WebThree = _address;
    }
}

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":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":"TxLimit","type":"uint256"}],"name":"SetTxLimit","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":"addLiquidity","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":[{"internalType":"address","name":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052731fc90cba64722d5e70af16783a2dfacfd19f3bed600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107d06004556040518060400160405280600f81526020017f50726f6a656b74204469616d6f6e64000000000000000000000000000000000081525060099080519060200190620000ac92919062000d6f565b506040518060400160405280600681526020017f4449414d4e440000000000000000000000000000000000000000000000000000815250600a9080519060200190620000fa92919062000d6f565b506009600b60006101000a81548160ff021916908360ff160217905550681b1ae4d6e2ef500000600d55620001416003600d54620005be60201b6200194b1790919060201c565b600e556000600f60006101000a81548160ff02191690831515021790555073770166531c33f8e0e3d00ca3633f02f0d55f23c5601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601555731011f61df0e2ad67e269f4108098c79e71868e00601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b556000601c60006101000a81548160ff0219169083151502179055506000601c60016101000a81548160ff021916908315150217905550620186a0601d55348015620002b257600080fd5b506000620002c56200064260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004396200064a60201b60201c565b69152d02c7e14af6800000601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601860006200049d620008ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620005b0919062001058565b60405180910390a362001377565b600080831415620005d357600090506200063c565b60008284620005e3919062001126565b9050828482620005f49190620010ee565b1462000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062001014565b60405180910390fd5b809150505b92915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff81111562000752577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620007815781602001602082028036833780820191505090505b50600590805190602001906200079992919062000e00565b50600067ffffffffffffffff811115620007dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156200080b5781602001602082028036833780820191505090505b50600690805190602001906200082392919062000e59565b50600560009080600181540180825580915050600190039060005260206000200160009091909190915055600660009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008e8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546200091360201b60201c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200095a6200064260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009aa9062001036565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000b375761290462000a208360085462000c5160201b620019c61790919060201c565b111562000a2c57600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905062000acc919062001187565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b2b8260085462000c5160201b620019c61790919060201c565b60088190555062000c4c565b60006005828154811062000b74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905061290462000bb98262000ba58660085462000c5160201b620019c61790919060201c565b62000cb460201b62001a241790919060201c565b111562000bc557600080fd5b826005838154811062000c01577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555062000c448162000c308560085462000c5160201b620019c61790919060201c565b62000cb460201b62001a241790919060201c565b600881905550505b505050565b600080828462000c62919062001091565b90508381101562000caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ca19062000ff2565b60405180910390fd5b8091505092915050565b600062000cfe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d0660201b60201c565b905092915050565b600083831115829062000d51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d48919062000fce565b60405180910390fd5b506000838562000d62919062001187565b9050809150509392505050565b82805462000d7d9062001202565b90600052602060002090601f01602090048101928262000da1576000855562000ded565b82601f1062000dbc57805160ff191683800117855562000ded565b8280016001018555821562000ded579182015b8281111562000dec57825182559160200191906001019062000dcf565b5b50905062000dfc919062000ee8565b5090565b82805482825590600052602060002090810192821562000e46579160200282015b8281111562000e45578251829062ffffff1690559160200191906001019062000e21565b5b50905062000e55919062000ee8565b5090565b82805482825590600052602060002090810192821562000ed5579160200282015b8281111562000ed45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000e7a565b5b50905062000ee4919062000ee8565b5090565b5b8082111562000f0357600081600090555060010162000ee9565b5090565b600062000f148262001075565b62000f20818562001080565b935062000f32818560208601620011cc565b62000f3d81620012c5565b840191505092915050565b600062000f57601b8362001080565b915062000f6482620012d6565b602082019050919050565b600062000f7e60218362001080565b915062000f8b82620012ff565b604082019050919050565b600062000fa560208362001080565b915062000fb2826200134e565b602082019050919050565b62000fc881620011c2565b82525050565b6000602082019050818103600083015262000fea818462000f07565b905092915050565b600060208201905081810360008301526200100d8162000f48565b9050919050565b600060208201905081810360008301526200102f8162000f6f565b9050919050565b60006020820190508181036000830152620010518162000f96565b9050919050565b60006020820190506200106f600083018462000fbd565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200109e82620011c2565b9150620010ab83620011c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010e357620010e262001238565b5b828201905092915050565b6000620010fb82620011c2565b91506200110883620011c2565b9250826200111b576200111a62001267565b5b828204905092915050565b60006200113382620011c2565b91506200114083620011c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200117c576200117b62001238565b5b828202905092915050565b60006200119482620011c2565b9150620011a183620011c2565b925082821015620011b757620011b662001238565b5b828203905092915050565b6000819050919050565b60005b83811015620011ec578082015181840152602081019050620011cf565b83811115620011fc576000848401525b50505050565b600060028204905060018216806200121b57607f821691505b6020821081141562001232576200123162001296565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6145d180620013876000396000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610433578063dd62ed3e14610470578063e8078d94146104ad578063f2fde38b146104c4578063f37c4bce146104ed578063f9f92be41461051657610140565b80638da5cb5b1461034e57806395d89b411461037957806398d5a5cb146103a4578063a9059cbb146103cd578063ab9562fe1461040a57610140565b806323b872dd116100fd57806323b872dd14610218578063313ce5671461025557806354486ac3146102805780635c85974f146102ab57806370a08231146102d45780638a13792e1461031157610140565b806301339c211461014557806306fdde031461015c578063095ea7b31461018757806318160ddd146101c45780631c815b49146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61053f565b005b34801561016857600080fd5b506101716105f1565b60405161017e9190613cf7565b60405180910390f35b34801561019357600080fd5b506101ae60048036038101906101a991906137d7565b610683565b6040516101bb9190613cdc565b60405180910390f35b3480156101d057600080fd5b506101d96106a1565b6040516101e69190613e79565b60405180910390f35b3480156101fb57600080fd5b5061021660048036038101906102119190613710565b6106b3565b005b34801561022457600080fd5b5061023f600480360381019061023a9190613788565b6107b8565b60405161024c9190613cdc565b60405180910390f35b34801561026157600080fd5b5061026a610891565b6040516102779190613eee565b60405180910390f35b34801561028c57600080fd5b506102956108a8565b6040516102a29190613e79565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061383c565b6108ae565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190613695565b61099c565b6040516103089190613e79565b60405180910390f35b34801561031d57600080fd5b50610338600480360381019061033391906136e7565b6109e5565b6040516103459190613e79565b60405180910390f35b34801561035a57600080fd5b50610363610b0e565b6040516103709190613b76565b60405180910390f35b34801561038557600080fd5b5061038e610b37565b60405161039b9190613cf7565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190613695565b610bc9565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906137d7565b610cb9565b6040516104019190613cdc565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613710565b610cd7565b005b34801561043f57600080fd5b5061045a60048036038101906104559190613695565b610e13565b6040516104679190613cdc565b60405180910390f35b34801561047c57600080fd5b506104976004803603810190610492919061374c565b610e69565b6040516104a49190613e79565b60405180910390f35b3480156104b957600080fd5b506104c2610ef0565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190613695565b611550565b005b3480156104f957600080fd5b50610514600480360381019061050f9190613695565b6116a2565b005b34801561052257600080fd5b5061053d60048036038101906105389190613695565b61185b565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661057e611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90613dd9565b60405180910390fd5b6001601c60006101000a81548160ff021916908315150217905550565b60606009805461060090614131565b80601f016020809104026020016040519081016040528092919081815260200182805461062c90614131565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b6000610697610690611a6e565b8484611a76565b6001905092915050565b600069152d02c7e14af6800000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f2611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f90613dd9565b60405180910390fd5b6107528282611c41565b60008111156107b4576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60006107c5848484611f42565b610886846107d1611a6e565b6108818560405180606001604052806028815260200161457460289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610837611a6e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e89092919063ffffffff16565b611a76565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ed611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613dd9565b60405180910390fd5b61095a633b9aca008261194b90919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516109919190613e79565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a27611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610afb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b4690614131565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7290614131565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c08611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613dd9565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ccd610cc6611a6e565b8484611f42565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d16611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6390613dd9565b60405180910390fd5b610d99600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c41565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e0f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c41565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2f611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613dd9565b60405180910390fd5b600f60009054906101000a900460ff1615610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90613d39565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061106b30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611a76565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e991906136be565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561114b57600080fd5b505afa15801561115f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118391906136be565b6040518363ffffffff1660e01b81526004016111a0929190613b91565b602060405180830381600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906136be565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061127b3061099c565b600080611286610b0e565b426040518863ffffffff1660e01b81526004016112a896959493929190613c7b565b6060604051808303818588803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112fa919061388e565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161139c929190613c52565b602060405180830381600087803b1580156113b657600080fd5b505af11580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee9190613813565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611f40600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561149a57600080fd5b505afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d291906136be565b8769152d02c7e14af68000006040518763ffffffff1660e01b81526004016114ff96959493929190613bf1565b600060405180830381600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661158f611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613dd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174491906136be565b73ffffffffffffffffffffffffffffffffffffffff16611762611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614806117d85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c0611a6e565b73ffffffffffffffffffffffffffffffffffffffff16145b611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613d59565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661189a611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613dd9565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561195e57600090506119c0565b6000828461196c9190613fe5565b905082848261197b9190613fb4565b146119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613db9565b60405180910390fd5b809150505b92915050565b60008082846119d59190613f5e565b905083811015611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190613d99565b60405180910390fd5b8091505092915050565b6000611a6683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124e8565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613e39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90613d79565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c349190613e79565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c80611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e4757612904611d3b836008546119c690919063ffffffff16565b1115611d4657600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611de4919061403f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e3c826008546119c690919063ffffffff16565b600881905550611f3d565b600060058281548110611e83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611eba82611eac866008546119c690919063ffffffff16565b611a2490919063ffffffff16565b1115611ec557600080fd5b8260058381548110611f00577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f3581611f27856008546119c690919063ffffffff16565b611a2490919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa990613e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990613d19565b60405180910390fd5b60008111612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90613df9565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121095750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561215f5750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61216857600080fd5b612172838361254c565b801561218a5750601c60009054906101000a900460ff165b1561244757601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161221093929190613bba565b602060405180830381600087803b15801561222a57600080fd5b505af115801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190613813565b156122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161232393929190613bba565b602060405180830381600087803b15801561233d57600080fd5b505af1158015612351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123759190613813565b156123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac90613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161241493929190613bba565b600060405180830381600087803b15801561242e57600080fd5b505af1158015612442573d6000803e3d6000fd5b505050505b612450826125ff565b1561246c57600e546124618361099c565b1061246b57600080fd5b5b600061247884846126b4565b156124cc57601c60009054906101000a900460ff1661249657600080fd5b6124a08484612760565b156124b557600d548211156124b457600080fd5b5b6124c084848461286b565b90506124cb84612a52565b5b6124d884848484612a83565b6124e28484612cc5565b50505050565b6000838311158290612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279190613cf7565b60405180910390fd5b506000838561253f919061403f565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806125f75750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126ad5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127575750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561280d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128635750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129135750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129215780915050612a4b565b61296161295261292f612e1f565b612944601d5487612e2990919063ffffffff16565b61194b90919063ffffffff16565b826119c690919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129cb57600080fd5b505afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a039190613865565b601181905550612a44612a35601d54612a276011548761194b90919063ffffffff16565b612e2990919063ffffffff16565b826119c690919063ffffffff16565b9050809150505b9392505050565b612a5b81612e73565b15612a80576000612a6b3061099c565b9050612a7681612ee7565b612a7e6131e1565b505b50565b6000612a988284611a2490919063ffffffff16565b9050612aec83601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2490919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b8181601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c1682601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb69190613e79565b60405180910390a35050505050565b612ccf82826126b4565b15612e1b57612cdd826132da565b15612d7457600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612d3d9190613b76565b600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050612e1a565b60006012541115612e1957600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612dde929190613c52565b600060405180830381600087803b158015612df857600080fd5b505af1158015612e0c573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000612e6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613334565b905092915050565b6000601c60019054906101000a900460ff16158015612ee05750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601c60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612f45577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f735781602001602082028036833780820191505090505b5090503081600081518110612fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b91906136be565b816001815181106130c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061312c30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a76565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613190959493929190613e94565b600060405180830381600087803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050506000601c60016101000a81548160ff02191690831515021790555050565b6000479050601b5481116131f557506132d8565b600061320c601b5483611a2490919063ffffffff16565b90506000613218613397565b9050600181101561322b575050506132d8565b61323582826133d8565b61325c8161324e6011548561194b90919063ffffffff16565b612e2990919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156132cc573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000808311829061337b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133729190613cf7565b60405180910390fd5b506000838561338a9190613fb4565b9050809150509392505050565b600080600090506133b86133a9612e1f565b826119c690919063ffffffff16565b90506133cf601154826119c690919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561361257600060058281548110613428577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060068381548110613471577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006134c5856134b7858961194b90919063ffffffff16565b612e2990919063ffffffff16565b905060018111156135fc578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613516573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135fb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016135c89190613e79565b600060405180830381600087803b1580156135e257600080fd5b505af11580156135f6573d6000803e3d6000fd5b505050505b5b505050808061360a90614163565b9150506133df565b505050565b60008135905061362681614517565b92915050565b60008151905061363b81614517565b92915050565b6000813590506136508161452e565b92915050565b60008151905061366581614545565b92915050565b60008135905061367a8161455c565b92915050565b60008151905061368f8161455c565b92915050565b6000602082840312156136a757600080fd5b60006136b584828501613617565b91505092915050565b6000602082840312156136d057600080fd5b60006136de8482850161362c565b91505092915050565b6000602082840312156136f957600080fd5b600061370784828501613641565b91505092915050565b6000806040838503121561372357600080fd5b600061373185828601613641565b92505060206137428582860161366b565b9150509250929050565b6000806040838503121561375f57600080fd5b600061376d85828601613617565b925050602061377e85828601613617565b9150509250929050565b60008060006060848603121561379d57600080fd5b60006137ab86828701613617565b93505060206137bc86828701613617565b92505060406137cd8682870161366b565b9150509250925092565b600080604083850312156137ea57600080fd5b60006137f885828601613617565b92505060206138098582860161366b565b9150509250929050565b60006020828403121561382557600080fd5b600061383384828501613656565b91505092915050565b60006020828403121561384e57600080fd5b600061385c8482850161366b565b91505092915050565b60006020828403121561387757600080fd5b600061388584828501613680565b91505092915050565b6000806000606084860312156138a357600080fd5b60006138b186828701613680565b93505060206138c286828701613680565b92505060406138d386828701613680565b9150509250925092565b60006138e983836138f5565b60208301905092915050565b6138fe81614073565b82525050565b61390d81614073565b82525050565b600061391e82613f19565b6139288185613f3c565b935061393383613f09565b8060005b8381101561396457815161394b88826138dd565b975061395683613f2f565b925050600181019050613937565b5085935050505092915050565b61397a81614097565b82525050565b613989816140da565b82525050565b613998816140ec565b82525050565b60006139a982613f24565b6139b38185613f4d565b93506139c38185602086016140fe565b6139cc81614239565b840191505092915050565b60006139e4602383613f4d565b91506139ef8261424a565b604082019050919050565b6000613a07601883613f4d565b9150613a1282614299565b602082019050919050565b6000613a2a600c83613f4d565b9150613a35826142c2565b602082019050919050565b6000613a4d602283613f4d565b9150613a58826142eb565b604082019050919050565b6000613a70601b83613f4d565b9150613a7b8261433a565b602082019050919050565b6000613a93602183613f4d565b9150613a9e82614363565b604082019050919050565b6000613ab6602083613f4d565b9150613ac1826143b2565b602082019050919050565b6000613ad9602983613f4d565b9150613ae4826143db565b604082019050919050565b6000613afc602583613f4d565b9150613b078261442a565b604082019050919050565b6000613b1f602483613f4d565b9150613b2a82614479565b604082019050919050565b6000613b42602683613f4d565b9150613b4d826144c8565b604082019050919050565b613b61816140c3565b82525050565b613b70816140cd565b82525050565b6000602082019050613b8b6000830184613904565b92915050565b6000604082019050613ba66000830185613904565b613bb36020830184613904565b9392505050565b6000606082019050613bcf6000830186613904565b613bdc6020830185613904565b613be96040830184613904565b949350505050565b600060c082019050613c066000830189613904565b613c13602083018861398f565b613c206040830187613904565b613c2d6060830186613904565b613c3a6080830185613b58565b613c4760a0830184613b58565b979650505050505050565b6000604082019050613c676000830185613904565b613c746020830184613b58565b9392505050565b600060c082019050613c906000830189613904565b613c9d6020830188613b58565b613caa6040830187613980565b613cb76060830186613980565b613cc46080830185613904565b613cd160a0830184613b58565b979650505050505050565b6000602082019050613cf16000830184613971565b92915050565b60006020820190508181036000830152613d11818461399e565b905092915050565b60006020820190508181036000830152613d32816139d7565b9050919050565b60006020820190508181036000830152613d52816139fa565b9050919050565b60006020820190508181036000830152613d7281613a1d565b9050919050565b60006020820190508181036000830152613d9281613a40565b9050919050565b60006020820190508181036000830152613db281613a63565b9050919050565b60006020820190508181036000830152613dd281613a86565b9050919050565b60006020820190508181036000830152613df281613aa9565b9050919050565b60006020820190508181036000830152613e1281613acc565b9050919050565b60006020820190508181036000830152613e3281613aef565b9050919050565b60006020820190508181036000830152613e5281613b12565b9050919050565b60006020820190508181036000830152613e7281613b35565b9050919050565b6000602082019050613e8e6000830184613b58565b92915050565b600060a082019050613ea96000830188613b58565b613eb66020830187613980565b8181036040830152613ec88186613913565b9050613ed76060830185613904565b613ee46080830184613b58565b9695505050505050565b6000602082019050613f036000830184613b67565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613f69826140c3565b9150613f74836140c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fa957613fa86141ac565b5b828201905092915050565b6000613fbf826140c3565b9150613fca836140c3565b925082613fda57613fd96141db565b5b828204905092915050565b6000613ff0826140c3565b9150613ffb836140c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614034576140336141ac565b5b828202905092915050565b600061404a826140c3565b9150614055836140c3565b925082821015614068576140676141ac565b5b828203905092915050565b600061407e826140a3565b9050919050565b6000614090826140a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140e5826140c3565b9050919050565b60006140f7826140c3565b9050919050565b60005b8381101561411c578082015181840152602081019050614101565b8381111561412b576000848401525b50505050565b6000600282049050600182168061414957607f821691505b6020821081141561415d5761415c61420a565b5b50919050565b600061416e826140c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141a1576141a06141ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61452081614073565b811461452b57600080fd5b50565b61453781614085565b811461454257600080fd5b50565b61454e81614097565b811461455957600080fd5b50565b614565816140c3565b811461457057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122011f6e88653bc76f4c92e12098d05d06ced44602799cabc40243029f32c00bef064736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610433578063dd62ed3e14610470578063e8078d94146104ad578063f2fde38b146104c4578063f37c4bce146104ed578063f9f92be41461051657610140565b80638da5cb5b1461034e57806395d89b411461037957806398d5a5cb146103a4578063a9059cbb146103cd578063ab9562fe1461040a57610140565b806323b872dd116100fd57806323b872dd14610218578063313ce5671461025557806354486ac3146102805780635c85974f146102ab57806370a08231146102d45780638a13792e1461031157610140565b806301339c211461014557806306fdde031461015c578063095ea7b31461018757806318160ddd146101c45780631c815b49146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61053f565b005b34801561016857600080fd5b506101716105f1565b60405161017e9190613cf7565b60405180910390f35b34801561019357600080fd5b506101ae60048036038101906101a991906137d7565b610683565b6040516101bb9190613cdc565b60405180910390f35b3480156101d057600080fd5b506101d96106a1565b6040516101e69190613e79565b60405180910390f35b3480156101fb57600080fd5b5061021660048036038101906102119190613710565b6106b3565b005b34801561022457600080fd5b5061023f600480360381019061023a9190613788565b6107b8565b60405161024c9190613cdc565b60405180910390f35b34801561026157600080fd5b5061026a610891565b6040516102779190613eee565b60405180910390f35b34801561028c57600080fd5b506102956108a8565b6040516102a29190613e79565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061383c565b6108ae565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190613695565b61099c565b6040516103089190613e79565b60405180910390f35b34801561031d57600080fd5b50610338600480360381019061033391906136e7565b6109e5565b6040516103459190613e79565b60405180910390f35b34801561035a57600080fd5b50610363610b0e565b6040516103709190613b76565b60405180910390f35b34801561038557600080fd5b5061038e610b37565b60405161039b9190613cf7565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190613695565b610bc9565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906137d7565b610cb9565b6040516104019190613cdc565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613710565b610cd7565b005b34801561043f57600080fd5b5061045a60048036038101906104559190613695565b610e13565b6040516104679190613cdc565b60405180910390f35b34801561047c57600080fd5b506104976004803603810190610492919061374c565b610e69565b6040516104a49190613e79565b60405180910390f35b3480156104b957600080fd5b506104c2610ef0565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190613695565b611550565b005b3480156104f957600080fd5b50610514600480360381019061050f9190613695565b6116a2565b005b34801561052257600080fd5b5061053d60048036038101906105389190613695565b61185b565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661057e611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90613dd9565b60405180910390fd5b6001601c60006101000a81548160ff021916908315150217905550565b60606009805461060090614131565b80601f016020809104026020016040519081016040528092919081815260200182805461062c90614131565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b6000610697610690611a6e565b8484611a76565b6001905092915050565b600069152d02c7e14af6800000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f2611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f90613dd9565b60405180910390fd5b6107528282611c41565b60008111156107b4576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60006107c5848484611f42565b610886846107d1611a6e565b6108818560405180606001604052806028815260200161457460289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610837611a6e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e89092919063ffffffff16565b611a76565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ed611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613dd9565b60405180910390fd5b61095a633b9aca008261194b90919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516109919190613e79565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a27611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610afb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b4690614131565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7290614131565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c08611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613dd9565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ccd610cc6611a6e565b8484611f42565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d16611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6390613dd9565b60405180910390fd5b610d99600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c41565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e0f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c41565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2f611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613dd9565b60405180910390fd5b600f60009054906101000a900460ff1615610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90613d39565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061106b30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611a76565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e991906136be565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561114b57600080fd5b505afa15801561115f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118391906136be565b6040518363ffffffff1660e01b81526004016111a0929190613b91565b602060405180830381600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906136be565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061127b3061099c565b600080611286610b0e565b426040518863ffffffff1660e01b81526004016112a896959493929190613c7b565b6060604051808303818588803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112fa919061388e565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161139c929190613c52565b602060405180830381600087803b1580156113b657600080fd5b505af11580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee9190613813565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611f40600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561149a57600080fd5b505afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d291906136be565b8769152d02c7e14af68000006040518763ffffffff1660e01b81526004016114ff96959493929190613bf1565b600060405180830381600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661158f611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613dd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174491906136be565b73ffffffffffffffffffffffffffffffffffffffff16611762611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614806117d85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c0611a6e565b73ffffffffffffffffffffffffffffffffffffffff16145b611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613d59565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661189a611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613dd9565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561195e57600090506119c0565b6000828461196c9190613fe5565b905082848261197b9190613fb4565b146119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613db9565b60405180910390fd5b809150505b92915050565b60008082846119d59190613f5e565b905083811015611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190613d99565b60405180910390fd5b8091505092915050565b6000611a6683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124e8565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613e39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90613d79565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c349190613e79565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c80611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e4757612904611d3b836008546119c690919063ffffffff16565b1115611d4657600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611de4919061403f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e3c826008546119c690919063ffffffff16565b600881905550611f3d565b600060058281548110611e83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611eba82611eac866008546119c690919063ffffffff16565b611a2490919063ffffffff16565b1115611ec557600080fd5b8260058381548110611f00577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f3581611f27856008546119c690919063ffffffff16565b611a2490919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa990613e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990613d19565b60405180910390fd5b60008111612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90613df9565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121095750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561215f5750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61216857600080fd5b612172838361254c565b801561218a5750601c60009054906101000a900460ff165b1561244757601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161221093929190613bba565b602060405180830381600087803b15801561222a57600080fd5b505af115801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190613813565b156122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161232393929190613bba565b602060405180830381600087803b15801561233d57600080fd5b505af1158015612351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123759190613813565b156123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac90613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161241493929190613bba565b600060405180830381600087803b15801561242e57600080fd5b505af1158015612442573d6000803e3d6000fd5b505050505b612450826125ff565b1561246c57600e546124618361099c565b1061246b57600080fd5b5b600061247884846126b4565b156124cc57601c60009054906101000a900460ff1661249657600080fd5b6124a08484612760565b156124b557600d548211156124b457600080fd5b5b6124c084848461286b565b90506124cb84612a52565b5b6124d884848484612a83565b6124e28484612cc5565b50505050565b6000838311158290612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279190613cf7565b60405180910390fd5b506000838561253f919061403f565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806125f75750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126ad5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127575750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561280d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128635750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129135750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129215780915050612a4b565b61296161295261292f612e1f565b612944601d5487612e2990919063ffffffff16565b61194b90919063ffffffff16565b826119c690919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129cb57600080fd5b505afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a039190613865565b601181905550612a44612a35601d54612a276011548761194b90919063ffffffff16565b612e2990919063ffffffff16565b826119c690919063ffffffff16565b9050809150505b9392505050565b612a5b81612e73565b15612a80576000612a6b3061099c565b9050612a7681612ee7565b612a7e6131e1565b505b50565b6000612a988284611a2490919063ffffffff16565b9050612aec83601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2490919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b8181601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c1682601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb69190613e79565b60405180910390a35050505050565b612ccf82826126b4565b15612e1b57612cdd826132da565b15612d7457600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612d3d9190613b76565b600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050612e1a565b60006012541115612e1957600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612dde929190613c52565b600060405180830381600087803b158015612df857600080fd5b505af1158015612e0c573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000612e6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613334565b905092915050565b6000601c60019054906101000a900460ff16158015612ee05750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601c60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612f45577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f735781602001602082028036833780820191505090505b5090503081600081518110612fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b91906136be565b816001815181106130c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061312c30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a76565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613190959493929190613e94565b600060405180830381600087803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050506000601c60016101000a81548160ff02191690831515021790555050565b6000479050601b5481116131f557506132d8565b600061320c601b5483611a2490919063ffffffff16565b90506000613218613397565b9050600181101561322b575050506132d8565b61323582826133d8565b61325c8161324e6011548561194b90919063ffffffff16565b612e2990919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156132cc573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000808311829061337b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133729190613cf7565b60405180910390fd5b506000838561338a9190613fb4565b9050809150509392505050565b600080600090506133b86133a9612e1f565b826119c690919063ffffffff16565b90506133cf601154826119c690919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561361257600060058281548110613428577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060068381548110613471577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006134c5856134b7858961194b90919063ffffffff16565b612e2990919063ffffffff16565b905060018111156135fc578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613516573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135fb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016135c89190613e79565b600060405180830381600087803b1580156135e257600080fd5b505af11580156135f6573d6000803e3d6000fd5b505050505b5b505050808061360a90614163565b9150506133df565b505050565b60008135905061362681614517565b92915050565b60008151905061363b81614517565b92915050565b6000813590506136508161452e565b92915050565b60008151905061366581614545565b92915050565b60008135905061367a8161455c565b92915050565b60008151905061368f8161455c565b92915050565b6000602082840312156136a757600080fd5b60006136b584828501613617565b91505092915050565b6000602082840312156136d057600080fd5b60006136de8482850161362c565b91505092915050565b6000602082840312156136f957600080fd5b600061370784828501613641565b91505092915050565b6000806040838503121561372357600080fd5b600061373185828601613641565b92505060206137428582860161366b565b9150509250929050565b6000806040838503121561375f57600080fd5b600061376d85828601613617565b925050602061377e85828601613617565b9150509250929050565b60008060006060848603121561379d57600080fd5b60006137ab86828701613617565b93505060206137bc86828701613617565b92505060406137cd8682870161366b565b9150509250925092565b600080604083850312156137ea57600080fd5b60006137f885828601613617565b92505060206138098582860161366b565b9150509250929050565b60006020828403121561382557600080fd5b600061383384828501613656565b91505092915050565b60006020828403121561384e57600080fd5b600061385c8482850161366b565b91505092915050565b60006020828403121561387757600080fd5b600061388584828501613680565b91505092915050565b6000806000606084860312156138a357600080fd5b60006138b186828701613680565b93505060206138c286828701613680565b92505060406138d386828701613680565b9150509250925092565b60006138e983836138f5565b60208301905092915050565b6138fe81614073565b82525050565b61390d81614073565b82525050565b600061391e82613f19565b6139288185613f3c565b935061393383613f09565b8060005b8381101561396457815161394b88826138dd565b975061395683613f2f565b925050600181019050613937565b5085935050505092915050565b61397a81614097565b82525050565b613989816140da565b82525050565b613998816140ec565b82525050565b60006139a982613f24565b6139b38185613f4d565b93506139c38185602086016140fe565b6139cc81614239565b840191505092915050565b60006139e4602383613f4d565b91506139ef8261424a565b604082019050919050565b6000613a07601883613f4d565b9150613a1282614299565b602082019050919050565b6000613a2a600c83613f4d565b9150613a35826142c2565b602082019050919050565b6000613a4d602283613f4d565b9150613a58826142eb565b604082019050919050565b6000613a70601b83613f4d565b9150613a7b8261433a565b602082019050919050565b6000613a93602183613f4d565b9150613a9e82614363565b604082019050919050565b6000613ab6602083613f4d565b9150613ac1826143b2565b602082019050919050565b6000613ad9602983613f4d565b9150613ae4826143db565b604082019050919050565b6000613afc602583613f4d565b9150613b078261442a565b604082019050919050565b6000613b1f602483613f4d565b9150613b2a82614479565b604082019050919050565b6000613b42602683613f4d565b9150613b4d826144c8565b604082019050919050565b613b61816140c3565b82525050565b613b70816140cd565b82525050565b6000602082019050613b8b6000830184613904565b92915050565b6000604082019050613ba66000830185613904565b613bb36020830184613904565b9392505050565b6000606082019050613bcf6000830186613904565b613bdc6020830185613904565b613be96040830184613904565b949350505050565b600060c082019050613c066000830189613904565b613c13602083018861398f565b613c206040830187613904565b613c2d6060830186613904565b613c3a6080830185613b58565b613c4760a0830184613b58565b979650505050505050565b6000604082019050613c676000830185613904565b613c746020830184613b58565b9392505050565b600060c082019050613c906000830189613904565b613c9d6020830188613b58565b613caa6040830187613980565b613cb76060830186613980565b613cc46080830185613904565b613cd160a0830184613b58565b979650505050505050565b6000602082019050613cf16000830184613971565b92915050565b60006020820190508181036000830152613d11818461399e565b905092915050565b60006020820190508181036000830152613d32816139d7565b9050919050565b60006020820190508181036000830152613d52816139fa565b9050919050565b60006020820190508181036000830152613d7281613a1d565b9050919050565b60006020820190508181036000830152613d9281613a40565b9050919050565b60006020820190508181036000830152613db281613a63565b9050919050565b60006020820190508181036000830152613dd281613a86565b9050919050565b60006020820190508181036000830152613df281613aa9565b9050919050565b60006020820190508181036000830152613e1281613acc565b9050919050565b60006020820190508181036000830152613e3281613aef565b9050919050565b60006020820190508181036000830152613e5281613b12565b9050919050565b60006020820190508181036000830152613e7281613b35565b9050919050565b6000602082019050613e8e6000830184613b58565b92915050565b600060a082019050613ea96000830188613b58565b613eb66020830187613980565b8181036040830152613ec88186613913565b9050613ed76060830185613904565b613ee46080830184613b58565b9695505050505050565b6000602082019050613f036000830184613b67565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613f69826140c3565b9150613f74836140c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fa957613fa86141ac565b5b828201905092915050565b6000613fbf826140c3565b9150613fca836140c3565b925082613fda57613fd96141db565b5b828204905092915050565b6000613ff0826140c3565b9150613ffb836140c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614034576140336141ac565b5b828202905092915050565b600061404a826140c3565b9150614055836140c3565b925082821015614068576140676141ac565b5b828203905092915050565b600061407e826140a3565b9050919050565b6000614090826140a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140e5826140c3565b9050919050565b60006140f7826140c3565b9050919050565b60005b8381101561411c578082015181840152602081019050614101565b8381111561412b576000848401525b50505050565b6000600282049050600182168061414957607f821691505b6020821081141561415d5761415c61420a565b5b50919050565b600061416e826140c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141a1576141a06141ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61452081614073565b811461452b57600080fd5b50565b61453781614085565b811461454257600080fd5b50565b61454e81614097565b811461455957600080fd5b50565b614565816140c3565b811461457057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122011f6e88653bc76f4c92e12098d05d06ced44602799cabc40243029f32c00bef064736f6c63430008040033

Deployed Bytecode Sourcemap

7696:10947:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17713:75;;;;;;;;;;;;;:::i;:::-;;9883:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10722:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10157:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18315:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10893:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10067:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3911:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17794:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10263:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5650:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3035:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9973:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18213:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10391:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5836:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17988:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10568:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16809:898;;;;;;;;;;;;;:::i;:::-;;3121:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18542:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18114:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17713:75;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17776:4:::1;17763:10;;:17;;;;;;;;;;;;;;;;;;17713:75::o:0;9883:84::-;9920:13;9953:6;9946:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9883:84;:::o;10722:165::-;10799:4;10816:41;10825:12;:10;:12::i;:::-;10839:8;10849:7;10816:8;:41::i;:::-;10875:4;10868:11;;10722:165;;;;:::o;10157:100::-;10210:7;7842:23;10230:19;;10157:100;:::o;18315:221::-;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18410:29:::1;18422:8;18432:6;18410:11;:29::i;:::-;18463:1;18454:6;:10;18450:79;;;18513:4;18481:19;:29;18501:8;18481:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18450:79;18315:221:::0;;:::o;10893:323::-;10994:4;11011:39;11021:7;11030:10;11042:7;11011:9;:39::i;:::-;11061:125;11070:7;11079:12;:10;:12::i;:::-;11093:92;11133:7;11093:92;;;;;;;;;;;;;;;;;:12;:21;11106:7;11093:21;;;;;;;;;;;;;;;:35;11115:12;:10;:12::i;:::-;11093:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;11061:8;:125::i;:::-;11204:4;11197:11;;10893:323;;;;;:::o;10067:84::-;10108:5;10133:10;;;;;;;;;;;10126:17;;10067:84;:::o;3911:27::-;;;;:::o;17794:188::-;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17919:18:::1;17931:5;17919:7;:11;;:18;;;;:::i;:::-;17907:9;:30;;;;17953:21;17964:9;;17953:21;;;;;;:::i;:::-;;;;;;;;17794:188:::0;:::o;10263:122::-;10330:7;10357:10;:20;10368:8;10357:20;;;;;;;;;;;;;;;;10350:27;;10263:122;;;:::o;5650:180::-;5738:7;3345;;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5758:9:::1;5770:8;:18;5779:8;5770:18;;;;;;;;;;;;;;;;5758:30;;5806:10;5817:4;5806:16;;;;;;;;;;;;;;;;;;;;;;;;5799:23;;;5650:180:::0;;;:::o;3035:80::-;3073:7;3100;;;;;;;;;;;3093:14;;3035:80;:::o;9973:88::-;10012:13;10045:8;10038:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9973:88;:::o;18213:96::-;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18296:5:::1;18278:11;:15;18290:2;18278:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18213:96:::0;:::o;10391:171::-;10471:4;10488:44;10498:12;:10;:12::i;:::-;10512:10;10524:7;10488:9;:44::i;:::-;10550:4;10543:11;;10391:171;;;;:::o;5836:253::-;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5941:28:::1;5953:12;;;;;;;;;;;5967:1;5941:11;:28::i;:::-;5995:8;5980:12;;:23;;;;;;;;;;;;;;;;;;6027:6;6014:10;:19;;;;6044:37;6056:12;;;;;;;;;;;6070:10;;6044:11;:37::i;:::-;5836:253:::0;;:::o;17988:120::-;18055:4;18079:11;:21;18091:8;18079:21;;;;;;;;;;;;;;;;;;;;;;;;;18072:28;;17988:120;;;:::o;10568:148::-;10651:7;10678:12;:20;10691:6;10678:20;;;;;;;;;;;;;;;:30;10699:8;10678:30;;;;;;;;;;;;;;;;10671:37;;10568:148;;;;:::o;16809:898::-;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16874:11:::1;;;;;;;;;;;16873:12;16865:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16924:19;16946:21;16924:43;;16978:35;17035:42;16978:100;;17109:16;17089:17;;:36;;;;;;;;;;;;;;;;;;17136:65;17153:4;17168:17;;;;;;;;;;;7842:23;17136:8;:65::i;:::-;17248:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17230:56;;;17295:4;17302:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17230:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17212:15;;:114;;;;;;;;;;;;;;;;;;17337:17;;;;;;;;;;;:33;;;17378:21;17409:4;17415:24;17433:4;17415:9;:24::i;:::-;17440:1;17442::::0;17444:7:::1;:5;:7::i;:::-;17452:15;17337:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17486:15;;;;;;;;;;;17479:31;;;17519:17;;;;;;;;;;;17539:14;17479:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17565:10;;;;;;;;;;;:15;;;17589:4;17596;17602:15;;;;;;;;;;;17619:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17644:11;7842:23;17565:105;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17695:4;17681:11;;:18;;;;;;;;;;;;;;;;;;3400:1;;16809:898::o:0;3121:162::-;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3237:8:::1;3207:39;;3228:7;::::0;::::1;;;;;;;;3207:39;;;;;;;;;;;;3267:8;3257:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;3121:162:::0;:::o;18542:98::-;9373:8;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9357:32;;:12;:10;:12::i;:::-;:32;;;:62;;;;9409:10;;;;;;;;;;;9393:26;;:12;:10;:12::i;:::-;:26;;;9357:62;9348:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18624:8:::1;18611:10;;:21;;;;;;;;;;;;;;;;;;18542:98:::0;:::o;18114:93::-;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18195:4:::1;18177:11;:15;18189:2;18177:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18114:93:::0;:::o;2135:246::-;2193:7;2222:1;2217;:6;2213:47;;;2247:1;2240:8;;;;2213:47;2270:9;2286:1;2282;:5;;;;:::i;:::-;2270:17;;2315:1;2310;2306;:5;;;;:::i;:::-;:10;2298:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2372:1;2365:8;;;2135:246;;;;;:::o;1612:179::-;1670:7;1690:9;1706:1;1702;:5;;;;:::i;:::-;1690:17;;1731:1;1726;:6;;1718:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1782:1;1775:8;;;1612:179;;;;:::o;1797:136::-;1855:7;1882:43;1886:1;1889;1882:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1875:50;;1797:136;;;;:::o;810:98::-;863:7;890:10;883:17;;810:98;:::o;12245:347::-;12359:1;12341:20;;:6;:20;;;;12333:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12441:1;12421:22;;:8;:22;;;;12413:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12526:7;12493:12;:20;12506:6;12493:20;;;;;;;;;;;;;;;:30;12514:8;12493:30;;;;;;;;;;;;;;;:40;;;;12566:8;12549:35;;12558:6;12549:35;;;12576:7;12549:35;;;;;;:::i;:::-;;;;;;;;12245:347;;;:::o;4815:720::-;3345:7;;;;;;;;;;3329:23;;:12;:10;:12::i;:::-;:23;;;3321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4918:9:::1;4930:8;:18;4939:8;4930:18;;;;;;;;;;;;;;;;4918:30;;4971:1;4963:4;:9;4959:569;;;5025:5;4997:24;5014:6;4997:12;;:16;;:24;;;;:::i;:::-;:33;;4989:42;;;::::0;::::1;;5046:10;5062:6;5046:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:14;5104:8;5084:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5169:1;5149:10;:17;;;;:21;;;;:::i;:::-;5128:8;:18;5137:8;5128:18;;;;;;;;;;;;;;;:42;;;;5200:24;5217:6;5200:12;;:16;;:24;;;;:::i;:::-;5185:12;:39;;;;4959:569;;;5290:19;5313:10;5324:4;5313:16;;;;;;;;;;;;;;;;;;;;;;;;5290:39;;5397:5;5352:41;5381:11;5352:24;5369:6;5352:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:50;;5344:59;;;::::0;::::1;;5439:6;5420:10;5431:4;5420:16;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5475:41;5504:11;5475:24;5492:6;5475:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;5460:12;:56;;;;4959:569;;3400:1;4815:720:::0;;:::o;12598:1450::-;12717:1;12698:21;;:7;:21;;;;12690:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12802:1;12780:24;;:10;:24;;;;12772:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12873:1;12863:7;:11;12855:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12940:11;:20;12952:7;12940:20;;;;;;;;;;;;;;;;;;;;;;;;;12939:21;:49;;;;;12965:11;:23;12977:10;12965:23;;;;;;;;;;;;;;;;;;;;;;;;;12964:24;12939:49;:76;;;;;12993:11;:22;13005:9;12993:22;;;;;;;;;;;;;;;;;;;;;;;;;12992:23;12939:76;12931:85;;;;;;13040:40;13060:7;13069:10;13040:19;:40::i;:::-;:54;;;;;13084:10;;;;;;;;;;;13040:54;13037:431;;;13120:7;;;;;;;;;;;:19;;;13140:10;13152:15;;;;;;;;;;;13169:9;13120:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13119:60;13111:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13288:7;;;;;;;;;;;:19;;;13308:7;13317:15;;;;;;;;;;;13334:9;13288:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13287:57;13279:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13403:7;;;;;;;;;;;:21;;;13425:7;13434:10;13446:9;13403:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13037:431;13492:25;13506:10;13492:13;:25::i;:::-;13489:89;;;13564:13;;13540:21;13550:10;13540:9;:21::i;:::-;:37;13532:46;;;;;;13489:89;13603:14;13636:28;13644:7;13653:10;13636:7;:28::i;:::-;13632:287;;;13689:10;;;;;;;;;;;13681:19;;;;;;13719:34;13733:7;13742:10;13719:13;:34::i;:::-;13715:87;;;13792:9;;13781:7;:20;;13773:29;;;;;;13715:87;13840:39;13850:7;13859:10;13871:7;13840:9;:39::i;:::-;13831:48;;13894:13;13899:7;13894:4;:13::i;:::-;13632:287;13939:53;13955:7;13964:10;13976:7;13985:6;13939:15;:53::i;:::-;14003:40;14023:7;14032:10;14003:19;:40::i;:::-;12598:1450;;;;:::o;1939:190::-;2025:7;2058:1;2053;:6;;2061:12;2045:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2085:9;2101:1;2097;:5;;;;:::i;:::-;2085:17;;2120:1;2113:8;;;1939:190;;;;;:::o;11658:179::-;11746:4;11781:15;;;;;;;;;;;11770:26;;:7;:26;;;:59;;;;11814:15;;;;;;;;;;;11800:29;;:10;:29;;;11770:59;11763:66;;11658:179;;;;:::o;12069:170::-;12134:4;12172:15;;;;;;;;;;;12158:29;;:10;:29;;;;:73;;;;;12213:17;;;;;;;;;;;12191:40;;:10;:40;;;;12158:73;12151:80;;12069:170;;;:::o;11478:174::-;11554:4;11580:19;:28;11600:7;11580:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11612:19;:31;11632:10;11612:31;;;;;;;;;;;;;;;;;;;;;;;;;11580:63;11578:66;11571:73;;11478:174;;;;:::o;11843:220::-;11925:4;11960:15;;;;;;;;;;;11949:26;;:7;:26;;;:70;;;;;12001:17;;;;;;;;;;;11979:40;;:10;:40;;;;11949:70;:106;;;;;12024:19;:31;12044:10;12024:31;;;;;;;;;;;;;;;;;;;;;;;;;12023:32;11949:106;11942:113;;11843:220;;;;:::o;14896:459::-;14986:7;15006:12;15021:1;15006:16;;15037:19;:28;15057:7;15037:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15069:19;:31;15089:10;15069:31;;;;;;;;;;;;;;;;;;;;;;;;;15037:63;15033:107;;;15124:4;15117:11;;;;;15033:107;15157:48;15166:38;15188:15;:13;:15::i;:::-;15166:17;15178:4;;15166:7;:11;;:17;;;;:::i;:::-;:21;;:38;;;;:::i;:::-;15157:4;:8;;:48;;;;:::i;:::-;15150:55;;15236:10;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15216:17;:41;;;;15275:50;15284:40;15319:4;;15284:30;15296:17;;15284:7;:11;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15275:4;:8;;:50;;;;:::i;:::-;15268:57;;15343:4;15336:11;;;14896:459;;;;;;:::o;15361:234::-;15415:20;15427:7;15415:11;:20::i;:::-;15411:177;;;15452:21;15476:24;15494:4;15476:9;:24::i;:::-;15452:48;;15515:32;15533:13;15515:17;:32::i;:::-;15562:14;:12;:14::i;:::-;15411:177;;15361:234;:::o;14054:434::-;14168:18;14189:19;14201:6;14189:7;:11;;:19;;;;:::i;:::-;14168:40;;14241:32;14265:7;14241:10;:19;14252:7;14241:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14219:10;:19;14230:7;14219:19;;;;;;;;;;;;;;;:54;;;;14309:38;14336:10;14309;:22;14320:10;14309:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14284:10;:22;14295:10;14284:22;;;;;;;;;;;;;;;:63;;;;14386:37;14416:6;14386:10;:25;14405:4;14386:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14358:10;:25;14377:4;14358:25;;;;;;;;;;;;;;;:65;;;;14457:10;14439:41;;14448:7;14439:41;;;14469:10;14439:41;;;;;;:::i;:::-;;;;;;;;14054:434;;;;;:::o;14494:399::-;14583:28;14591:7;14600:10;14583:7;:28::i;:::-;14579:307;;;14632:15;14639:7;14632:6;:15::i;:::-;14628:247;;;14666:10;;;;;;;;;;;:24;;;14691:10;14666:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14628:247;;;14747:1;14726:18;;:22;14722:153;;;14769:10;;;;;;;;;;;:20;;;14790:7;14799:18;;14769:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14858:1;14837:18;:22;;;;14722:153;14628:247;14579:307;14494:399;;:::o;5541:103::-;5597:7;5624:12;;5617:19;;5541:103;:::o;2387:132::-;2445:7;2472:39;2476:1;2479;2472:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2465:46;;2387:132;;;;:::o;11222:131::-;11282:4;11307:8;;;;;;;;;;;11306:9;:39;;;;;11330:15;;;;;;;;;;;11319:26;;:7;:26;;;;11306:39;11299:46;;11222:131;;;:::o;15601:482::-;9259:4;9248:8;;:15;;;;;;;;;;;;;;;;;;15676:22:::1;15715:1;15701:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15676:41;;15747:4;15728:5;15734:1;15728:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;15774:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15763:5;15769:1;15763:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;15809:60;15826:4;15841:17;;;;;;;;;;;15861:7;15809:8;:60::i;:::-;15880:17;;;;;;;;;;;:68;;;15963:7;15985:1;16001:5;16029:4;16049:15;15880:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9274:1;9297:5:::0;9286:8;;:16;;;;;;;;;;;;;;;;;;15601:482;:::o;16295:508::-;16338:12;16353:21;16338:36;;16397:12;;16389:4;:20;16385:46;;16424:7;;;16385:46;16455:15;16473:22;16482:12;;16473:4;:8;;:22;;;;:::i;:::-;16455:40;;16506:7;16516:20;:18;:20::i;:::-;16506:30;;16556:1;16551:2;:6;16547:32;;;16572:7;;;;;16547:32;16591:21;16600:7;16609:2;16591:8;:21::i;:::-;16646:38;16681:2;16646:30;16658:17;;16646:7;:11;;:30;;;;:::i;:::-;:34;;:38;;;;:::i;:::-;16625:18;:59;;;;16695:22;;;;;;;;;;;:31;;:51;16727:18;;16695:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16774:21;16759:12;:36;;;;16295:508;;;;:::o;11359:113::-;11414:4;11449:15;;;;;;;;;;;11438:26;;:7;:26;;;11431:33;;11359:113;;;:::o;2525:189::-;2611:7;2643:1;2639;:5;2646:12;2631:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2670:9;2686:1;2682;:5;;;;:::i;:::-;2670:17;;2705:1;2698:8;;;2525:189;;;;;:::o;16089:200::-;16141:4;16158:9;16170:1;16158:13;;16189:25;16198:15;:13;:15::i;:::-;16189:4;:8;;:25;;;;:::i;:::-;16182:32;;16232:27;16241:17;;16232:4;:8;;:27;;;;:::i;:::-;16225:34;;16277:4;16270:11;;;16089:200;:::o;4327:482::-;4404:6;4413:1;4404:10;;4399:403;4420:10;:17;;;;4416:1;:21;4399:403;;;4459:14;4476:10;4487:1;4476:13;;;;;;;;;;;;;;;;;;;;;;;;4459:30;;4504:24;4531:14;4546:1;4531:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4504:44;;4563:15;4581:24;4602:2;4581:16;4590:6;4581:4;:8;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;4563:42;;4634:1;4624:7;:11;4620:171;;;4655:8;:17;;:26;4673:7;4655:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4715:12;;;;;;;;;;;4703:24;;:8;:24;;;4700:75;;;4750:8;;;;;;;;;;;:16;;;4767:7;4750:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4700:75;4620:171;4399:403;;;4439:3;;;;;:::i;:::-;;;;4399:403;;;;4327:482;;:::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:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:423::-;1817:6;1825;1874:2;1862:9;1853:7;1849:23;1845:32;1842:2;;;1890:1;1887;1880:12;1842:2;1933:1;1958:61;2011:7;2002:6;1991:9;1987:22;1958:61;:::i;:::-;1948:71;;1904:125;2068:2;2094:53;2139:7;2130:6;2119:9;2115:22;2094:53;:::i;:::-;2084:63;;2039:118;1832:332;;;;;:::o;2170:407::-;2238:6;2246;2295:2;2283:9;2274:7;2270:23;2266:32;2263:2;;;2311:1;2308;2301:12;2263:2;2354:1;2379:53;2424:7;2415:6;2404:9;2400:22;2379:53;:::i;:::-;2369:63;;2325:117;2481:2;2507:53;2552:7;2543:6;2532:9;2528:22;2507:53;:::i;:::-;2497:63;;2452:118;2253:324;;;;;:::o;2583:552::-;2660:6;2668;2676;2725:2;2713:9;2704:7;2700:23;2696:32;2693:2;;;2741:1;2738;2731:12;2693:2;2784:1;2809:53;2854:7;2845:6;2834:9;2830:22;2809:53;:::i;:::-;2799:63;;2755:117;2911:2;2937:53;2982:7;2973:6;2962:9;2958:22;2937:53;:::i;:::-;2927:63;;2882:118;3039:2;3065:53;3110:7;3101:6;3090:9;3086:22;3065:53;:::i;:::-;3055:63;;3010:118;2683:452;;;;;:::o;3141:407::-;3209:6;3217;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;3282:1;3279;3272:12;3234:2;3325:1;3350:53;3395:7;3386:6;3375:9;3371:22;3350:53;:::i;:::-;3340:63;;3296:117;3452:2;3478:53;3523:7;3514:6;3503:9;3499:22;3478:53;:::i;:::-;3468:63;;3423:118;3224:324;;;;;:::o;3554:278::-;3621:6;3670:2;3658:9;3649:7;3645:23;3641:32;3638:2;;;3686:1;3683;3676:12;3638:2;3729:1;3754:61;3807:7;3798:6;3787:9;3783:22;3754:61;:::i;:::-;3744:71;;3700:125;3628:204;;;;:::o;3838:262::-;3897:6;3946:2;3934:9;3925:7;3921:23;3917:32;3914:2;;;3962:1;3959;3952:12;3914:2;4005:1;4030:53;4075:7;4066:6;4055:9;4051:22;4030:53;:::i;:::-;4020:63;;3976:117;3904:196;;;;:::o;4106:284::-;4176:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:2;;;4241:1;4238;4231:12;4193:2;4284:1;4309:64;4365:7;4356:6;4345:9;4341:22;4309:64;:::i;:::-;4299:74;;4255:128;4183:207;;;;:::o;4396:596::-;4484:6;4492;4500;4549:2;4537:9;4528:7;4524:23;4520:32;4517:2;;;4565:1;4562;4555:12;4517:2;4608:1;4633:64;4689:7;4680:6;4669:9;4665:22;4633:64;:::i;:::-;4623:74;;4579:128;4746:2;4772:64;4828:7;4819:6;4808:9;4804:22;4772:64;:::i;:::-;4762:74;;4717:129;4885:2;4911:64;4967:7;4958:6;4947:9;4943:22;4911:64;:::i;:::-;4901:74;;4856:129;4507:485;;;;;:::o;4998:179::-;5067:10;5088:46;5130:3;5122:6;5088:46;:::i;:::-;5166:4;5161:3;5157:14;5143:28;;5078:99;;;;:::o;5183:108::-;5260:24;5278:5;5260:24;:::i;:::-;5255:3;5248:37;5238:53;;:::o;5297:118::-;5384:24;5402:5;5384:24;:::i;:::-;5379:3;5372:37;5362:53;;:::o;5451:732::-;5570:3;5599:54;5647:5;5599:54;:::i;:::-;5669:86;5748:6;5743:3;5669:86;:::i;:::-;5662:93;;5779:56;5829:5;5779:56;:::i;:::-;5858:7;5889:1;5874:284;5899:6;5896:1;5893:13;5874:284;;;5975:6;5969:13;6002:63;6061:3;6046:13;6002:63;:::i;:::-;5995:70;;6088:60;6141:6;6088:60;:::i;:::-;6078:70;;5934:224;5921:1;5918;5914:9;5909:14;;5874:284;;;5878:14;6174:3;6167:10;;5575:608;;;;;;;:::o;6189:109::-;6270:21;6285:5;6270:21;:::i;:::-;6265:3;6258:34;6248:50;;:::o;6304:147::-;6399:45;6438:5;6399:45;:::i;:::-;6394:3;6387:58;6377:74;;:::o;6457:153::-;6555:48;6597:5;6555:48;:::i;:::-;6550:3;6543:61;6533:77;;:::o;6616:364::-;6704:3;6732:39;6765:5;6732:39;:::i;:::-;6787:71;6851:6;6846:3;6787:71;:::i;:::-;6780:78;;6867:52;6912:6;6907:3;6900:4;6893:5;6889:16;6867:52;:::i;:::-;6944:29;6966:6;6944:29;:::i;:::-;6939:3;6935:39;6928:46;;6708:272;;;;;:::o;6986:366::-;7128:3;7149:67;7213:2;7208:3;7149:67;:::i;:::-;7142:74;;7225:93;7314:3;7225:93;:::i;:::-;7343:2;7338:3;7334:12;7327:19;;7132:220;;;:::o;7358:366::-;7500:3;7521:67;7585:2;7580:3;7521:67;:::i;:::-;7514:74;;7597:93;7686:3;7597:93;:::i;:::-;7715:2;7710:3;7706:12;7699:19;;7504:220;;;:::o;7730:366::-;7872:3;7893:67;7957:2;7952:3;7893:67;:::i;:::-;7886:74;;7969:93;8058:3;7969:93;:::i;:::-;8087:2;8082:3;8078:12;8071:19;;7876:220;;;:::o;8102:366::-;8244:3;8265:67;8329:2;8324:3;8265:67;:::i;:::-;8258:74;;8341:93;8430:3;8341:93;:::i;:::-;8459:2;8454:3;8450:12;8443:19;;8248:220;;;:::o;8474:366::-;8616:3;8637:67;8701:2;8696:3;8637:67;:::i;:::-;8630:74;;8713:93;8802:3;8713:93;:::i;:::-;8831:2;8826:3;8822:12;8815:19;;8620:220;;;:::o;8846:366::-;8988:3;9009:67;9073:2;9068:3;9009:67;:::i;:::-;9002:74;;9085:93;9174:3;9085:93;:::i;:::-;9203:2;9198:3;9194:12;9187:19;;8992:220;;;:::o;9218:366::-;9360:3;9381:67;9445:2;9440:3;9381:67;:::i;:::-;9374:74;;9457:93;9546:3;9457:93;:::i;:::-;9575:2;9570:3;9566:12;9559:19;;9364:220;;;:::o;9590:366::-;9732:3;9753:67;9817:2;9812:3;9753:67;:::i;:::-;9746:74;;9829:93;9918:3;9829:93;:::i;:::-;9947:2;9942:3;9938:12;9931:19;;9736:220;;;:::o;9962:366::-;10104:3;10125:67;10189:2;10184:3;10125:67;:::i;:::-;10118:74;;10201:93;10290:3;10201:93;:::i;:::-;10319:2;10314:3;10310:12;10303:19;;10108:220;;;:::o;10334:366::-;10476:3;10497:67;10561:2;10556:3;10497:67;:::i;:::-;10490:74;;10573:93;10662:3;10573:93;:::i;:::-;10691:2;10686:3;10682:12;10675:19;;10480:220;;;:::o;10706:366::-;10848:3;10869:67;10933:2;10928:3;10869:67;:::i;:::-;10862:74;;10945:93;11034:3;10945:93;:::i;:::-;11063:2;11058:3;11054:12;11047:19;;10852:220;;;:::o;11078:118::-;11165:24;11183:5;11165:24;:::i;:::-;11160:3;11153:37;11143:53;;:::o;11202:112::-;11285:22;11301:5;11285:22;:::i;:::-;11280:3;11273:35;11263:51;;:::o;11320:222::-;11413:4;11451:2;11440:9;11436:18;11428:26;;11464:71;11532:1;11521:9;11517:17;11508:6;11464:71;:::i;:::-;11418:124;;;;:::o;11548:332::-;11669:4;11707:2;11696:9;11692:18;11684:26;;11720:71;11788:1;11777:9;11773:17;11764:6;11720:71;:::i;:::-;11801:72;11869:2;11858:9;11854:18;11845:6;11801:72;:::i;:::-;11674:206;;;;;:::o;11886:442::-;12035:4;12073:2;12062:9;12058:18;12050:26;;12086:71;12154:1;12143:9;12139:17;12130:6;12086:71;:::i;:::-;12167:72;12235:2;12224:9;12220:18;12211:6;12167:72;:::i;:::-;12249;12317:2;12306:9;12302:18;12293:6;12249:72;:::i;:::-;12040:288;;;;;;:::o;12334:797::-;12578:4;12616:3;12605:9;12601:19;12593:27;;12630:71;12698:1;12687:9;12683:17;12674:6;12630:71;:::i;:::-;12711:83;12790:2;12779:9;12775:18;12766:6;12711:83;:::i;:::-;12804:72;12872:2;12861:9;12857:18;12848:6;12804:72;:::i;:::-;12886;12954:2;12943:9;12939:18;12930:6;12886:72;:::i;:::-;12968:73;13036:3;13025:9;13021:19;13012:6;12968:73;:::i;:::-;13051;13119:3;13108:9;13104:19;13095:6;13051:73;:::i;:::-;12583:548;;;;;;;;;:::o;13137:332::-;13258:4;13296:2;13285:9;13281:18;13273:26;;13309:71;13377:1;13366:9;13362:17;13353:6;13309:71;:::i;:::-;13390:72;13458:2;13447:9;13443:18;13434:6;13390:72;:::i;:::-;13263:206;;;;;:::o;13475:807::-;13724:4;13762:3;13751:9;13747:19;13739:27;;13776:71;13844:1;13833:9;13829:17;13820:6;13776:71;:::i;:::-;13857:72;13925:2;13914:9;13910:18;13901:6;13857:72;:::i;:::-;13939:80;14015:2;14004:9;14000:18;13991:6;13939:80;:::i;:::-;14029;14105:2;14094:9;14090:18;14081:6;14029:80;:::i;:::-;14119:73;14187:3;14176:9;14172:19;14163:6;14119:73;:::i;:::-;14202;14270:3;14259:9;14255:19;14246:6;14202:73;:::i;:::-;13729:553;;;;;;;;;:::o;14288:210::-;14375:4;14413:2;14402:9;14398:18;14390:26;;14426:65;14488:1;14477:9;14473:17;14464:6;14426:65;:::i;:::-;14380:118;;;;:::o;14504:313::-;14617:4;14655:2;14644:9;14640:18;14632:26;;14704:9;14698:4;14694:20;14690:1;14679:9;14675:17;14668:47;14732:78;14805:4;14796:6;14732:78;:::i;:::-;14724:86;;14622:195;;;;:::o;14823:419::-;14989:4;15027:2;15016:9;15012:18;15004:26;;15076:9;15070:4;15066:20;15062:1;15051:9;15047:17;15040:47;15104:131;15230:4;15104:131;:::i;:::-;15096:139;;14994:248;;;:::o;15248:419::-;15414:4;15452:2;15441:9;15437:18;15429:26;;15501:9;15495:4;15491:20;15487:1;15476:9;15472:17;15465:47;15529:131;15655:4;15529:131;:::i;:::-;15521:139;;15419:248;;;:::o;15673:419::-;15839:4;15877:2;15866:9;15862:18;15854:26;;15926:9;15920:4;15916:20;15912:1;15901:9;15897:17;15890:47;15954:131;16080:4;15954:131;:::i;:::-;15946:139;;15844:248;;;:::o;16098:419::-;16264:4;16302:2;16291:9;16287:18;16279:26;;16351:9;16345:4;16341:20;16337:1;16326:9;16322:17;16315:47;16379:131;16505:4;16379:131;:::i;:::-;16371:139;;16269:248;;;:::o;16523:419::-;16689:4;16727:2;16716:9;16712:18;16704:26;;16776:9;16770:4;16766:20;16762:1;16751:9;16747:17;16740:47;16804:131;16930:4;16804:131;:::i;:::-;16796:139;;16694:248;;;:::o;16948:419::-;17114:4;17152:2;17141:9;17137:18;17129:26;;17201:9;17195:4;17191:20;17187:1;17176:9;17172:17;17165:47;17229:131;17355:4;17229:131;:::i;:::-;17221:139;;17119:248;;;:::o;17373:419::-;17539:4;17577:2;17566:9;17562:18;17554:26;;17626:9;17620:4;17616:20;17612:1;17601:9;17597:17;17590:47;17654:131;17780:4;17654:131;:::i;:::-;17646:139;;17544:248;;;:::o;17798:419::-;17964:4;18002:2;17991:9;17987:18;17979:26;;18051:9;18045:4;18041:20;18037:1;18026:9;18022:17;18015:47;18079:131;18205:4;18079:131;:::i;:::-;18071:139;;17969:248;;;:::o;18223:419::-;18389:4;18427:2;18416:9;18412:18;18404:26;;18476:9;18470:4;18466:20;18462:1;18451:9;18447:17;18440:47;18504:131;18630:4;18504:131;:::i;:::-;18496:139;;18394:248;;;:::o;18648:419::-;18814:4;18852:2;18841:9;18837:18;18829:26;;18901:9;18895:4;18891:20;18887:1;18876:9;18872:17;18865:47;18929:131;19055:4;18929:131;:::i;:::-;18921:139;;18819:248;;;:::o;19073:419::-;19239:4;19277:2;19266:9;19262:18;19254:26;;19326:9;19320:4;19316:20;19312:1;19301:9;19297:17;19290:47;19354:131;19480:4;19354:131;:::i;:::-;19346:139;;19244:248;;;:::o;19498:222::-;19591:4;19629:2;19618:9;19614:18;19606:26;;19642:71;19710:1;19699:9;19695:17;19686:6;19642:71;:::i;:::-;19596:124;;;;:::o;19726:831::-;19989:4;20027:3;20016:9;20012:19;20004:27;;20041:71;20109:1;20098:9;20094:17;20085:6;20041:71;:::i;:::-;20122:80;20198:2;20187:9;20183:18;20174:6;20122:80;:::i;:::-;20249:9;20243:4;20239:20;20234:2;20223:9;20219:18;20212:48;20277:108;20380:4;20371:6;20277:108;:::i;:::-;20269:116;;20395:72;20463:2;20452:9;20448:18;20439:6;20395:72;:::i;:::-;20477:73;20545:3;20534:9;20530:19;20521:6;20477:73;:::i;:::-;19994:563;;;;;;;;:::o;20563:214::-;20652:4;20690:2;20679:9;20675:18;20667:26;;20703:67;20767:1;20756:9;20752:17;20743:6;20703:67;:::i;:::-;20657:120;;;;:::o;20783:132::-;20850:4;20873:3;20865:11;;20903:4;20898:3;20894:14;20886:22;;20855:60;;;:::o;20921:114::-;20988:6;21022:5;21016:12;21006:22;;20995:40;;;:::o;21041:99::-;21093:6;21127:5;21121:12;21111:22;;21100:40;;;:::o;21146:113::-;21216:4;21248;21243:3;21239:14;21231:22;;21221:38;;;:::o;21265:184::-;21364:11;21398:6;21393:3;21386:19;21438:4;21433:3;21429:14;21414:29;;21376:73;;;;:::o;21455:169::-;21539:11;21573:6;21568:3;21561:19;21613:4;21608:3;21604:14;21589:29;;21551:73;;;;:::o;21630:305::-;21670:3;21689:20;21707:1;21689:20;:::i;:::-;21684:25;;21723:20;21741:1;21723:20;:::i;:::-;21718:25;;21877:1;21809:66;21805:74;21802:1;21799:81;21796:2;;;21883:18;;:::i;:::-;21796:2;21927:1;21924;21920:9;21913:16;;21674:261;;;;:::o;21941:185::-;21981:1;21998:20;22016:1;21998:20;:::i;:::-;21993:25;;22032:20;22050:1;22032:20;:::i;:::-;22027:25;;22071:1;22061:2;;22076:18;;:::i;:::-;22061:2;22118:1;22115;22111:9;22106:14;;21983:143;;;;:::o;22132:348::-;22172:7;22195:20;22213:1;22195:20;:::i;:::-;22190:25;;22229:20;22247:1;22229:20;:::i;:::-;22224:25;;22417:1;22349:66;22345:74;22342:1;22339:81;22334:1;22327:9;22320:17;22316:105;22313:2;;;22424:18;;:::i;:::-;22313:2;22472:1;22469;22465:9;22454:20;;22180:300;;;;:::o;22486:191::-;22526:4;22546:20;22564:1;22546:20;:::i;:::-;22541:25;;22580:20;22598:1;22580:20;:::i;:::-;22575:25;;22619:1;22616;22613:8;22610:2;;;22624:18;;:::i;:::-;22610:2;22669:1;22666;22662:9;22654:17;;22531:146;;;;:::o;22683:96::-;22720:7;22749:24;22767:5;22749:24;:::i;:::-;22738:35;;22728:51;;;:::o;22785:104::-;22830:7;22859:24;22877:5;22859:24;:::i;:::-;22848:35;;22838:51;;;:::o;22895:90::-;22929:7;22972:5;22965:13;22958:21;22947:32;;22937:48;;;:::o;22991:126::-;23028:7;23068:42;23061:5;23057:54;23046:65;;23036:81;;;:::o;23123:77::-;23160:7;23189:5;23178:16;;23168:32;;;:::o;23206:86::-;23241:7;23281:4;23274:5;23270:16;23259:27;;23249:43;;;:::o;23298:121::-;23356:9;23389:24;23407:5;23389:24;:::i;:::-;23376:37;;23366:53;;;:::o;23425:124::-;23486:9;23519:24;23537:5;23519:24;:::i;:::-;23506:37;;23496:53;;;:::o;23555:307::-;23623:1;23633:113;23647:6;23644:1;23641:13;23633:113;;;23732:1;23727:3;23723:11;23717:18;23713:1;23708:3;23704:11;23697:39;23669:2;23666:1;23662:10;23657:15;;23633:113;;;23764:6;23761:1;23758:13;23755:2;;;23844:1;23835:6;23830:3;23826:16;23819:27;23755:2;23604:258;;;;:::o;23868:320::-;23912:6;23949:1;23943:4;23939:12;23929:22;;23996:1;23990:4;23986:12;24017:18;24007:2;;24073:4;24065:6;24061:17;24051:27;;24007:2;24135;24127:6;24124:14;24104:18;24101:38;24098:2;;;24154:18;;:::i;:::-;24098:2;23919:269;;;;:::o;24194:233::-;24233:3;24256:24;24274:5;24256:24;:::i;:::-;24247:33;;24302:66;24295:5;24292:77;24289:2;;;24372:18;;:::i;:::-;24289:2;24419:1;24412:5;24408:13;24401:20;;24237:190;;;:::o;24433:180::-;24481:77;24478:1;24471:88;24578:4;24575:1;24568:15;24602:4;24599:1;24592:15;24619:180;24667:77;24664:1;24657:88;24764:4;24761:1;24754:15;24788:4;24785:1;24778:15;24805:180;24853:77;24850:1;24843:88;24950:4;24947:1;24940:15;24974:4;24971:1;24964:15;24991:102;25032:6;25083:2;25079:7;25074:2;25067:5;25063:14;25059:28;25049:38;;25039:54;;;:::o;25099:222::-;25239:34;25235:1;25227:6;25223:14;25216:58;25308:5;25303:2;25295:6;25291:15;25284:30;25205:116;:::o;25327:174::-;25467:26;25463:1;25455:6;25451:14;25444:50;25433:68;:::o;25507:162::-;25647:14;25643:1;25635:6;25631:14;25624:38;25613:56;:::o;25675:221::-;25815:34;25811:1;25803:6;25799:14;25792:58;25884:4;25879:2;25871:6;25867:15;25860:29;25781:115;:::o;25902:177::-;26042:29;26038:1;26030:6;26026:14;26019:53;26008:71;:::o;26085:220::-;26225:34;26221:1;26213:6;26209:14;26202:58;26294:3;26289:2;26281:6;26277:15;26270:28;26191:114;:::o;26311:182::-;26451:34;26447:1;26439:6;26435:14;26428:58;26417:76;:::o;26499:228::-;26639:34;26635:1;26627:6;26623:14;26616:58;26708:11;26703:2;26695:6;26691:15;26684:36;26605:122;:::o;26733:224::-;26873:34;26869:1;26861:6;26857:14;26850:58;26942:7;26937:2;26929:6;26925:15;26918:32;26839:118;:::o;26963:223::-;27103:34;27099:1;27091:6;27087:14;27080:58;27172:6;27167:2;27159:6;27155:15;27148:31;27069:117;:::o;27192:225::-;27332:34;27328:1;27320:6;27316:14;27309:58;27401:8;27396:2;27388:6;27384:15;27377:33;27298:119;:::o;27423:122::-;27496:24;27514:5;27496:24;:::i;:::-;27489:5;27486:35;27476:2;;27535:1;27532;27525:12;27476:2;27466:79;:::o;27551:138::-;27632:32;27658:5;27632:32;:::i;:::-;27625:5;27622:43;27612:2;;27679:1;27676;27669:12;27612:2;27602:87;:::o;27695:116::-;27765:21;27780:5;27765:21;:::i;:::-;27758:5;27755:32;27745:2;;27801:1;27798;27791:12;27745:2;27735:76;:::o;27817:122::-;27890:24;27908:5;27890:24;:::i;:::-;27883:5;27880:35;27870:2;;27929:1;27926;27919:12;27870:2;27860:79;:::o

Swarm Source

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