ETH Price: $3,665.38 (+0.68%)
 

Overview

Max Total Supply

1,000,000,000,000,000 METABLOXZ

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,990,800,226,702.586302039 METABLOXZ

Value
$0.00
0xeaAa56a807F5578C025F2afC6666c06677820339
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:
MetabloxZ

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

    __  __________________    ____  __    ____ _  _______
   /  |/  / ____/_  __/   |  / __ )/ /   / __ \ |/ /__  /
  / /|_/ / __/   / / / /| | / __  / /   / / / /   /  / / 
 / /  / / /___  / / / ___ |/ /_/ / /___/ /_/ /   |  / /__
/_/  /_/_____/ /_/ /_/  |_/_____/_____/\____/_/|_| /____/
                -Building the metaverse-                                                         

Web: https://www.metabloxz.com/
Email: [email protected]
LinkedIn: https://www.linkedin.com/company/metabloxz
Whitepaper: https://www.metabloxz.com/_files/ugd/1a2b17_2a0e3cf1591643b8bbffc259bf8bae8e.pdf

SMART CONTRACT FEATURES:
- Anti-bot protection.
- Max transaction amount.
- Anti-dump taxation system.

LAUNCH:
Stealth launch and we go public on all socials media after 24 hours.

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

}  

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

contract MetabloxZ is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => uint256) private _buyMap;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant _tTotal = 1e15 * 10**9;
    uint256 private _rTotal = (type(uint256).max - (type(uint256).max % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    uint256 private _ethSent = 0;
    address payable public _feeAddrWallet;
    
    string private constant _name = "MetabloxZ";
    string private constant _symbol = "METABLOXZ";
    uint8 private constant _decimals = 9; 
    uint256 public openBlock;
    uint256 private BotBlock = 5;    
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferType(uint256 ethSent, uint256 transferType, uint256 amount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _feeAddrWallet = payable(0x397214386b71F0ee56607b0E981D45b6bEF75363);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet] = true;
        emit Transfer(address(0x0000000000000000000000000000000000000000), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    
    function originalPurchase(address account) public  view returns (uint256) {
        return _buyMap[account];
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }
    
    function setMaxTx(uint256 maxTransactionAmount) external onlyOwner() {
        _maxTxAmount = maxTransactionAmount;
    }

    function updateFeeWallet(address payable newFeeWallet) external onlyOwner {
        _feeAddrWallet = newFeeWallet;
    }

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
    
        uint256 transferType = 0;
        if (!_isBuy(from)) {
            if (_buyMap[from] != 0 &&
                (_buyMap[from] + (24 hours) >= block.timestamp))  {
                _feeAddr1 = 5;
                _feeAddr2 = 20;
                transferType = 1;
            } else {
                _feeAddr1 = 0;
                _feeAddr2 = 10;
                transferType = 2;
            }
        } else {
            if (_buyMap[to] == 0) {
                _buyMap[to] = block.timestamp;
            }
            _feeAddr1 = 8;
            _feeAddr2 = 2;
            transferType = 3;
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            _feeAddr1 = 0;
            _feeAddr2 = 0;
            transferType = 0;
        }
        
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                uint256 _feeAddr1Before = _feeAddr1;
                uint256 _feeAddr2Before = _feeAddr2;
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                    _ethSent = contractETHBalance;
                }
                _feeAddr1 = _feeAddr1Before;
                _feeAddr2 = _feeAddr2Before;
            }
        }
		
         if ((openBlock + BotBlock > block.number) && from == uniswapV2Pair) {
            _tokenTransfer(from, to, 0);
         }else{
            _tokenTransfer(from, to, amount);
         }
        emit TransferType(_ethSent, transferType, amount);
        _ethSent=0;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet.transfer(amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 5e13 * 10 ** 9;
        openBlock = block.number;
        tradingOpen = true;
    }

    function createUniswapPair() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function removeStrictTxLimit() public onlyOwner {
        _maxTxAmount = 1e15 * 10 ** 9;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function updateMaxTx (uint256 fee) public onlyOwner {
        _maxTxAmount = fee;
    }

    function UpdateBotBlock (uint256 numberblock) public onlyOwner {
        BotBlock = numberblock;
    }    
    
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _feeAddrWallet);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _isBuy(address _sender) private view returns (bool) {
        return _sender == uniswapV2Pair;
    }


	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transferType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferType","type":"event"},{"inputs":[{"internalType":"uint256","name":"numberblock","type":"uint256"}],"name":"UpdateBotBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_feeAddrWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"originalPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStrictTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransactionAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newFeeWallet","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200003c9190620004a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200006991906200045c565b6009556000600d5560056010556000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff02191690831515021790555069d3c21bcecceda1000000601355348015620000e257600080fd5b506000620000f5620003fd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073397214386b71f0ee56607b0e981d45b6bef75363600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095460026000620001ff620003fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620002536200040560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000386620003fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda1000000604051620003ef91906200043f565b60405180910390a362000537565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004398162000497565b82525050565b60006020820190506200045660008301846200042e565b92915050565b6000620004698262000497565b9150620004768362000497565b9250828210156200048c576200048b620004d9565b5b828203905092915050565b6000819050919050565b6000620004ae8262000497565b9150620004bb8362000497565b925082620004ce57620004cd62000508565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61405b80620005476000396000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063c3c8cd8011610095578063f2fde38b11610064578063f2fde38b14610601578063f5f1e5ec1461062a578063ff87260214610653578063ffd79d2d1461066a576101cd565b8063c3c8cd8014610559578063c9567bf914610570578063cc653b4414610587578063dd62ed3e146105c4576101cd565b8063a9059cbb116100d1578063a9059cbb146104a1578063b515566a146104de578063bc33718214610507578063c2d0ffca14610530576101cd565b8063715018a6146104345780638da5cb5b1461044b57806395d89b4114610476576101cd565b806341e978fa116101645780635932ead11161013e5780635932ead11461038e57806366718524146103b75780636fc3eaec146103e057806370a08231146103f7576101cd565b806341e978fa1461032157806349bd5a5e1461034c5780634a13167214610377576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd14610290578063273123b7146102cd578063313ce567146102f6576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610695565b6040516101f491906136c2565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906131b4565b6106d2565b604051610231919061368c565b60405180910390f35b34801561024657600080fd5b5061024f6106f0565b60405161025c91906136a7565b60405180910390f35b34801561027157600080fd5b5061027a610716565b6040516102879190613844565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190613165565b610728565b6040516102c4919061368c565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef91906130ae565b610801565b005b34801561030257600080fd5b5061030b6108f1565b60405161031891906138f0565b60405180910390f35b34801561032d57600080fd5b506103366108fa565b60405161034391906135be565b60405180910390f35b34801561035857600080fd5b50610361610920565b60405161036e91906135a3565b60405180910390f35b34801561038357600080fd5b5061038c610946565b005b34801561039a57600080fd5b506103b560048036038101906103b09190613231565b610d41565b005b3480156103c357600080fd5b506103de60048036038101906103d99190613100565b610df3565b005b3480156103ec57600080fd5b506103f5610ecc565b005b34801561040357600080fd5b5061041e600480360381019061041991906130ae565b610f3e565b60405161042b9190613844565b60405180910390f35b34801561044057600080fd5b50610449610f8f565b005b34801561045757600080fd5b50610460611030565b60405161046d91906135a3565b60405180910390f35b34801561048257600080fd5b5061048b611059565b60405161049891906136c2565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c391906131b4565b611096565b6040516104d5919061368c565b60405180910390f35b3480156104ea57600080fd5b50610505600480360381019061050091906131f0565b6110b4565b005b34801561051357600080fd5b5061052e60048036038101906105299190613283565b611204565b005b34801561053c57600080fd5b5061055760048036038101906105529190613283565b6112a3565b005b34801561056557600080fd5b5061056e611342565b005b34801561057c57600080fd5b506105856113bc565b005b34801561059357600080fd5b506105ae60048036038101906105a991906130ae565b611669565b6040516105bb9190613844565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613129565b6116b2565b6040516105f89190613844565b60405180910390f35b34801561060d57600080fd5b50610628600480360381019061062391906130ae565b611739565b005b34801561063657600080fd5b50610651600480360381019061064c9190613283565b61184a565b005b34801561065f57600080fd5b506106686118e9565b005b34801561067657600080fd5b5061067f611991565b60405161068c9190613844565b60405180910390f35b60606040518060400160405280600981526020017f4d657461626c6f785a0000000000000000000000000000000000000000000000815250905090565b60006106e66106df611997565b848461199f565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600069d3c21bcecceda1000000905090565b6000610735848484611b6a565b6107f684610741611997565b6107f185604051806060016040528060288152602001613ffe60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a7611997565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123769092919063ffffffff16565b61199f565b600190509392505050565b610809611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d906137a4565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61094e611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d2906137a4565b60405180910390fd5b601260149054906101000a900460ff1615610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2290613824565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0391906130d7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6557600080fd5b505afa158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d91906130d7565b6040518363ffffffff1660e01b8152600401610bba9291906135d9565b602060405180830381600087803b158015610bd457600080fd5b505af1158015610be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0c91906130d7565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ceb929190613602565b602060405180830381600087803b158015610d0557600080fd5b505af1158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d919061325a565b5050565b610d49611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd906137a4565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b610dfb611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f906137a4565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f0d611997565b73ffffffffffffffffffffffffffffffffffffffff1614610f2d57600080fd5b6000479050610f3b816123da565b50565b6000610f88600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612446565b9050919050565b610f97611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906137a4565b60405180910390fd5b61102e60006124b4565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f4d455441424c4f585a0000000000000000000000000000000000000000000000815250905090565b60006110aa6110a3611997565b8484611b6a565b6001905092915050565b6110bc611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906137a4565b60405180910390fd5b60005b815181101561120057600160076000848481518110611194577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111f890613bc7565b91505061114c565b5050565b61120c611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906137a4565b60405180910390fd5b8060138190555050565b6112ab611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f906137a4565b60405180910390fd5b8060138190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611383611997565b73ffffffffffffffffffffffffffffffffffffffff16146113a357600080fd5b60006113ae30610f3e565b90506113b981612578565b50565b6113c4611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611448906137a4565b60405180910390fd5b601260149054906101000a900460ff16156114a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149890613824565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061153230601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda100000061199f565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157b30610f3e565b600080611586611030565b426040518863ffffffff1660e01b81526004016115a89695949392919061362b565b6060604051808303818588803b1580156115c157600080fd5b505af11580156115d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115fa91906132ac565b5050506001601260166101000a81548160ff0219169083151502179055506001601260176101000a81548160ff021916908315150217905550690a968163f0a57b40000060138190555043600f819055506001601260146101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611741611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c5906137a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613724565b60405180910390fd5b611847816124b4565b50565b611852611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d6906137a4565b60405180910390fd5b8060108190555050565b6118f1611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611975906137a4565b60405180910390fd5b69d3c21bcecceda1000000601381905550565b600f5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0690613804565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690613744565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b5d9190613844565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd1906137e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c41906136e4565b60405180910390fd5b60008111611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c84906137c4565b60405180910390fd5b6000611c9884612872565b611d71576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414158015611d3957504262015180600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3691906139b1565b10155b15611d57576005600b819055506014600c8190555060019050611d6c565b6000600b81905550600a600c81905550600290505b611e13565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611dfe5742600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6008600b819055506002600c81905550600390505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eb45750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ece576000600b819055506000600c81905550600090505b611ed6611030565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f445750611f14611030565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561229e57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fed5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ff657600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120a15750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120f75750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561210f5750601260179054906101000a900460ff165b156121bf5760135482111561212357600080fd5b42600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061216e57600080fd5b601e4261217b91906139b1565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006121ca30610f3e565b9050601260159054906101000a900460ff161580156122375750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561224f5750601260169054906101000a900460ff165b1561229c576000600b5490506000600c54905061226b83612578565b6000479050600081111561228a57612282476123da565b80600d819055505b82600b8190555081600c819055505050505b505b43601054600f546122af91906139b1565b1180156123095750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561231f5761231a848460006128cc565b61232b565b61232a8484846128cc565b5b7f52cc9b3b9b2fbca105996d3a85d38c08aa29f0228c897d6e2ab118a3c0ea8bfd600d548284604051612360939291906138b9565b60405180910390a16000600d8190555050505050565b60008383111582906123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b591906136c2565b60405180910390fd5b50600083856123cd9190613a92565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612442573d6000803e3d6000fd5b5050565b600060095482111561248d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248490613704565b60405180910390fd5b60006124976128dc565b90506124ac818461290790919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156125d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156126045781602001602082028036833780820191505090505b5090503081600081518110612642577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126e457600080fd5b505afa1580156126f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271c91906130d7565b81600181518110612756577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127bd30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461199f565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161282195949392919061385f565b600060405180830381600087803b15801561283b57600080fd5b505af115801561284f573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6128d7838383612951565b505050565b60008060006128e9612b1c565b91509150612900818361290790919063ffffffff16565b9250505090565b600061294983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b81565b905092915050565b60008060008060008061296387612be4565b9550955095509550955095506129c186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a5685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612aa281612cf4565b612aac8483612db1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b099190613844565b60405180910390a3505050505050505050565b60008060006009549050600069d3c21bcecceda10000009050612b5469d3c21bcecceda100000060095461290790919063ffffffff16565b821015612b745760095469d3c21bcecceda1000000935093505050612b7d565b81819350935050505b9091565b60008083118290612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf91906136c2565b60405180910390fd5b5060008385612bd79190613a07565b9050809150509392505050565b6000806000806000806000806000612c018a600b54600c54612deb565b9250925092506000612c116128dc565b90506000806000612c248e878787612e81565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c8e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612376565b905092915050565b6000808284612ca591906139b1565b905083811015612cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce190613764565b60405180910390fd5b8091505092915050565b6000612cfe6128dc565b90506000612d158284612f0a90919063ffffffff16565b9050612d6981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612dc682600954612c4c90919063ffffffff16565b600981905550612de181600a54612c9690919063ffffffff16565b600a819055505050565b600080600080612e176064612e09888a612f0a90919063ffffffff16565b61290790919063ffffffff16565b90506000612e416064612e33888b612f0a90919063ffffffff16565b61290790919063ffffffff16565b90506000612e6a82612e5c858c612c4c90919063ffffffff16565b612c4c90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e9a8589612f0a90919063ffffffff16565b90506000612eb18689612f0a90919063ffffffff16565b90506000612ec88789612f0a90919063ffffffff16565b90506000612ef182612ee38587612c4c90919063ffffffff16565b612c4c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612f1d5760009050612f7f565b60008284612f2b9190613a38565b9050828482612f3a9190613a07565b14612f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7190613784565b60405180910390fd5b809150505b92915050565b6000612f98612f9384613930565b61390b565b90508083825260208201905082856020860282011115612fb757600080fd5b60005b85811015612fe75781612fcd8882612ff1565b845260208401935060208301925050600181019050612fba565b5050509392505050565b60008135905061300081613fa1565b92915050565b60008151905061301581613fa1565b92915050565b60008135905061302a81613fb8565b92915050565b600082601f83011261304157600080fd5b8135613051848260208601612f85565b91505092915050565b60008135905061306981613fcf565b92915050565b60008151905061307e81613fcf565b92915050565b60008135905061309381613fe6565b92915050565b6000815190506130a881613fe6565b92915050565b6000602082840312156130c057600080fd5b60006130ce84828501612ff1565b91505092915050565b6000602082840312156130e957600080fd5b60006130f784828501613006565b91505092915050565b60006020828403121561311257600080fd5b60006131208482850161301b565b91505092915050565b6000806040838503121561313c57600080fd5b600061314a85828601612ff1565b925050602061315b85828601612ff1565b9150509250929050565b60008060006060848603121561317a57600080fd5b600061318886828701612ff1565b935050602061319986828701612ff1565b92505060406131aa86828701613084565b9150509250925092565b600080604083850312156131c757600080fd5b60006131d585828601612ff1565b92505060206131e685828601613084565b9150509250929050565b60006020828403121561320257600080fd5b600082013567ffffffffffffffff81111561321c57600080fd5b61322884828501613030565b91505092915050565b60006020828403121561324357600080fd5b60006132518482850161305a565b91505092915050565b60006020828403121561326c57600080fd5b600061327a8482850161306f565b91505092915050565b60006020828403121561329557600080fd5b60006132a384828501613084565b91505092915050565b6000806000606084860312156132c157600080fd5b60006132cf86828701613099565b93505060206132e086828701613099565b92505060406132f186828701613099565b9150509250925092565b60006133078383613322565b60208301905092915050565b61331c81613ad8565b82525050565b61332b81613ac6565b82525050565b61333a81613ac6565b82525050565b600061334b8261396c565b613355818561398f565b93506133608361395c565b8060005b8381101561339157815161337888826132fb565b975061338383613982565b925050600181019050613364565b5085935050505092915050565b6133a781613aea565b82525050565b6133b681613b2d565b82525050565b6133c581613b51565b82525050565b60006133d682613977565b6133e081856139a0565b93506133f0818560208601613b63565b6133f981613c9d565b840191505092915050565b60006134116023836139a0565b915061341c82613cae565b604082019050919050565b6000613434602a836139a0565b915061343f82613cfd565b604082019050919050565b60006134576026836139a0565b915061346282613d4c565b604082019050919050565b600061347a6022836139a0565b915061348582613d9b565b604082019050919050565b600061349d601b836139a0565b91506134a882613dea565b602082019050919050565b60006134c06021836139a0565b91506134cb82613e13565b604082019050919050565b60006134e36020836139a0565b91506134ee82613e62565b602082019050919050565b60006135066029836139a0565b915061351182613e8b565b604082019050919050565b60006135296025836139a0565b915061353482613eda565b604082019050919050565b600061354c6024836139a0565b915061355782613f29565b604082019050919050565b600061356f6017836139a0565b915061357a82613f78565b602082019050919050565b61358e81613b16565b82525050565b61359d81613b20565b82525050565b60006020820190506135b86000830184613331565b92915050565b60006020820190506135d36000830184613313565b92915050565b60006040820190506135ee6000830185613331565b6135fb6020830184613331565b9392505050565b60006040820190506136176000830185613331565b6136246020830184613585565b9392505050565b600060c0820190506136406000830189613331565b61364d6020830188613585565b61365a60408301876133bc565b61366760608301866133bc565b6136746080830185613331565b61368160a0830184613585565b979650505050505050565b60006020820190506136a1600083018461339e565b92915050565b60006020820190506136bc60008301846133ad565b92915050565b600060208201905081810360008301526136dc81846133cb565b905092915050565b600060208201905081810360008301526136fd81613404565b9050919050565b6000602082019050818103600083015261371d81613427565b9050919050565b6000602082019050818103600083015261373d8161344a565b9050919050565b6000602082019050818103600083015261375d8161346d565b9050919050565b6000602082019050818103600083015261377d81613490565b9050919050565b6000602082019050818103600083015261379d816134b3565b9050919050565b600060208201905081810360008301526137bd816134d6565b9050919050565b600060208201905081810360008301526137dd816134f9565b9050919050565b600060208201905081810360008301526137fd8161351c565b9050919050565b6000602082019050818103600083015261381d8161353f565b9050919050565b6000602082019050818103600083015261383d81613562565b9050919050565b60006020820190506138596000830184613585565b92915050565b600060a0820190506138746000830188613585565b61388160208301876133bc565b81810360408301526138938186613340565b90506138a26060830185613331565b6138af6080830184613585565b9695505050505050565b60006060820190506138ce6000830186613585565b6138db6020830185613585565b6138e86040830184613585565b949350505050565b60006020820190506139056000830184613594565b92915050565b6000613915613926565b90506139218282613b96565b919050565b6000604051905090565b600067ffffffffffffffff82111561394b5761394a613c6e565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006139bc82613b16565b91506139c783613b16565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139fc576139fb613c10565b5b828201905092915050565b6000613a1282613b16565b9150613a1d83613b16565b925082613a2d57613a2c613c3f565b5b828204905092915050565b6000613a4382613b16565b9150613a4e83613b16565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a8757613a86613c10565b5b828202905092915050565b6000613a9d82613b16565b9150613aa883613b16565b925082821015613abb57613aba613c10565b5b828203905092915050565b6000613ad182613af6565b9050919050565b6000613ae382613af6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b3882613b3f565b9050919050565b6000613b4a82613af6565b9050919050565b6000613b5c82613b16565b9050919050565b60005b83811015613b81578082015181840152602081019050613b66565b83811115613b90576000848401525b50505050565b613b9f82613c9d565b810181811067ffffffffffffffff82111715613bbe57613bbd613c6e565b5b80604052505050565b6000613bd282613b16565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c0557613c04613c10565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613faa81613ac6565b8114613fb557600080fd5b50565b613fc181613ad8565b8114613fcc57600080fd5b50565b613fd881613aea565b8114613fe357600080fd5b50565b613fef81613b16565b8114613ffa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122045415ae1c9c866b6dfcb99c50a5decc1392f098866bada358915a9d99c1a67b164736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c8063715018a6116100f7578063c3c8cd8011610095578063f2fde38b11610064578063f2fde38b14610601578063f5f1e5ec1461062a578063ff87260214610653578063ffd79d2d1461066a576101cd565b8063c3c8cd8014610559578063c9567bf914610570578063cc653b4414610587578063dd62ed3e146105c4576101cd565b8063a9059cbb116100d1578063a9059cbb146104a1578063b515566a146104de578063bc33718214610507578063c2d0ffca14610530576101cd565b8063715018a6146104345780638da5cb5b1461044b57806395d89b4114610476576101cd565b806341e978fa116101645780635932ead11161013e5780635932ead11461038e57806366718524146103b75780636fc3eaec146103e057806370a08231146103f7576101cd565b806341e978fa1461032157806349bd5a5e1461034c5780634a13167214610377576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd14610290578063273123b7146102cd578063313ce567146102f6576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610695565b6040516101f491906136c2565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906131b4565b6106d2565b604051610231919061368c565b60405180910390f35b34801561024657600080fd5b5061024f6106f0565b60405161025c91906136a7565b60405180910390f35b34801561027157600080fd5b5061027a610716565b6040516102879190613844565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190613165565b610728565b6040516102c4919061368c565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef91906130ae565b610801565b005b34801561030257600080fd5b5061030b6108f1565b60405161031891906138f0565b60405180910390f35b34801561032d57600080fd5b506103366108fa565b60405161034391906135be565b60405180910390f35b34801561035857600080fd5b50610361610920565b60405161036e91906135a3565b60405180910390f35b34801561038357600080fd5b5061038c610946565b005b34801561039a57600080fd5b506103b560048036038101906103b09190613231565b610d41565b005b3480156103c357600080fd5b506103de60048036038101906103d99190613100565b610df3565b005b3480156103ec57600080fd5b506103f5610ecc565b005b34801561040357600080fd5b5061041e600480360381019061041991906130ae565b610f3e565b60405161042b9190613844565b60405180910390f35b34801561044057600080fd5b50610449610f8f565b005b34801561045757600080fd5b50610460611030565b60405161046d91906135a3565b60405180910390f35b34801561048257600080fd5b5061048b611059565b60405161049891906136c2565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c391906131b4565b611096565b6040516104d5919061368c565b60405180910390f35b3480156104ea57600080fd5b50610505600480360381019061050091906131f0565b6110b4565b005b34801561051357600080fd5b5061052e60048036038101906105299190613283565b611204565b005b34801561053c57600080fd5b5061055760048036038101906105529190613283565b6112a3565b005b34801561056557600080fd5b5061056e611342565b005b34801561057c57600080fd5b506105856113bc565b005b34801561059357600080fd5b506105ae60048036038101906105a991906130ae565b611669565b6040516105bb9190613844565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613129565b6116b2565b6040516105f89190613844565b60405180910390f35b34801561060d57600080fd5b50610628600480360381019061062391906130ae565b611739565b005b34801561063657600080fd5b50610651600480360381019061064c9190613283565b61184a565b005b34801561065f57600080fd5b506106686118e9565b005b34801561067657600080fd5b5061067f611991565b60405161068c9190613844565b60405180910390f35b60606040518060400160405280600981526020017f4d657461626c6f785a0000000000000000000000000000000000000000000000815250905090565b60006106e66106df611997565b848461199f565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600069d3c21bcecceda1000000905090565b6000610735848484611b6a565b6107f684610741611997565b6107f185604051806060016040528060288152602001613ffe60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a7611997565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123769092919063ffffffff16565b61199f565b600190509392505050565b610809611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d906137a4565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61094e611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d2906137a4565b60405180910390fd5b601260149054906101000a900460ff1615610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2290613824565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0391906130d7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6557600080fd5b505afa158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d91906130d7565b6040518363ffffffff1660e01b8152600401610bba9291906135d9565b602060405180830381600087803b158015610bd457600080fd5b505af1158015610be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0c91906130d7565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ceb929190613602565b602060405180830381600087803b158015610d0557600080fd5b505af1158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d919061325a565b5050565b610d49611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd906137a4565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b610dfb611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f906137a4565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f0d611997565b73ffffffffffffffffffffffffffffffffffffffff1614610f2d57600080fd5b6000479050610f3b816123da565b50565b6000610f88600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612446565b9050919050565b610f97611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906137a4565b60405180910390fd5b61102e60006124b4565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f4d455441424c4f585a0000000000000000000000000000000000000000000000815250905090565b60006110aa6110a3611997565b8484611b6a565b6001905092915050565b6110bc611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906137a4565b60405180910390fd5b60005b815181101561120057600160076000848481518110611194577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111f890613bc7565b91505061114c565b5050565b61120c611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906137a4565b60405180910390fd5b8060138190555050565b6112ab611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f906137a4565b60405180910390fd5b8060138190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611383611997565b73ffffffffffffffffffffffffffffffffffffffff16146113a357600080fd5b60006113ae30610f3e565b90506113b981612578565b50565b6113c4611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611448906137a4565b60405180910390fd5b601260149054906101000a900460ff16156114a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149890613824565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061153230601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda100000061199f565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157b30610f3e565b600080611586611030565b426040518863ffffffff1660e01b81526004016115a89695949392919061362b565b6060604051808303818588803b1580156115c157600080fd5b505af11580156115d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115fa91906132ac565b5050506001601260166101000a81548160ff0219169083151502179055506001601260176101000a81548160ff021916908315150217905550690a968163f0a57b40000060138190555043600f819055506001601260146101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611741611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c5906137a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613724565b60405180910390fd5b611847816124b4565b50565b611852611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d6906137a4565b60405180910390fd5b8060108190555050565b6118f1611997565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611975906137a4565b60405180910390fd5b69d3c21bcecceda1000000601381905550565b600f5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0690613804565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690613744565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b5d9190613844565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd1906137e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c41906136e4565b60405180910390fd5b60008111611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c84906137c4565b60405180910390fd5b6000611c9884612872565b611d71576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414158015611d3957504262015180600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3691906139b1565b10155b15611d57576005600b819055506014600c8190555060019050611d6c565b6000600b81905550600a600c81905550600290505b611e13565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611dfe5742600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6008600b819055506002600c81905550600390505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eb45750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ece576000600b819055506000600c81905550600090505b611ed6611030565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f445750611f14611030565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561229e57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fed5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ff657600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120a15750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120f75750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561210f5750601260179054906101000a900460ff165b156121bf5760135482111561212357600080fd5b42600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061216e57600080fd5b601e4261217b91906139b1565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006121ca30610f3e565b9050601260159054906101000a900460ff161580156122375750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561224f5750601260169054906101000a900460ff165b1561229c576000600b5490506000600c54905061226b83612578565b6000479050600081111561228a57612282476123da565b80600d819055505b82600b8190555081600c819055505050505b505b43601054600f546122af91906139b1565b1180156123095750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561231f5761231a848460006128cc565b61232b565b61232a8484846128cc565b5b7f52cc9b3b9b2fbca105996d3a85d38c08aa29f0228c897d6e2ab118a3c0ea8bfd600d548284604051612360939291906138b9565b60405180910390a16000600d8190555050505050565b60008383111582906123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b591906136c2565b60405180910390fd5b50600083856123cd9190613a92565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612442573d6000803e3d6000fd5b5050565b600060095482111561248d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248490613704565b60405180910390fd5b60006124976128dc565b90506124ac818461290790919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156125d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156126045781602001602082028036833780820191505090505b5090503081600081518110612642577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126e457600080fd5b505afa1580156126f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271c91906130d7565b81600181518110612756577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127bd30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461199f565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161282195949392919061385f565b600060405180830381600087803b15801561283b57600080fd5b505af115801561284f573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6128d7838383612951565b505050565b60008060006128e9612b1c565b91509150612900818361290790919063ffffffff16565b9250505090565b600061294983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b81565b905092915050565b60008060008060008061296387612be4565b9550955095509550955095506129c186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a5685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612aa281612cf4565b612aac8483612db1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b099190613844565b60405180910390a3505050505050505050565b60008060006009549050600069d3c21bcecceda10000009050612b5469d3c21bcecceda100000060095461290790919063ffffffff16565b821015612b745760095469d3c21bcecceda1000000935093505050612b7d565b81819350935050505b9091565b60008083118290612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf91906136c2565b60405180910390fd5b5060008385612bd79190613a07565b9050809150509392505050565b6000806000806000806000806000612c018a600b54600c54612deb565b9250925092506000612c116128dc565b90506000806000612c248e878787612e81565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c8e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612376565b905092915050565b6000808284612ca591906139b1565b905083811015612cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce190613764565b60405180910390fd5b8091505092915050565b6000612cfe6128dc565b90506000612d158284612f0a90919063ffffffff16565b9050612d6981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612dc682600954612c4c90919063ffffffff16565b600981905550612de181600a54612c9690919063ffffffff16565b600a819055505050565b600080600080612e176064612e09888a612f0a90919063ffffffff16565b61290790919063ffffffff16565b90506000612e416064612e33888b612f0a90919063ffffffff16565b61290790919063ffffffff16565b90506000612e6a82612e5c858c612c4c90919063ffffffff16565b612c4c90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e9a8589612f0a90919063ffffffff16565b90506000612eb18689612f0a90919063ffffffff16565b90506000612ec88789612f0a90919063ffffffff16565b90506000612ef182612ee38587612c4c90919063ffffffff16565b612c4c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612f1d5760009050612f7f565b60008284612f2b9190613a38565b9050828482612f3a9190613a07565b14612f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7190613784565b60405180910390fd5b809150505b92915050565b6000612f98612f9384613930565b61390b565b90508083825260208201905082856020860282011115612fb757600080fd5b60005b85811015612fe75781612fcd8882612ff1565b845260208401935060208301925050600181019050612fba565b5050509392505050565b60008135905061300081613fa1565b92915050565b60008151905061301581613fa1565b92915050565b60008135905061302a81613fb8565b92915050565b600082601f83011261304157600080fd5b8135613051848260208601612f85565b91505092915050565b60008135905061306981613fcf565b92915050565b60008151905061307e81613fcf565b92915050565b60008135905061309381613fe6565b92915050565b6000815190506130a881613fe6565b92915050565b6000602082840312156130c057600080fd5b60006130ce84828501612ff1565b91505092915050565b6000602082840312156130e957600080fd5b60006130f784828501613006565b91505092915050565b60006020828403121561311257600080fd5b60006131208482850161301b565b91505092915050565b6000806040838503121561313c57600080fd5b600061314a85828601612ff1565b925050602061315b85828601612ff1565b9150509250929050565b60008060006060848603121561317a57600080fd5b600061318886828701612ff1565b935050602061319986828701612ff1565b92505060406131aa86828701613084565b9150509250925092565b600080604083850312156131c757600080fd5b60006131d585828601612ff1565b92505060206131e685828601613084565b9150509250929050565b60006020828403121561320257600080fd5b600082013567ffffffffffffffff81111561321c57600080fd5b61322884828501613030565b91505092915050565b60006020828403121561324357600080fd5b60006132518482850161305a565b91505092915050565b60006020828403121561326c57600080fd5b600061327a8482850161306f565b91505092915050565b60006020828403121561329557600080fd5b60006132a384828501613084565b91505092915050565b6000806000606084860312156132c157600080fd5b60006132cf86828701613099565b93505060206132e086828701613099565b92505060406132f186828701613099565b9150509250925092565b60006133078383613322565b60208301905092915050565b61331c81613ad8565b82525050565b61332b81613ac6565b82525050565b61333a81613ac6565b82525050565b600061334b8261396c565b613355818561398f565b93506133608361395c565b8060005b8381101561339157815161337888826132fb565b975061338383613982565b925050600181019050613364565b5085935050505092915050565b6133a781613aea565b82525050565b6133b681613b2d565b82525050565b6133c581613b51565b82525050565b60006133d682613977565b6133e081856139a0565b93506133f0818560208601613b63565b6133f981613c9d565b840191505092915050565b60006134116023836139a0565b915061341c82613cae565b604082019050919050565b6000613434602a836139a0565b915061343f82613cfd565b604082019050919050565b60006134576026836139a0565b915061346282613d4c565b604082019050919050565b600061347a6022836139a0565b915061348582613d9b565b604082019050919050565b600061349d601b836139a0565b91506134a882613dea565b602082019050919050565b60006134c06021836139a0565b91506134cb82613e13565b604082019050919050565b60006134e36020836139a0565b91506134ee82613e62565b602082019050919050565b60006135066029836139a0565b915061351182613e8b565b604082019050919050565b60006135296025836139a0565b915061353482613eda565b604082019050919050565b600061354c6024836139a0565b915061355782613f29565b604082019050919050565b600061356f6017836139a0565b915061357a82613f78565b602082019050919050565b61358e81613b16565b82525050565b61359d81613b20565b82525050565b60006020820190506135b86000830184613331565b92915050565b60006020820190506135d36000830184613313565b92915050565b60006040820190506135ee6000830185613331565b6135fb6020830184613331565b9392505050565b60006040820190506136176000830185613331565b6136246020830184613585565b9392505050565b600060c0820190506136406000830189613331565b61364d6020830188613585565b61365a60408301876133bc565b61366760608301866133bc565b6136746080830185613331565b61368160a0830184613585565b979650505050505050565b60006020820190506136a1600083018461339e565b92915050565b60006020820190506136bc60008301846133ad565b92915050565b600060208201905081810360008301526136dc81846133cb565b905092915050565b600060208201905081810360008301526136fd81613404565b9050919050565b6000602082019050818103600083015261371d81613427565b9050919050565b6000602082019050818103600083015261373d8161344a565b9050919050565b6000602082019050818103600083015261375d8161346d565b9050919050565b6000602082019050818103600083015261377d81613490565b9050919050565b6000602082019050818103600083015261379d816134b3565b9050919050565b600060208201905081810360008301526137bd816134d6565b9050919050565b600060208201905081810360008301526137dd816134f9565b9050919050565b600060208201905081810360008301526137fd8161351c565b9050919050565b6000602082019050818103600083015261381d8161353f565b9050919050565b6000602082019050818103600083015261383d81613562565b9050919050565b60006020820190506138596000830184613585565b92915050565b600060a0820190506138746000830188613585565b61388160208301876133bc565b81810360408301526138938186613340565b90506138a26060830185613331565b6138af6080830184613585565b9695505050505050565b60006060820190506138ce6000830186613585565b6138db6020830185613585565b6138e86040830184613585565b949350505050565b60006020820190506139056000830184613594565b92915050565b6000613915613926565b90506139218282613b96565b919050565b6000604051905090565b600067ffffffffffffffff82111561394b5761394a613c6e565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006139bc82613b16565b91506139c783613b16565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139fc576139fb613c10565b5b828201905092915050565b6000613a1282613b16565b9150613a1d83613b16565b925082613a2d57613a2c613c3f565b5b828204905092915050565b6000613a4382613b16565b9150613a4e83613b16565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a8757613a86613c10565b5b828202905092915050565b6000613a9d82613b16565b9150613aa883613b16565b925082821015613abb57613aba613c10565b5b828203905092915050565b6000613ad182613af6565b9050919050565b6000613ae382613af6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b3882613b3f565b9050919050565b6000613b4a82613af6565b9050919050565b6000613b5c82613b16565b9050919050565b60005b83811015613b81578082015181840152602081019050613b66565b83811115613b90576000848401525b50505050565b613b9f82613c9d565b810181811067ffffffffffffffff82111715613bbe57613bbd613c6e565b5b80604052505050565b6000613bd282613b16565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c0557613c04613c10565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613faa81613ac6565b8114613fb557600080fd5b50565b613fc181613ad8565b8114613fcc57600080fd5b50565b613fd881613aea565b8114613fe357600080fd5b50565b613fef81613b16565b8114613ffa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122045415ae1c9c866b6dfcb99c50a5decc1392f098866bada358915a9d99c1a67b164736f6c63430008040033

Deployed Bytecode Sourcemap

4696:12536:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6616:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7596:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5713:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6893:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7765:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13619:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6802:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5441:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5761:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12844:477;;;;;;;;;;;;;:::i;:::-;;8086:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8332:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15216:193;;;;;;;;;;;;;:::i;:::-;;7124:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3412:103;;;;;;;;;;;;;:::i;:::-;;3198:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6707:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7270:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13335:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8201:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14597:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15010:194;;;;;;;;;;;;;:::i;:::-;;12195:641;;;;;;;;;;;;;:::i;:::-;;7000:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7445:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3523:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14694:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13511:96;;;;;;;;;;;;;:::i;:::-;;5637:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6616:83;6653:13;6686:5;;;;;;;;;;;;;;;;;6679:12;;6616:83;:::o;7596:161::-;7671:4;7688:39;7697:12;:10;:12::i;:::-;7711:7;7720:6;7688:8;:39::i;:::-;7745:4;7738:11;;7596:161;;;;:::o;5713:41::-;;;;;;;;;;;;;:::o;6893:95::-;6946:7;5200:12;6966:14;;6893:95;:::o;7765:313::-;7863:4;7880:36;7890:6;7898:9;7909:6;7880:9;:36::i;:::-;7927:121;7936:6;7944:12;:10;:12::i;:::-;7958:89;7996:6;7958:89;;;;;;;;;;;;;;;;;:11;:19;7970:6;7958:19;;;;;;;;;;;;;;;:33;7978:12;:10;:12::i;:::-;7958:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7927:8;:121::i;:::-;8066:4;8059:11;;7765:313;;;;;:::o;13619:88::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13694:5:::1;13679:4;:12;13684:6;13679:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13619:88:::0;:::o;6802:83::-;6843:5;5628:1;6861:16;;6802:83;:::o;5441:37::-;;;;;;;;;;;;;:::o;5761:28::-;;;;;;;;;;;;;:::o;12844:477::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12914:11:::1;;;;;;;;;;;12913:12;12905:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12963:35;13020:42;12963:100;;13092:16;13074:15;;:34;;;;;;;;;;;;;;;;;;13153:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13135:56;;;13200:4;13207:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13135:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13119:13;;:112;;;;;;;;;;;;;;;;;;13249:13;;;;;;;;;;;13242:29;;;13280:15;;;;;;;;;;;13298:14;13242:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3395:1;12844:477::o:0;8086:103::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8176:5:::1;8158:15;;:23;;;;;;;;;;;;;;;;;;8086:103:::0;:::o;8332:122::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8434:12:::1;8417:14;;:29;;;;;;;;;;;;;;;;;;8332:122:::0;:::o;15216:193::-;15282:14;;;;;;;;;;;15266:30;;:12;:10;:12::i;:::-;:30;;;15258:39;;;;;;15308:26;15337:21;15308:50;;15369:32;15382:18;15369:12;:32::i;:::-;15216:193;:::o;7124:138::-;7190:7;7217:37;7237:7;:16;7245:7;7237:16;;;;;;;;;;;;;;;;7217:19;:37::i;:::-;7210:44;;7124:138;;;:::o;3412:103::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3477:30:::1;3504:1;3477:18;:30::i;:::-;3412:103::o:0;3198:79::-;3236:7;3263:6;;;;;;;;;;;3256:13;;3198:79;:::o;6707:87::-;6746:13;6779:7;;;;;;;;;;;;;;;;;6772:14;;6707:87;:::o;7270:167::-;7348:4;7365:42;7375:12;:10;:12::i;:::-;7389:9;7400:6;7365:9;:42::i;:::-;7425:4;7418:11;;7270:167;;;;:::o;13335:164::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13409:6:::1;13404:88;13425:5;:12;13421:1;:16;13404:88;;;13476:4;13459;:14;13464:5;13470:1;13464:8;;;;;;;;;;;;;;;;;;;;;;13459:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13439:3;;;;;:::i;:::-;;;;13404:88;;;;13335:164:::0;:::o;8201:123::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8296:20:::1;8281:12;:35;;;;8201:123:::0;:::o;14597:89::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14675:3:::1;14660:12;:18;;;;14597:89:::0;:::o;15010:194::-;15076:14;;;;;;;;;;;15060:30;;:12;:10;:12::i;:::-;:30;;;15052:39;;;;;;15102:23;15128:24;15146:4;15128:9;:24::i;:::-;15102:50;;15163:33;15180:15;15163:16;:33::i;:::-;15010:194;:::o;12195:641::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12259:11:::1;;;;;;;;;;;12258:12;12250:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12308:35;12365:42;12308:100;;12437:16;12419:15;;:34;;;;;;;;;;;;;;;;;;12464:58;12481:4;12496:15;;;;;;;;;;;5200:12;12464:8;:58::i;:::-;12533:15;;;;;;;;;;;:31;;;12572:21;12603:4;12609:24;12627:4;12609:9;:24::i;:::-;12634:1;12636::::0;12638:7:::1;:5;:7::i;:::-;12646:15;12533:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12687:4;12673:11;;:18;;;;;;;;;;;;;;;;;;12720:4;12702:15;;:22;;;;;;;;;;;;;;;;;;12750:14;12735:12;:29;;;;12787:12;12775:9;:24;;;;12824:4;12810:11;;:18;;;;;;;;;;;;;;;;;;3395:1;12195:641::o:0;7000:116::-;7065:7;7092;:16;7100:7;7092:16;;;;;;;;;;;;;;;;7085:23;;7000:116;;;:::o;7445:143::-;7526:7;7553:11;:18;7565:5;7553:18;;;;;;;;;;;;;;;:27;7572:7;7553:27;;;;;;;;;;;;;;;;7546:34;;7445:143;;;;:::o;3523:201::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3632:1:::1;3612:22;;:8;:22;;;;3604:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3688:28;3707:8;3688:18;:28::i;:::-;3523:201:::0;:::o;14694:104::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14779:11:::1;14768:8;:22;;;;14694:104:::0;:::o;13511:96::-;3335:12;:10;:12::i;:::-;3325:22;;:6;;;;;;;;;;:22;;;3317:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13585:14:::1;13570:12;:29;;;;13511:96::o:0;5637:24::-;;;;:::o;916:98::-;969:7;996:10;989:17;;916:98;:::o;8724:335::-;8834:1;8817:19;;:5;:19;;;;8809:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8915:1;8896:21;;:7;:21;;;;8888:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8997:6;8967:11;:18;8979:5;8967:18;;;;;;;;;;;;;;;:27;8986:7;8967:27;;;;;;;;;;;;;;;:36;;;;9035:7;9019:32;;9028:5;9019:32;;;9044:6;9019:32;;;;;;:::i;:::-;;;;;;;;8724:335;;;:::o;9067:2513::-;9171:1;9155:18;;:4;:18;;;;9147:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9248:1;9234:16;;:2;:16;;;;9226:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9318:1;9309:6;:10;9301:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9382:20;9422:12;9429:4;9422:6;:12::i;:::-;9417:581;;9472:1;9455:7;:13;9463:4;9455:13;;;;;;;;;;;;;;;;:18;;:86;;;;;9525:15;9512:8;9495:7;:13;9503:4;9495:13;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:45;;9455:86;9451:331;;;9575:1;9563:9;:13;;;;9607:2;9595:9;:14;;;;9643:1;9628:16;;9451:331;;;9697:1;9685:9;:13;;;;9729:2;9717:9;:14;;;;9765:1;9750:16;;9451:331;9417:581;;;9833:1;9818:7;:11;9826:2;9818:11;;;;;;;;;;;;;;;;:16;9814:86;;;9869:15;9855:7;:11;9863:2;9855:11;;;;;;;;;;;;;;;:29;;;;9814:86;9926:1;9914:9;:13;;;;9954:1;9942:9;:13;;;;9985:1;9970:16;;9417:581;10013:18;:24;10032:4;10013:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10041:18;:22;10060:2;10041:22;;;;;;;;;;;;;;;;;;;;;;;;;10013:50;10010:153;;;10091:1;10079:9;:13;;;;10119:1;10107:9;:13;;;;10150:1;10135:16;;10010:153;10195:7;:5;:7::i;:::-;10187:15;;:4;:15;;;;:32;;;;;10212:7;:5;:7::i;:::-;10206:13;;:2;:13;;;;10187:32;10183:1107;;;10245:4;:10;10250:4;10245:10;;;;;;;;;;;;;;;;;;;;;;;;;10244:11;:24;;;;;10260:4;:8;10265:2;10260:8;;;;;;;;;;;;;;;;;;;;;;;;;10259:9;10244:24;10236:33;;;;;;10298:13;;;;;;;;;;;10290:21;;:4;:21;;;:55;;;;;10329:15;;;;;;;;;;;10315:30;;:2;:30;;;;10290:55;:83;;;;;10351:18;:22;10370:2;10351:22;;;;;;;;;;;;;;;;;;;;;;;;;10349:24;10290:83;:102;;;;;10377:15;;;;;;;;;;;10290:102;10286:325;;;10460:12;;10450:6;:22;;10442:31;;;;;;10515:15;10500:8;:12;10509:2;10500:12;;;;;;;;;;;;;;;;:30;10492:39;;;;;;10584:10;10565:15;:30;;;;:::i;:::-;10550:8;:12;10559:2;10550:12;;;;;;;;;;;;;;;:45;;;;10286:325;10639:28;10670:24;10688:4;10670:9;:24::i;:::-;10639:55;;10714:6;;;;;;;;;;;10713:7;:32;;;;;10732:13;;;;;;;;;;;10724:21;;:4;:21;;;;10713:32;:47;;;;;10749:11;;;;;;;;;;;10713:47;10709:570;;;10781:23;10807:9;;10781:35;;10835:23;10861:9;;10835:35;;10889:38;10906:20;10889:16;:38::i;:::-;10946:26;10975:21;10946:50;;11039:1;11018:18;:22;11015:157;;;11065:35;11078:21;11065:12;:35::i;:::-;11134:18;11123:8;:29;;;;11015:157;11202:15;11190:9;:27;;;;11248:15;11236:9;:27;;;;10709:570;;;;10183:1107;;11333:12;11322:8;;11310:9;;:20;;;;:::i;:::-;:35;11309:62;;;;;11358:13;;;;;;;;;;;11350:21;;:4;:21;;;11309:62;11305:187;;;11388:27;11403:4;11409:2;11413:1;11388:14;:27::i;:::-;11305:187;;;11447:32;11462:4;11468:2;11472:6;11447:14;:32::i;:::-;11305:187;11507:44;11520:8;;11530:12;11544:6;11507:44;;;;;;;;:::i;:::-;;;;;;;;11571:1;11562:8;:10;;;;9067:2513;;;;:::o;2053:190::-;2139:7;2172:1;2167;:6;;2175:12;2159:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2199:9;2215:1;2211;:5;;;;:::i;:::-;2199:17;;2234:1;2227:8;;;2053:190;;;;;:::o;12087:96::-;12144:14;;;;;;;;;;;:23;;:31;12168:6;12144:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12087:96;:::o;8462:254::-;8529:7;8568;;8557;:18;;8549:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8633:19;8656:10;:8;:10::i;:::-;8633:33;;8684:24;8696:11;8684:7;:11;;:24;;;;:::i;:::-;8677:31;;;8462:254;;;:::o;3732:191::-;3806:16;3825:6;;;;;;;;;;;3806:25;;3851:8;3842:6;;:17;;;;;;;;;;;;;;;;;;3906:8;3875:40;;3896:8;3875:40;;;;;;;;;;;;3732:191;;:::o;11588:483::-;6161:4;6152:6;;:13;;;;;;;;;;;;;;;;;;11666:21:::1;11704:1;11690:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11666:40;;11735:4;11717;11722:1;11717:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;11761:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11751:4;11756:1;11751:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;11794:62;11811:4;11826:15;;;;;;;;;;;11844:11;11794:8;:62::i;:::-;11867:15;;;;;;;;;;;:66;;;11948:11;11974:1;11990:4;12017;12037:15;11867:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6176:1;6197:5:::0;6188:6;;:14;;;;;;;;;;;;;;;;;;11588:483;:::o;16678:111::-;16733:4;16768:13;;;;;;;;;;;16757:24;;:7;:24;;;16750:31;;16678:111;;;:::o;13723:146::-;13817:44;13835:6;13843:9;13854:6;13817:17;:44::i;:::-;13723:146;;;:::o;16796:163::-;16837:7;16858:15;16875;16894:19;:17;:19::i;:::-;16857:56;;;;16931:20;16943:7;16931;:11;;:20;;;;:::i;:::-;16924:27;;;;16796:163;:::o;2505:132::-;2563:7;2590:39;2594:1;2597;2590:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2583:46;;2505:132;;;;:::o;13877:488::-;13976:15;13993:23;14018:12;14032:23;14057:12;14071:13;14088:19;14099:7;14088:10;:19::i;:::-;13975:132;;;;;;;;;;;;14136:28;14156:7;14136;:15;14144:6;14136:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14118:7;:15;14126:6;14118:15;;;;;;;;;;;;;;;:46;;;;14196:39;14219:15;14196:7;:18;14204:9;14196:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14175:7;:18;14183:9;14175:18;;;;;;;;;;;;;;;:60;;;;14247:16;14257:5;14247:9;:16::i;:::-;14274:23;14286:4;14292;14274:11;:23::i;:::-;14330:9;14313:44;;14322:6;14313:44;;;14341:15;14313:44;;;;;;:::i;:::-;;;;;;;;13877:488;;;;;;;;;:::o;16967:262::-;17017:7;17026;17046:15;17064:7;;17046:25;;17082:15;5200:12;17082:25;;17138:20;5200:12;17138:7;;:11;;:20;;;;:::i;:::-;17128:7;:30;17124:61;;;17168:7;;5200:12;17160:25;;;;;;;;17124:61;17204:7;17213;17196:25;;;;;;16967:262;;;:::o;2645:189::-;2731:7;2763:1;2759;:5;2766:12;2751:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2790:9;2806:1;2802;:5;;;;:::i;:::-;2790:17;;2825:1;2818:8;;;2645:189;;;;;:::o;15423:471::-;15482:7;15491;15500;15509;15518;15527;15548:23;15573:12;15587:13;15604:42;15616:7;15625:9;;15636;;15604:11;:42::i;:::-;15547:99;;;;;;15657:19;15680:10;:8;:10::i;:::-;15657:33;;15702:15;15719:23;15744:12;15760:46;15772:7;15781:4;15787:5;15794:11;15760;:46::i;:::-;15701:105;;;;;;15825:7;15834:15;15851:4;15857:15;15874:4;15880:5;15817:69;;;;;;;;;;;;;;;;;;;15423:471;;;;;;;:::o;1909:136::-;1967:7;1994:43;1998:1;2001;1994:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1987:50;;1909:136;;;;:::o;1722:179::-;1780:7;1800:9;1816:1;1812;:5;;;;:::i;:::-;1800:17;;1841:1;1836;:6;;1828:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1892:1;1885:8;;;1722:179;;;;:::o;14373:212::-;14426:19;14449:10;:8;:10::i;:::-;14426:33;;14470:13;14486:22;14496:11;14486:5;:9;;:22;;;;:::i;:::-;14470:38;;14544:33;14571:5;14544:7;:22;14560:4;14544:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14519:7;:22;14535:4;14519:22;;;;;;;;;;;;;;;:58;;;;14373:212;;;:::o;14814:147::-;14892:17;14904:4;14892:7;;:11;;:17;;;;:::i;:::-;14882:7;:27;;;;14933:20;14948:4;14933:10;;:14;;:20;;;;:::i;:::-;14920:10;:33;;;;14814:147;;:::o;15902:351::-;15995:7;16004;16013;16033:12;16048:28;16072:3;16048:19;16060:6;16048:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16033:43;;16087:13;16103:29;16128:3;16103:20;16115:7;16103;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16087:45;;16143:23;16169:28;16191:5;16169:17;16181:4;16169:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16143:54;;16216:15;16233:4;16239:5;16208:37;;;;;;;;;15902:351;;;;;;;:::o;16261:409::-;16371:7;16380;16389;16409:15;16427:24;16439:11;16427:7;:11;;:24;;;;:::i;:::-;16409:42;;16462:12;16477:21;16486:11;16477:4;:8;;:21;;;;:::i;:::-;16462:36;;16509:13;16525:22;16535:11;16525:5;:9;;:22;;;;:::i;:::-;16509:38;;16558:23;16584:28;16606:5;16584:17;16596:4;16584:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16558:54;;16631:7;16640:15;16657:4;16623:39;;;;;;;;;;16261:409;;;;;;;;:::o;2251:246::-;2309:7;2338:1;2333;:6;2329:47;;;2363:1;2356:8;;;;2329:47;2386:9;2402:1;2398;:5;;;;:::i;:::-;2386:17;;2431:1;2426;2422;:5;;;;:::i;:::-;:10;2414:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2488:1;2481:8;;;2251:246;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;979:155::-;1033:5;1071:6;1058:20;1049:29;;1087:41;1122:5;1087:41;:::i;:::-;1039:95;;;;:::o;1157:303::-;1228:5;1277:3;1270:4;1262:6;1258:17;1254:27;1244:2;;1295:1;1292;1285:12;1244:2;1335:6;1322:20;1360:94;1450:3;1442:6;1435:4;1427:6;1423:17;1360:94;:::i;:::-;1351:103;;1234:226;;;;;:::o;1466:133::-;1509:5;1547:6;1534:20;1525:29;;1563:30;1587:5;1563:30;:::i;:::-;1515:84;;;;:::o;1605:137::-;1659:5;1690:6;1684:13;1675:22;;1706:30;1730:5;1706:30;:::i;:::-;1665:77;;;;:::o;1748:139::-;1794:5;1832:6;1819:20;1810:29;;1848:33;1875:5;1848:33;:::i;:::-;1800:87;;;;:::o;1893:143::-;1950:5;1981:6;1975:13;1966:22;;1997:33;2024:5;1997:33;:::i;:::-;1956:80;;;;:::o;2042:262::-;2101:6;2150:2;2138:9;2129:7;2125:23;2121:32;2118:2;;;2166:1;2163;2156:12;2118:2;2209:1;2234:53;2279:7;2270:6;2259:9;2255:22;2234:53;:::i;:::-;2224:63;;2180:117;2108:196;;;;:::o;2310:284::-;2380:6;2429:2;2417:9;2408:7;2404:23;2400:32;2397:2;;;2445:1;2442;2435:12;2397:2;2488:1;2513:64;2569:7;2560:6;2549:9;2545:22;2513:64;:::i;:::-;2503:74;;2459:128;2387:207;;;;:::o;2600:278::-;2667:6;2716:2;2704:9;2695:7;2691:23;2687:32;2684:2;;;2732:1;2729;2722:12;2684:2;2775:1;2800:61;2853:7;2844:6;2833:9;2829:22;2800:61;:::i;:::-;2790:71;;2746:125;2674:204;;;;:::o;2884:407::-;2952:6;2960;3009:2;2997:9;2988:7;2984:23;2980:32;2977:2;;;3025:1;3022;3015:12;2977:2;3068:1;3093:53;3138:7;3129:6;3118:9;3114:22;3093:53;:::i;:::-;3083:63;;3039:117;3195:2;3221:53;3266:7;3257:6;3246:9;3242:22;3221:53;:::i;:::-;3211:63;;3166:118;2967:324;;;;;:::o;3297:552::-;3374:6;3382;3390;3439:2;3427:9;3418:7;3414:23;3410:32;3407:2;;;3455:1;3452;3445:12;3407:2;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3625:2;3651:53;3696:7;3687:6;3676:9;3672:22;3651:53;:::i;:::-;3641:63;;3596:118;3753:2;3779:53;3824:7;3815:6;3804:9;3800:22;3779:53;:::i;:::-;3769:63;;3724:118;3397:452;;;;;:::o;3855:407::-;3923:6;3931;3980:2;3968:9;3959:7;3955:23;3951:32;3948:2;;;3996:1;3993;3986:12;3948:2;4039:1;4064:53;4109:7;4100:6;4089:9;4085:22;4064:53;:::i;:::-;4054:63;;4010:117;4166:2;4192:53;4237:7;4228:6;4217:9;4213:22;4192:53;:::i;:::-;4182:63;;4137:118;3938:324;;;;;:::o;4268:405::-;4352:6;4401:2;4389:9;4380:7;4376:23;4372:32;4369:2;;;4417:1;4414;4407:12;4369:2;4488:1;4477:9;4473:17;4460:31;4518:18;4510:6;4507:30;4504:2;;;4550:1;4547;4540:12;4504:2;4578:78;4648:7;4639:6;4628:9;4624:22;4578:78;:::i;:::-;4568:88;;4431:235;4359:314;;;;:::o;4679:256::-;4735:6;4784:2;4772:9;4763:7;4759:23;4755:32;4752:2;;;4800:1;4797;4790:12;4752:2;4843:1;4868:50;4910:7;4901:6;4890:9;4886:22;4868:50;:::i;:::-;4858:60;;4814:114;4742:193;;;;:::o;4941:278::-;5008:6;5057:2;5045:9;5036:7;5032:23;5028:32;5025:2;;;5073:1;5070;5063:12;5025:2;5116:1;5141:61;5194:7;5185:6;5174:9;5170:22;5141:61;:::i;:::-;5131:71;;5087:125;5015:204;;;;:::o;5225:262::-;5284:6;5333:2;5321:9;5312:7;5308:23;5304:32;5301:2;;;5349:1;5346;5339:12;5301:2;5392:1;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5363:117;5291:196;;;;:::o;5493:596::-;5581:6;5589;5597;5646:2;5634:9;5625:7;5621:23;5617:32;5614:2;;;5662:1;5659;5652:12;5614:2;5705:1;5730:64;5786:7;5777:6;5766:9;5762:22;5730:64;:::i;:::-;5720:74;;5676:128;5843:2;5869:64;5925:7;5916:6;5905:9;5901:22;5869:64;:::i;:::-;5859:74;;5814:129;5982:2;6008:64;6064:7;6055:6;6044:9;6040:22;6008:64;:::i;:::-;5998:74;;5953:129;5604:485;;;;;:::o;6095:179::-;6164:10;6185:46;6227:3;6219:6;6185:46;:::i;:::-;6263:4;6258:3;6254:14;6240:28;;6175:99;;;;:::o;6280:142::-;6383:32;6409:5;6383:32;:::i;:::-;6378:3;6371:45;6361:61;;:::o;6428:108::-;6505:24;6523:5;6505:24;:::i;:::-;6500:3;6493:37;6483:53;;:::o;6542:118::-;6629:24;6647:5;6629:24;:::i;:::-;6624:3;6617:37;6607:53;;:::o;6696:732::-;6815:3;6844:54;6892:5;6844:54;:::i;:::-;6914:86;6993:6;6988:3;6914:86;:::i;:::-;6907:93;;7024:56;7074:5;7024:56;:::i;:::-;7103:7;7134:1;7119:284;7144:6;7141:1;7138:13;7119:284;;;7220:6;7214:13;7247:63;7306:3;7291:13;7247:63;:::i;:::-;7240:70;;7333:60;7386:6;7333:60;:::i;:::-;7323:70;;7179:224;7166:1;7163;7159:9;7154:14;;7119:284;;;7123:14;7419:3;7412:10;;6820:608;;;;;;;:::o;7434:109::-;7515:21;7530:5;7515:21;:::i;:::-;7510:3;7503:34;7493:50;;:::o;7549:183::-;7662:63;7719:5;7662:63;:::i;:::-;7657:3;7650:76;7640:92;;:::o;7738:147::-;7833:45;7872:5;7833:45;:::i;:::-;7828:3;7821:58;7811:74;;:::o;7891:364::-;7979:3;8007:39;8040:5;8007:39;:::i;:::-;8062:71;8126:6;8121:3;8062:71;:::i;:::-;8055:78;;8142:52;8187:6;8182:3;8175:4;8168:5;8164:16;8142:52;:::i;:::-;8219:29;8241:6;8219:29;:::i;:::-;8214:3;8210:39;8203:46;;7983:272;;;;;:::o;8261:366::-;8403:3;8424:67;8488:2;8483:3;8424:67;:::i;:::-;8417:74;;8500:93;8589:3;8500:93;:::i;:::-;8618:2;8613:3;8609:12;8602:19;;8407:220;;;:::o;8633:366::-;8775:3;8796:67;8860:2;8855:3;8796:67;:::i;:::-;8789:74;;8872:93;8961:3;8872:93;:::i;:::-;8990:2;8985:3;8981:12;8974:19;;8779:220;;;:::o;9005:366::-;9147:3;9168:67;9232:2;9227:3;9168:67;:::i;:::-;9161:74;;9244:93;9333:3;9244:93;:::i;:::-;9362:2;9357:3;9353:12;9346:19;;9151:220;;;:::o;9377:366::-;9519:3;9540:67;9604:2;9599:3;9540:67;:::i;:::-;9533:74;;9616:93;9705:3;9616:93;:::i;:::-;9734:2;9729:3;9725:12;9718:19;;9523:220;;;:::o;9749:366::-;9891:3;9912:67;9976:2;9971:3;9912:67;:::i;:::-;9905:74;;9988:93;10077:3;9988:93;:::i;:::-;10106:2;10101:3;10097:12;10090:19;;9895:220;;;:::o;10121:366::-;10263:3;10284:67;10348:2;10343:3;10284:67;:::i;:::-;10277:74;;10360:93;10449:3;10360:93;:::i;:::-;10478:2;10473:3;10469:12;10462:19;;10267:220;;;:::o;10493:366::-;10635:3;10656:67;10720:2;10715:3;10656:67;:::i;:::-;10649:74;;10732:93;10821:3;10732:93;:::i;:::-;10850:2;10845:3;10841:12;10834:19;;10639:220;;;:::o;10865:366::-;11007:3;11028:67;11092:2;11087:3;11028:67;:::i;:::-;11021:74;;11104:93;11193:3;11104:93;:::i;:::-;11222:2;11217:3;11213:12;11206:19;;11011:220;;;:::o;11237:366::-;11379:3;11400:67;11464:2;11459:3;11400:67;:::i;:::-;11393:74;;11476:93;11565:3;11476:93;:::i;:::-;11594:2;11589:3;11585:12;11578:19;;11383:220;;;:::o;11609:366::-;11751:3;11772:67;11836:2;11831:3;11772:67;:::i;:::-;11765:74;;11848:93;11937:3;11848:93;:::i;:::-;11966:2;11961:3;11957:12;11950:19;;11755:220;;;:::o;11981:366::-;12123:3;12144:67;12208:2;12203:3;12144:67;:::i;:::-;12137:74;;12220:93;12309:3;12220:93;:::i;:::-;12338:2;12333:3;12329:12;12322:19;;12127:220;;;:::o;12353:118::-;12440:24;12458:5;12440:24;:::i;:::-;12435:3;12428:37;12418:53;;:::o;12477:112::-;12560:22;12576:5;12560:22;:::i;:::-;12555:3;12548:35;12538:51;;:::o;12595:222::-;12688:4;12726:2;12715:9;12711:18;12703:26;;12739:71;12807:1;12796:9;12792:17;12783:6;12739:71;:::i;:::-;12693:124;;;;:::o;12823:254::-;12932:4;12970:2;12959:9;12955:18;12947:26;;12983:87;13067:1;13056:9;13052:17;13043:6;12983:87;:::i;:::-;12937:140;;;;:::o;13083:332::-;13204:4;13242:2;13231:9;13227:18;13219:26;;13255:71;13323:1;13312:9;13308:17;13299:6;13255:71;:::i;:::-;13336:72;13404:2;13393:9;13389:18;13380:6;13336:72;:::i;:::-;13209:206;;;;;:::o;13421:332::-;13542:4;13580:2;13569:9;13565:18;13557:26;;13593:71;13661:1;13650:9;13646:17;13637:6;13593:71;:::i;:::-;13674:72;13742:2;13731:9;13727:18;13718:6;13674:72;:::i;:::-;13547:206;;;;;:::o;13759:807::-;14008:4;14046:3;14035:9;14031:19;14023:27;;14060:71;14128:1;14117:9;14113:17;14104:6;14060:71;:::i;:::-;14141:72;14209:2;14198:9;14194:18;14185:6;14141:72;:::i;:::-;14223:80;14299:2;14288:9;14284:18;14275:6;14223:80;:::i;:::-;14313;14389:2;14378:9;14374:18;14365:6;14313:80;:::i;:::-;14403:73;14471:3;14460:9;14456:19;14447:6;14403:73;:::i;:::-;14486;14554:3;14543:9;14539:19;14530:6;14486:73;:::i;:::-;14013:553;;;;;;;;;:::o;14572:210::-;14659:4;14697:2;14686:9;14682:18;14674:26;;14710:65;14772:1;14761:9;14757:17;14748:6;14710:65;:::i;:::-;14664:118;;;;:::o;14788:274::-;14907:4;14945:2;14934:9;14930:18;14922:26;;14958:97;15052:1;15041:9;15037:17;15028:6;14958:97;:::i;:::-;14912:150;;;;:::o;15068:313::-;15181:4;15219:2;15208:9;15204:18;15196:26;;15268:9;15262:4;15258:20;15254:1;15243:9;15239:17;15232:47;15296:78;15369:4;15360:6;15296:78;:::i;:::-;15288:86;;15186:195;;;;:::o;15387:419::-;15553:4;15591:2;15580:9;15576:18;15568:26;;15640:9;15634:4;15630:20;15626:1;15615:9;15611:17;15604:47;15668:131;15794:4;15668:131;:::i;:::-;15660:139;;15558:248;;;:::o;15812:419::-;15978:4;16016:2;16005:9;16001:18;15993:26;;16065:9;16059:4;16055:20;16051:1;16040:9;16036:17;16029:47;16093:131;16219:4;16093:131;:::i;:::-;16085:139;;15983:248;;;:::o;16237:419::-;16403:4;16441:2;16430:9;16426:18;16418:26;;16490:9;16484:4;16480:20;16476:1;16465:9;16461:17;16454:47;16518:131;16644:4;16518:131;:::i;:::-;16510:139;;16408:248;;;:::o;16662:419::-;16828:4;16866:2;16855:9;16851:18;16843:26;;16915:9;16909:4;16905:20;16901:1;16890:9;16886:17;16879:47;16943:131;17069:4;16943:131;:::i;:::-;16935:139;;16833:248;;;:::o;17087:419::-;17253:4;17291:2;17280:9;17276:18;17268:26;;17340:9;17334:4;17330:20;17326:1;17315:9;17311:17;17304:47;17368:131;17494:4;17368:131;:::i;:::-;17360:139;;17258:248;;;:::o;17512:419::-;17678:4;17716:2;17705:9;17701:18;17693:26;;17765:9;17759:4;17755:20;17751:1;17740:9;17736:17;17729:47;17793:131;17919:4;17793:131;:::i;:::-;17785:139;;17683:248;;;:::o;17937:419::-;18103:4;18141:2;18130:9;18126:18;18118:26;;18190:9;18184:4;18180:20;18176:1;18165:9;18161:17;18154:47;18218:131;18344:4;18218:131;:::i;:::-;18210:139;;18108:248;;;:::o;18362:419::-;18528:4;18566:2;18555:9;18551:18;18543:26;;18615:9;18609:4;18605:20;18601:1;18590:9;18586:17;18579:47;18643:131;18769:4;18643:131;:::i;:::-;18635:139;;18533:248;;;:::o;18787:419::-;18953:4;18991:2;18980:9;18976:18;18968:26;;19040:9;19034:4;19030:20;19026:1;19015:9;19011:17;19004:47;19068:131;19194:4;19068:131;:::i;:::-;19060:139;;18958:248;;;:::o;19212:419::-;19378:4;19416:2;19405:9;19401:18;19393:26;;19465:9;19459:4;19455:20;19451:1;19440:9;19436:17;19429:47;19493:131;19619:4;19493:131;:::i;:::-;19485:139;;19383:248;;;:::o;19637:419::-;19803:4;19841:2;19830:9;19826:18;19818:26;;19890:9;19884:4;19880:20;19876:1;19865:9;19861:17;19854:47;19918:131;20044:4;19918:131;:::i;:::-;19910:139;;19808:248;;;:::o;20062:222::-;20155:4;20193:2;20182:9;20178:18;20170:26;;20206:71;20274:1;20263:9;20259:17;20250:6;20206:71;:::i;:::-;20160:124;;;;:::o;20290:831::-;20553:4;20591:3;20580:9;20576:19;20568:27;;20605:71;20673:1;20662:9;20658:17;20649:6;20605:71;:::i;:::-;20686:80;20762:2;20751:9;20747:18;20738:6;20686:80;:::i;:::-;20813:9;20807:4;20803:20;20798:2;20787:9;20783:18;20776:48;20841:108;20944:4;20935:6;20841:108;:::i;:::-;20833:116;;20959:72;21027:2;21016:9;21012:18;21003:6;20959:72;:::i;:::-;21041:73;21109:3;21098:9;21094:19;21085:6;21041:73;:::i;:::-;20558:563;;;;;;;;:::o;21127:442::-;21276:4;21314:2;21303:9;21299:18;21291:26;;21327:71;21395:1;21384:9;21380:17;21371:6;21327:71;:::i;:::-;21408:72;21476:2;21465:9;21461:18;21452:6;21408:72;:::i;:::-;21490;21558:2;21547:9;21543:18;21534:6;21490:72;:::i;:::-;21281:288;;;;;;:::o;21575:214::-;21664:4;21702:2;21691:9;21687:18;21679:26;;21715:67;21779:1;21768:9;21764:17;21755:6;21715:67;:::i;:::-;21669:120;;;;:::o;21795:129::-;21829:6;21856:20;;:::i;:::-;21846:30;;21885:33;21913:4;21905:6;21885:33;:::i;:::-;21836:88;;;:::o;21930:75::-;21963:6;21996:2;21990:9;21980:19;;21970:35;:::o;22011:311::-;22088:4;22178:18;22170:6;22167:30;22164:2;;;22200:18;;:::i;:::-;22164:2;22250:4;22242:6;22238:17;22230:25;;22310:4;22304;22300:15;22292:23;;22093:229;;;:::o;22328:132::-;22395:4;22418:3;22410:11;;22448:4;22443:3;22439:14;22431:22;;22400:60;;;:::o;22466:114::-;22533:6;22567:5;22561:12;22551:22;;22540:40;;;:::o;22586:99::-;22638:6;22672:5;22666:12;22656:22;;22645:40;;;:::o;22691:113::-;22761:4;22793;22788:3;22784:14;22776:22;;22766:38;;;:::o;22810:184::-;22909:11;22943:6;22938:3;22931:19;22983:4;22978:3;22974:14;22959:29;;22921:73;;;;:::o;23000:169::-;23084:11;23118:6;23113:3;23106:19;23158:4;23153:3;23149:14;23134:29;;23096:73;;;;:::o;23175:305::-;23215:3;23234:20;23252:1;23234:20;:::i;:::-;23229:25;;23268:20;23286:1;23268:20;:::i;:::-;23263:25;;23422:1;23354:66;23350:74;23347:1;23344:81;23341:2;;;23428:18;;:::i;:::-;23341:2;23472:1;23469;23465:9;23458:16;;23219:261;;;;:::o;23486:185::-;23526:1;23543:20;23561:1;23543:20;:::i;:::-;23538:25;;23577:20;23595:1;23577:20;:::i;:::-;23572:25;;23616:1;23606:2;;23621:18;;:::i;:::-;23606:2;23663:1;23660;23656:9;23651:14;;23528:143;;;;:::o;23677:348::-;23717:7;23740:20;23758:1;23740:20;:::i;:::-;23735:25;;23774:20;23792:1;23774:20;:::i;:::-;23769:25;;23962:1;23894:66;23890:74;23887:1;23884:81;23879:1;23872:9;23865:17;23861:105;23858:2;;;23969:18;;:::i;:::-;23858:2;24017:1;24014;24010:9;23999:20;;23725:300;;;;:::o;24031:191::-;24071:4;24091:20;24109:1;24091:20;:::i;:::-;24086:25;;24125:20;24143:1;24125:20;:::i;:::-;24120:25;;24164:1;24161;24158:8;24155:2;;;24169:18;;:::i;:::-;24155:2;24214:1;24211;24207:9;24199:17;;24076:146;;;;:::o;24228:96::-;24265:7;24294:24;24312:5;24294:24;:::i;:::-;24283:35;;24273:51;;;:::o;24330:104::-;24375:7;24404:24;24422:5;24404:24;:::i;:::-;24393:35;;24383:51;;;:::o;24440:90::-;24474:7;24517:5;24510:13;24503:21;24492:32;;24482:48;;;:::o;24536:126::-;24573:7;24613:42;24606:5;24602:54;24591:65;;24581:81;;;:::o;24668:77::-;24705:7;24734:5;24723:16;;24713:32;;;:::o;24751:86::-;24786:7;24826:4;24819:5;24815:16;24804:27;;24794:43;;;:::o;24843:178::-;24919:9;24952:63;25009:5;24952:63;:::i;:::-;24939:76;;24929:92;;;:::o;25027:139::-;25103:9;25136:24;25154:5;25136:24;:::i;:::-;25123:37;;25113:53;;;:::o;25172:121::-;25230:9;25263:24;25281:5;25263:24;:::i;:::-;25250:37;;25240:53;;;:::o;25299:307::-;25367:1;25377:113;25391:6;25388:1;25385:13;25377:113;;;25476:1;25471:3;25467:11;25461:18;25457:1;25452:3;25448:11;25441:39;25413:2;25410:1;25406:10;25401:15;;25377:113;;;25508:6;25505:1;25502:13;25499:2;;;25588:1;25579:6;25574:3;25570:16;25563:27;25499:2;25348:258;;;;:::o;25612:281::-;25695:27;25717:4;25695:27;:::i;:::-;25687:6;25683:40;25825:6;25813:10;25810:22;25789:18;25777:10;25774:34;25771:62;25768:2;;;25836:18;;:::i;:::-;25768:2;25876:10;25872:2;25865:22;25655:238;;;:::o;25899:233::-;25938:3;25961:24;25979:5;25961:24;:::i;:::-;25952:33;;26007:66;26000:5;25997:77;25994:2;;;26077:18;;:::i;:::-;25994:2;26124:1;26117:5;26113:13;26106:20;;25942:190;;;:::o;26138:180::-;26186:77;26183:1;26176:88;26283:4;26280:1;26273:15;26307:4;26304:1;26297:15;26324:180;26372:77;26369:1;26362:88;26469:4;26466:1;26459:15;26493:4;26490:1;26483:15;26510:180;26558:77;26555:1;26548:88;26655:4;26652:1;26645:15;26679:4;26676:1;26669:15;26696:102;26737:6;26788:2;26784:7;26779:2;26772:5;26768:14;26764:28;26754:38;;26744:54;;;:::o;26804:222::-;26944:34;26940:1;26932:6;26928:14;26921:58;27013:5;27008:2;27000:6;26996:15;26989:30;26910:116;:::o;27032:229::-;27172:34;27168:1;27160:6;27156:14;27149:58;27241:12;27236:2;27228:6;27224:15;27217:37;27138:123;:::o;27267:225::-;27407:34;27403:1;27395:6;27391:14;27384:58;27476:8;27471:2;27463:6;27459:15;27452:33;27373:119;:::o;27498:221::-;27638:34;27634:1;27626:6;27622:14;27615:58;27707:4;27702:2;27694:6;27690:15;27683:29;27604:115;:::o;27725:177::-;27865:29;27861:1;27853:6;27849:14;27842:53;27831:71;:::o;27908:220::-;28048:34;28044:1;28036:6;28032:14;28025:58;28117:3;28112:2;28104:6;28100:15;28093:28;28014:114;:::o;28134:182::-;28274:34;28270:1;28262:6;28258:14;28251:58;28240:76;:::o;28322:228::-;28462:34;28458:1;28450:6;28446:14;28439:58;28531:11;28526:2;28518:6;28514:15;28507:36;28428:122;:::o;28556:224::-;28696:34;28692:1;28684:6;28680:14;28673:58;28765:7;28760:2;28752:6;28748:15;28741:32;28662:118;:::o;28786:223::-;28926:34;28922:1;28914:6;28910:14;28903:58;28995:6;28990:2;28982:6;28978:15;28971:31;28892:117;:::o;29015:173::-;29155:25;29151:1;29143:6;29139:14;29132:49;29121:67;:::o;29194:122::-;29267:24;29285:5;29267:24;:::i;:::-;29260:5;29257:35;29247:2;;29306:1;29303;29296:12;29247:2;29237:79;:::o;29322:138::-;29403:32;29429:5;29403:32;:::i;:::-;29396:5;29393:43;29383:2;;29450:1;29447;29440:12;29383:2;29373:87;:::o;29466:116::-;29536:21;29551:5;29536:21;:::i;:::-;29529:5;29526:32;29516:2;;29572:1;29569;29562:12;29516:2;29506:76;:::o;29588:122::-;29661:24;29679:5;29661:24;:::i;:::-;29654:5;29651:35;29641:2;;29700:1;29697;29690:12;29641:2;29631:79;:::o

Swarm Source

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