ETH Price: $3,255.69 (-4.54%)
Gas: 9 Gwei

Token

GARGA (GAG)
 

Overview

Max Total Supply

10,000,000,000,000 GAG

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
475.474289813868936613 GAG

Value
$0.00
0x59cFF8E3d2E31704948D2adf893Fcae795bFDD12
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:
GARGA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-06
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.19;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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


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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

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

contract GARGA is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
  
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 10000000000000 * (10**18);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "GARGA";
    string private _symbol = "GAG";
    uint8 private _decimals = 18;
    
    uint256 public _taxFee = 3;
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 public _marketingFee = 2;
    uint256 private _previousMarketingFee = _marketingFee;
    address public marketingWallet = 0x685bda2F898C083D29744A16d9e2e5090e69dabF;

    uint256 public _maxTxAmount = 10000000000000 * 10**18;
    
    constructor() {
        _rOwned[owner()] = _rTotal;
        
        //exclude owner, marketing from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        
        emit Transfer(address(0), owner(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

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

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

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

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

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

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }
    
    function removeAllFee() private {
        if(_taxFee == 0 && _marketingFee==0) return;
        
        _previousTaxFee = _taxFee;
        _previousMarketingFee = _marketingFee;
        
        _taxFee = 0;
        _marketingFee = 0;
    }
    
    function restoreAllFee() private {
       _taxFee = _previousTaxFee;
       _marketingFee = _previousMarketingFee;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    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(amount > 0, "Transfer amount must be greater than zero");
        
        //transfer amount, it will take tax, marketing fee
        _tokenTransfer(from,to,amount);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount) private 
    {
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient])
        {   
           removeAllFee(); 
        }
        else  
        {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient])
        {
            restoreAllFee();
        }
    }



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


    function takeMarketing(address sender, uint256 tTransferAmount, uint256 rTransferAmount, uint256 tAmount) private
    returns (uint256, uint256)
    {
        if(_marketingFee==0) {  return(tTransferAmount, rTransferAmount); }
        uint256 tMarketing = tAmount.div(100).mul(_marketingFee);
        uint256 rMarketing = tMarketing.mul(_getRate());
        rTransferAmount = rTransferAmount.sub(rMarketing);
        tTransferAmount = tTransferAmount.sub(tMarketing);
        _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rMarketing);
        emit Transfer(sender, marketingWallet, tMarketing);
        return(tTransferAmount, rTransferAmount);
    }

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

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

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setMarketingWallet(address newWallet) external onlyOwner() {
        marketingWallet = newWallet;
    }

    function setFeePercent(uint256 taxFee, uint256 marketingFee) external onlyOwner() {
       require(taxFee.add(marketingFee) <= 5, "tax too high");
        _taxFee = taxFee;
        _marketingFee = marketingFee;
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

60806040526c7e37be2022c0914b2680000000600855600854600019620000279190620004b4565b6000196200003691906200051b565b6009556040518060400160405280600581526020017f4741524741000000000000000000000000000000000000000000000000000000815250600b90816200007f9190620007c6565b506040518060400160405280600381526020017f4741470000000000000000000000000000000000000000000000000000000000815250600c9081620000c69190620007c6565b506012600d60006101000a81548160ff021916908360ff1602179055506003600e55600e54600f55600260105560105460115573685bda2f898c083d29744a16d9e2e5090e69dabf601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506c7e37be2022c0914b26800000006013553480156200016c57600080fd5b5060006200017f6200044a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060095460026000620002ac6200045260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620003006200045260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003db6200045260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516200043c9190620008be565b60405180910390a3620008db565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004c1826200047b565b9150620004ce836200047b565b925082620004e157620004e062000485565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000528826200047b565b915062000535836200047b565b925082820390508181111562000550576200054f620004ec565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005d857607f821691505b602082108103620005ee57620005ed62000590565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000619565b62000664868362000619565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620006a7620006a16200069b846200047b565b6200067c565b6200047b565b9050919050565b6000819050919050565b620006c38362000686565b620006db620006d282620006ae565b84845462000626565b825550505050565b600090565b620006f2620006e3565b620006ff818484620006b8565b505050565b5b8181101562000727576200071b600082620006e8565b60018101905062000705565b5050565b601f82111562000776576200074081620005f4565b6200074b8462000609565b810160208510156200075b578190505b620007736200076a8562000609565b83018262000704565b50505b505050565b600082821c905092915050565b60006200079b600019846008026200077b565b1980831691505092915050565b6000620007b6838362000788565b9150826002028217905092915050565b620007d18262000556565b67ffffffffffffffff811115620007ed57620007ec62000561565b5b620007f98254620005bf565b620008068282856200072b565b600060209050601f8311600181146200083e576000841562000829578287015190505b620008358582620007a8565b865550620008a5565b601f1984166200084e86620005f4565b60005b82811015620008785784890151825560018201915060208501945060208101905062000851565b8683101562000898578489015162000894601f89168262000788565b8355505b6001600288020188555050505b505050505050565b620008b8816200047b565b82525050565b6000602082019050620008d56000830184620008ad565b92915050565b6143d480620008eb6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80635d098b381161010f57806395d89b41116100a2578063dd62ed3e11610071578063dd62ed3e146105d1578063ea2f0b3714610601578063ec28438a1461061d578063f2fde38b14610639576101f0565b806395d89b4114610535578063a457c2d714610553578063a9059cbb14610583578063b2bdfa7b146105b3576101f0565b806375f0a874116100de57806375f0a874146104ab5780637d1db4a5146104c957806388f82020146104e75780638da5cb5b14610517576101f0565b80635d098b38146104395780636f1678261461045557806370a0823114610471578063715018a6146104a1576101f0565b80633685d41911610187578063437823ec11610156578063437823ec146103a15780634549b039146103bd57806352390c02146103ed5780635342acb414610409576101f0565b80633685d4191461031b57806339509351146103375780633b124fe7146103675780633bd5d17314610385576101f0565b806322976e0d116101c357806322976e0d1461027f57806323b872dd1461029d5780632d838119146102cd578063313ce567146102fd576101f0565b806306fdde03146101f5578063095ea7b31461021357806313114a9d1461024357806318160ddd14610261575b600080fd5b6101fd610655565b60405161020a919061367f565b60405180910390f35b61022d6004803603810190610228919061373a565b6106e7565b60405161023a9190613795565b60405180910390f35b61024b610705565b60405161025891906137bf565b60405180910390f35b61026961070f565b60405161027691906137bf565b60405180910390f35b610287610719565b60405161029491906137bf565b60405180910390f35b6102b760048036038101906102b291906137da565b61071f565b6040516102c49190613795565b60405180910390f35b6102e760048036038101906102e2919061382d565b6107f8565b6040516102f491906137bf565b60405180910390f35b610305610866565b6040516103129190613876565b60405180910390f35b61033560048036038101906103309190613891565b61087d565b005b610351600480360381019061034c919061373a565b610bcb565b60405161035e9190613795565b60405180910390f35b61036f610c7e565b60405161037c91906137bf565b60405180910390f35b61039f600480360381019061039a919061382d565b610c84565b005b6103bb60048036038101906103b69190613891565b610dfe565b005b6103d760048036038101906103d291906138ea565b610eee565b6040516103e491906137bf565b60405180910390f35b61040760048036038101906104029190613891565b610f70565b005b610423600480360381019061041e9190613891565b611224565b6040516104309190613795565b60405180910390f35b610453600480360381019061044e9190613891565b61127a565b005b61046f600480360381019061046a919061392a565b611353565b005b61048b60048036038101906104869190613891565b611450565b60405161049891906137bf565b60405180910390f35b6104a961153b565b005b6104b361168e565b6040516104c09190613979565b60405180910390f35b6104d16116b4565b6040516104de91906137bf565b60405180910390f35b61050160048036038101906104fc9190613891565b6116ba565b60405161050e9190613795565b60405180910390f35b61051f611710565b60405161052c9190613979565b60405180910390f35b61053d611739565b60405161054a919061367f565b60405180910390f35b61056d6004803603810190610568919061373a565b6117cb565b60405161057a9190613795565b60405180910390f35b61059d6004803603810190610598919061373a565b611898565b6040516105aa9190613795565b60405180910390f35b6105bb6118b6565b6040516105c89190613979565b60405180910390f35b6105eb60048036038101906105e69190613994565b6118da565b6040516105f891906137bf565b60405180910390f35b61061b60048036038101906106169190613891565b611961565b005b6106376004803603810190610632919061382d565b611a51565b005b610653600480360381019061064e9190613891565b611af0565b005b6060600b805461066490613a03565b80601f016020809104026020016040519081016040528092919081815260200182805461069090613a03565b80156106dd5780601f106106b2576101008083540402835291602001916106dd565b820191906000526020600020905b8154815290600101906020018083116106c057829003601f168201915b5050505050905090565b60006106fb6106f4611cb1565b8484611cb9565b6001905092915050565b6000600a54905090565b6000600854905090565b60105481565b600061072c848484611e82565b6107ed84610738611cb1565b6107e88560405180606001604052806028815260200161435260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079e611cb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f449092919063ffffffff16565b611cb9565b600190509392505050565b600060095482111561083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083690613aa6565b60405180910390fd5b6000610849611fa8565b905061085e8184611fd390919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b610885611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090990613b12565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099590613b7e565b60405180910390fd5b60005b600780549050811015610bc7578173ffffffffffffffffffffffffffffffffffffffff16600782815481106109d9576109d8613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bb45760076001600780549050610a339190613bfc565b81548110610a4457610a43613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610a8357610a82613b9e565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480610b7a57610b79613c30565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610bc7565b8080610bbf90613c5f565b9150506109a1565b5050565b6000610c74610bd8611cb1565b84610c6f8560046000610be9611cb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b611cb9565b6001905092915050565b600e5481565b6000610c8e611cb1565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1490613d19565b60405180910390fd5b6000610d288361207b565b505050509050610d8081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dd8816009546120cd90919063ffffffff16565b600981905550610df383600a5461201d90919063ffffffff16565b600a81905550505050565b610e06611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90613b12565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600854831115610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90613d85565b60405180910390fd5b81610f54576000610f458461207b565b50505050905080915050610f6a565b6000610f5f8461207b565b505050915050809150505b92915050565b610f78611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc90613b12565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990613b7e565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561116657611122600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f8565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611282611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690613b12565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61135b611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90613b12565b60405180910390fd5b60056113fd828461201d90919063ffffffff16565b111561143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613df1565b60405180910390fd5b81600e81905550806010819055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114eb57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611536565b611533600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f8565b90505b919050565b611543611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790613b12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c805461174890613a03565b80601f016020809104026020016040519081016040528092919081815260200182805461177490613a03565b80156117c15780601f10611796576101008083540402835291602001916117c1565b820191906000526020600020905b8154815290600101906020018083116117a457829003601f168201915b5050505050905090565b600061188e6117d8611cb1565b846118898560405180606001604052806025815260200161437a6025913960046000611802611cb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f449092919063ffffffff16565b611cb9565b6001905092915050565b60006118ac6118a5611cb1565b8484611e82565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611969611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90613b12565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611a59611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613b12565b60405180910390fd5b8060138190555050565b611af8611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90613b12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb90613e83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90613f15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8e90613fa7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e7591906137bf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890614039565b60405180910390fd5b60008111611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b906140cb565b60405180910390fd5b611f3f838383612117565b505050565b6000838311158290611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f83919061367f565b60405180910390fd5b5060008385611f9b9190613bfc565b9050809150509392505050565b6000806000611fb56125b3565b91509150611fcc8183611fd390919063ffffffff16565b9250505090565b600061201583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612866565b905092915050565b600080828461202c91906140eb565b905083811015612071576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120689061416b565b60405180910390fd5b8091505092915050565b600080600080600080600061208f886128c9565b9150915060008060006120aa8b856120a5611fa8565b6128fd565b925092509250828282878799509950995099509950505050505091939590929450565b600061210f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f44565b905092915050565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121b85750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ca576121c561295b565b612210565b60135481111561220f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612206906141fd565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122b35750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122c8576122c3838383612998565b6124ff565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561236b5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123805761237b838383612beb565b6124fe565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124245750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561243957612434838383612e3e565b6124fd565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124db5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124f0576124eb838383613010565b6124fc565b6124fb838383612e3e565b5b5b5b5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125a05750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125ae576125ad6132f8565b5b505050565b600080600060095490506000600854905060005b600780549050811015612829578260026000600784815481106125ed576125ec613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806126db575081600360006007848154811061267357612672613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156126f25760095460085494509450505050612862565b612782600260006007848154811061270d5761270c613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846120cd90919063ffffffff16565b9250612814600360006007848154811061279f5761279e613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120cd90919063ffffffff16565b9150808061282190613c5f565b9150506125c7565b50612841600854600954611fd390919063ffffffff16565b82101561285957600954600854935093505050612862565b81819350935050505b9091565b600080831182906128ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a4919061367f565b60405180910390fd5b50600083856128bc919061424c565b9050809150509392505050565b60008060006128d78461330c565b905060006128ee82866120cd90919063ffffffff16565b90508082935093505050915091565b600080600080612916858861333d90919063ffffffff16565b9050600061292d868861333d90919063ffffffff16565b9050600061294482846120cd90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600e5414801561296f57506000601054145b61299657600e54600f819055506010546011819055506000600e8190555060006010819055505b565b60008060008060006129a98661207b565b94509450945094509450612a0586600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b2f84600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b7c83826133b7565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bd991906137bf565b60405180910390a35050505050505050565b6000806000806000612bfc8661207b565b94509450945094509450612c5885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ced82600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d8284600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dcf83826133b7565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e2c91906137bf565b60405180910390a35050505050505050565b6000806000806000612e4f8661207b565b94509450945094509450612e65888386896133f1565b8095508193505050612ebf85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5484600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fa183826133b7565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ffe91906137bf565b60405180910390a35050505050505050565b60008060008060006130218661207b565b9450945094509450945061307d86600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a782600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061323c84600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328983826133b7565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132e691906137bf565b60405180910390a35050505050505050565b600f54600e81905550601154601081905550565b60006133366064613328600e548561333d90919063ffffffff16565b611fd390919063ffffffff16565b9050919050565b600080830361334f57600090506133b1565b6000828461335d919061427d565b905082848261336c919061424c565b146133ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a390614331565b60405180910390fd5b809150505b92915050565b6133cc826009546120cd90919063ffffffff16565b6009819055506133e781600a5461201d90919063ffffffff16565b600a819055505050565b600080600060105403613409578484915091506135e6565b6000613433601054613425606487611fd390919063ffffffff16565b61333d90919063ffffffff16565b90506000613451613442611fa8565b8361333d90919063ffffffff16565b905061346681876120cd90919063ffffffff16565b955061347b82886120cd90919063ffffffff16565b96506134f18160026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135d591906137bf565b60405180910390a386869350935050505b94509492505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561362957808201518184015260208101905061360e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613651826135ef565b61365b81856135fa565b935061366b81856020860161360b565b61367481613635565b840191505092915050565b600060208201905081810360008301526136998184613646565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136d1826136a6565b9050919050565b6136e1816136c6565b81146136ec57600080fd5b50565b6000813590506136fe816136d8565b92915050565b6000819050919050565b61371781613704565b811461372257600080fd5b50565b6000813590506137348161370e565b92915050565b60008060408385031215613751576137506136a1565b5b600061375f858286016136ef565b925050602061377085828601613725565b9150509250929050565b60008115159050919050565b61378f8161377a565b82525050565b60006020820190506137aa6000830184613786565b92915050565b6137b981613704565b82525050565b60006020820190506137d460008301846137b0565b92915050565b6000806000606084860312156137f3576137f26136a1565b5b6000613801868287016136ef565b9350506020613812868287016136ef565b925050604061382386828701613725565b9150509250925092565b600060208284031215613843576138426136a1565b5b600061385184828501613725565b91505092915050565b600060ff82169050919050565b6138708161385a565b82525050565b600060208201905061388b6000830184613867565b92915050565b6000602082840312156138a7576138a66136a1565b5b60006138b5848285016136ef565b91505092915050565b6138c78161377a565b81146138d257600080fd5b50565b6000813590506138e4816138be565b92915050565b60008060408385031215613901576139006136a1565b5b600061390f85828601613725565b9250506020613920858286016138d5565b9150509250929050565b60008060408385031215613941576139406136a1565b5b600061394f85828601613725565b925050602061396085828601613725565b9150509250929050565b613973816136c6565b82525050565b600060208201905061398e600083018461396a565b92915050565b600080604083850312156139ab576139aa6136a1565b5b60006139b9858286016136ef565b92505060206139ca858286016136ef565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a1b57607f821691505b602082108103613a2e57613a2d6139d4565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a90602a836135fa565b9150613a9b82613a34565b604082019050919050565b60006020820190508181036000830152613abf81613a83565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613afc6020836135fa565b9150613b0782613ac6565b602082019050919050565b60006020820190508181036000830152613b2b81613aef565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613b68601b836135fa565b9150613b7382613b32565b602082019050919050565b60006020820190508181036000830152613b9781613b5b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c0782613704565b9150613c1283613704565b9250828203905081811115613c2a57613c29613bcd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000613c6a82613704565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c9c57613c9b613bcd565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000613d03602c836135fa565b9150613d0e82613ca7565b604082019050919050565b60006020820190508181036000830152613d3281613cf6565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000613d6f601f836135fa565b9150613d7a82613d39565b602082019050919050565b60006020820190508181036000830152613d9e81613d62565b9050919050565b7f74617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000613ddb600c836135fa565b9150613de682613da5565b602082019050919050565b60006020820190508181036000830152613e0a81613dce565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e6d6026836135fa565b9150613e7882613e11565b604082019050919050565b60006020820190508181036000830152613e9c81613e60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613eff6024836135fa565b9150613f0a82613ea3565b604082019050919050565b60006020820190508181036000830152613f2e81613ef2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f916022836135fa565b9150613f9c82613f35565b604082019050919050565b60006020820190508181036000830152613fc081613f84565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140236025836135fa565b915061402e82613fc7565b604082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140b56029836135fa565b91506140c082614059565b604082019050919050565b600060208201905081810360008301526140e4816140a8565b9050919050565b60006140f682613704565b915061410183613704565b925082820190508082111561411957614118613bcd565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614155601b836135fa565b91506141608261411f565b602082019050919050565b6000602082019050818103600083015261418481614148565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006141e76028836135fa565b91506141f28261418b565b604082019050919050565b60006020820190508181036000830152614216816141da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061425782613704565b915061426283613704565b9250826142725761427161421d565b5b828204905092915050565b600061428882613704565b915061429383613704565b92508282026142a181613704565b915082820484148315176142b8576142b7613bcd565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061431b6021836135fa565b9150614326826142bf565b604082019050919050565b6000602082019050818103600083015261434a8161430e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122041c97a95a635c8c19bc0468858a92e924faa0ff8593395be502e4a7415a150c264736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80635d098b381161010f57806395d89b41116100a2578063dd62ed3e11610071578063dd62ed3e146105d1578063ea2f0b3714610601578063ec28438a1461061d578063f2fde38b14610639576101f0565b806395d89b4114610535578063a457c2d714610553578063a9059cbb14610583578063b2bdfa7b146105b3576101f0565b806375f0a874116100de57806375f0a874146104ab5780637d1db4a5146104c957806388f82020146104e75780638da5cb5b14610517576101f0565b80635d098b38146104395780636f1678261461045557806370a0823114610471578063715018a6146104a1576101f0565b80633685d41911610187578063437823ec11610156578063437823ec146103a15780634549b039146103bd57806352390c02146103ed5780635342acb414610409576101f0565b80633685d4191461031b57806339509351146103375780633b124fe7146103675780633bd5d17314610385576101f0565b806322976e0d116101c357806322976e0d1461027f57806323b872dd1461029d5780632d838119146102cd578063313ce567146102fd576101f0565b806306fdde03146101f5578063095ea7b31461021357806313114a9d1461024357806318160ddd14610261575b600080fd5b6101fd610655565b60405161020a919061367f565b60405180910390f35b61022d6004803603810190610228919061373a565b6106e7565b60405161023a9190613795565b60405180910390f35b61024b610705565b60405161025891906137bf565b60405180910390f35b61026961070f565b60405161027691906137bf565b60405180910390f35b610287610719565b60405161029491906137bf565b60405180910390f35b6102b760048036038101906102b291906137da565b61071f565b6040516102c49190613795565b60405180910390f35b6102e760048036038101906102e2919061382d565b6107f8565b6040516102f491906137bf565b60405180910390f35b610305610866565b6040516103129190613876565b60405180910390f35b61033560048036038101906103309190613891565b61087d565b005b610351600480360381019061034c919061373a565b610bcb565b60405161035e9190613795565b60405180910390f35b61036f610c7e565b60405161037c91906137bf565b60405180910390f35b61039f600480360381019061039a919061382d565b610c84565b005b6103bb60048036038101906103b69190613891565b610dfe565b005b6103d760048036038101906103d291906138ea565b610eee565b6040516103e491906137bf565b60405180910390f35b61040760048036038101906104029190613891565b610f70565b005b610423600480360381019061041e9190613891565b611224565b6040516104309190613795565b60405180910390f35b610453600480360381019061044e9190613891565b61127a565b005b61046f600480360381019061046a919061392a565b611353565b005b61048b60048036038101906104869190613891565b611450565b60405161049891906137bf565b60405180910390f35b6104a961153b565b005b6104b361168e565b6040516104c09190613979565b60405180910390f35b6104d16116b4565b6040516104de91906137bf565b60405180910390f35b61050160048036038101906104fc9190613891565b6116ba565b60405161050e9190613795565b60405180910390f35b61051f611710565b60405161052c9190613979565b60405180910390f35b61053d611739565b60405161054a919061367f565b60405180910390f35b61056d6004803603810190610568919061373a565b6117cb565b60405161057a9190613795565b60405180910390f35b61059d6004803603810190610598919061373a565b611898565b6040516105aa9190613795565b60405180910390f35b6105bb6118b6565b6040516105c89190613979565b60405180910390f35b6105eb60048036038101906105e69190613994565b6118da565b6040516105f891906137bf565b60405180910390f35b61061b60048036038101906106169190613891565b611961565b005b6106376004803603810190610632919061382d565b611a51565b005b610653600480360381019061064e9190613891565b611af0565b005b6060600b805461066490613a03565b80601f016020809104026020016040519081016040528092919081815260200182805461069090613a03565b80156106dd5780601f106106b2576101008083540402835291602001916106dd565b820191906000526020600020905b8154815290600101906020018083116106c057829003601f168201915b5050505050905090565b60006106fb6106f4611cb1565b8484611cb9565b6001905092915050565b6000600a54905090565b6000600854905090565b60105481565b600061072c848484611e82565b6107ed84610738611cb1565b6107e88560405180606001604052806028815260200161435260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079e611cb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f449092919063ffffffff16565b611cb9565b600190509392505050565b600060095482111561083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083690613aa6565b60405180910390fd5b6000610849611fa8565b905061085e8184611fd390919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b610885611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090990613b12565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099590613b7e565b60405180910390fd5b60005b600780549050811015610bc7578173ffffffffffffffffffffffffffffffffffffffff16600782815481106109d9576109d8613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bb45760076001600780549050610a339190613bfc565b81548110610a4457610a43613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610a8357610a82613b9e565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480610b7a57610b79613c30565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610bc7565b8080610bbf90613c5f565b9150506109a1565b5050565b6000610c74610bd8611cb1565b84610c6f8560046000610be9611cb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b611cb9565b6001905092915050565b600e5481565b6000610c8e611cb1565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1490613d19565b60405180910390fd5b6000610d288361207b565b505050509050610d8081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dd8816009546120cd90919063ffffffff16565b600981905550610df383600a5461201d90919063ffffffff16565b600a81905550505050565b610e06611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90613b12565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600854831115610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90613d85565b60405180910390fd5b81610f54576000610f458461207b565b50505050905080915050610f6a565b6000610f5f8461207b565b505050915050809150505b92915050565b610f78611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffc90613b12565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990613b7e565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561116657611122600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f8565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611282611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690613b12565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61135b611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90613b12565b60405180910390fd5b60056113fd828461201d90919063ffffffff16565b111561143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613df1565b60405180910390fd5b81600e81905550806010819055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114eb57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611536565b611533600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f8565b90505b919050565b611543611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790613b12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c805461174890613a03565b80601f016020809104026020016040519081016040528092919081815260200182805461177490613a03565b80156117c15780601f10611796576101008083540402835291602001916117c1565b820191906000526020600020905b8154815290600101906020018083116117a457829003601f168201915b5050505050905090565b600061188e6117d8611cb1565b846118898560405180606001604052806025815260200161437a6025913960046000611802611cb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f449092919063ffffffff16565b611cb9565b6001905092915050565b60006118ac6118a5611cb1565b8484611e82565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611969611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90613b12565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611a59611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613b12565b60405180910390fd5b8060138190555050565b611af8611cb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90613b12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb90613e83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90613f15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8e90613fa7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e7591906137bf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890614039565b60405180910390fd5b60008111611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b906140cb565b60405180910390fd5b611f3f838383612117565b505050565b6000838311158290611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f83919061367f565b60405180910390fd5b5060008385611f9b9190613bfc565b9050809150509392505050565b6000806000611fb56125b3565b91509150611fcc8183611fd390919063ffffffff16565b9250505090565b600061201583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612866565b905092915050565b600080828461202c91906140eb565b905083811015612071576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120689061416b565b60405180910390fd5b8091505092915050565b600080600080600080600061208f886128c9565b9150915060008060006120aa8b856120a5611fa8565b6128fd565b925092509250828282878799509950995099509950505050505091939590929450565b600061210f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f44565b905092915050565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121b85750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ca576121c561295b565b612210565b60135481111561220f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612206906141fd565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122b35750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122c8576122c3838383612998565b6124ff565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561236b5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123805761237b838383612beb565b6124fe565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124245750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561243957612434838383612e3e565b6124fd565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124db5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124f0576124eb838383613010565b6124fc565b6124fb838383612e3e565b5b5b5b5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125a05750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125ae576125ad6132f8565b5b505050565b600080600060095490506000600854905060005b600780549050811015612829578260026000600784815481106125ed576125ec613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806126db575081600360006007848154811061267357612672613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156126f25760095460085494509450505050612862565b612782600260006007848154811061270d5761270c613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846120cd90919063ffffffff16565b9250612814600360006007848154811061279f5761279e613b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120cd90919063ffffffff16565b9150808061282190613c5f565b9150506125c7565b50612841600854600954611fd390919063ffffffff16565b82101561285957600954600854935093505050612862565b81819350935050505b9091565b600080831182906128ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a4919061367f565b60405180910390fd5b50600083856128bc919061424c565b9050809150509392505050565b60008060006128d78461330c565b905060006128ee82866120cd90919063ffffffff16565b90508082935093505050915091565b600080600080612916858861333d90919063ffffffff16565b9050600061292d868861333d90919063ffffffff16565b9050600061294482846120cd90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600e5414801561296f57506000601054145b61299657600e54600f819055506010546011819055506000600e8190555060006010819055505b565b60008060008060006129a98661207b565b94509450945094509450612a0586600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b2f84600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b7c83826133b7565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bd991906137bf565b60405180910390a35050505050505050565b6000806000806000612bfc8661207b565b94509450945094509450612c5885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ced82600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d8284600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dcf83826133b7565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e2c91906137bf565b60405180910390a35050505050505050565b6000806000806000612e4f8661207b565b94509450945094509450612e65888386896133f1565b8095508193505050612ebf85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5484600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fa183826133b7565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ffe91906137bf565b60405180910390a35050505050505050565b60008060008060006130218661207b565b9450945094509450945061307d86600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a782600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061323c84600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328983826133b7565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132e691906137bf565b60405180910390a35050505050505050565b600f54600e81905550601154601081905550565b60006133366064613328600e548561333d90919063ffffffff16565b611fd390919063ffffffff16565b9050919050565b600080830361334f57600090506133b1565b6000828461335d919061427d565b905082848261336c919061424c565b146133ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a390614331565b60405180910390fd5b809150505b92915050565b6133cc826009546120cd90919063ffffffff16565b6009819055506133e781600a5461201d90919063ffffffff16565b600a819055505050565b600080600060105403613409578484915091506135e6565b6000613433601054613425606487611fd390919063ffffffff16565b61333d90919063ffffffff16565b90506000613451613442611fa8565b8361333d90919063ffffffff16565b905061346681876120cd90919063ffffffff16565b955061347b82886120cd90919063ffffffff16565b96506134f18160026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201d90919063ffffffff16565b60026000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135d591906137bf565b60405180910390a386869350935050505b94509492505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561362957808201518184015260208101905061360e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613651826135ef565b61365b81856135fa565b935061366b81856020860161360b565b61367481613635565b840191505092915050565b600060208201905081810360008301526136998184613646565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136d1826136a6565b9050919050565b6136e1816136c6565b81146136ec57600080fd5b50565b6000813590506136fe816136d8565b92915050565b6000819050919050565b61371781613704565b811461372257600080fd5b50565b6000813590506137348161370e565b92915050565b60008060408385031215613751576137506136a1565b5b600061375f858286016136ef565b925050602061377085828601613725565b9150509250929050565b60008115159050919050565b61378f8161377a565b82525050565b60006020820190506137aa6000830184613786565b92915050565b6137b981613704565b82525050565b60006020820190506137d460008301846137b0565b92915050565b6000806000606084860312156137f3576137f26136a1565b5b6000613801868287016136ef565b9350506020613812868287016136ef565b925050604061382386828701613725565b9150509250925092565b600060208284031215613843576138426136a1565b5b600061385184828501613725565b91505092915050565b600060ff82169050919050565b6138708161385a565b82525050565b600060208201905061388b6000830184613867565b92915050565b6000602082840312156138a7576138a66136a1565b5b60006138b5848285016136ef565b91505092915050565b6138c78161377a565b81146138d257600080fd5b50565b6000813590506138e4816138be565b92915050565b60008060408385031215613901576139006136a1565b5b600061390f85828601613725565b9250506020613920858286016138d5565b9150509250929050565b60008060408385031215613941576139406136a1565b5b600061394f85828601613725565b925050602061396085828601613725565b9150509250929050565b613973816136c6565b82525050565b600060208201905061398e600083018461396a565b92915050565b600080604083850312156139ab576139aa6136a1565b5b60006139b9858286016136ef565b92505060206139ca858286016136ef565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a1b57607f821691505b602082108103613a2e57613a2d6139d4565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a90602a836135fa565b9150613a9b82613a34565b604082019050919050565b60006020820190508181036000830152613abf81613a83565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613afc6020836135fa565b9150613b0782613ac6565b602082019050919050565b60006020820190508181036000830152613b2b81613aef565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613b68601b836135fa565b9150613b7382613b32565b602082019050919050565b60006020820190508181036000830152613b9781613b5b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c0782613704565b9150613c1283613704565b9250828203905081811115613c2a57613c29613bcd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000613c6a82613704565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c9c57613c9b613bcd565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000613d03602c836135fa565b9150613d0e82613ca7565b604082019050919050565b60006020820190508181036000830152613d3281613cf6565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000613d6f601f836135fa565b9150613d7a82613d39565b602082019050919050565b60006020820190508181036000830152613d9e81613d62565b9050919050565b7f74617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000613ddb600c836135fa565b9150613de682613da5565b602082019050919050565b60006020820190508181036000830152613e0a81613dce565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e6d6026836135fa565b9150613e7882613e11565b604082019050919050565b60006020820190508181036000830152613e9c81613e60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613eff6024836135fa565b9150613f0a82613ea3565b604082019050919050565b60006020820190508181036000830152613f2e81613ef2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f916022836135fa565b9150613f9c82613f35565b604082019050919050565b60006020820190508181036000830152613fc081613f84565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140236025836135fa565b915061402e82613fc7565b604082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140b56029836135fa565b91506140c082614059565b604082019050919050565b600060208201905081810360008301526140e4816140a8565b9050919050565b60006140f682613704565b915061410183613704565b925082820190508082111561411957614118613bcd565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614155601b836135fa565b91506141608261411f565b602082019050919050565b6000602082019050818103600083015261418481614148565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006141e76028836135fa565b91506141f28261418b565b604082019050919050565b60006020820190508181036000830152614216816141da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061425782613704565b915061426283613704565b9250826142725761427161421d565b5b828204905092915050565b600061428882613704565b915061429383613704565b92508282026142a181613704565b915082820484148315176142b8576142b7613bcd565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061431b6021836135fa565b9150614326826142bf565b604082019050919050565b6000602082019050818103600083015261434a8161430e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122041c97a95a635c8c19bc0468858a92e924faa0ff8593395be502e4a7415a150c264736f6c63430008130033

Deployed Bytecode Sourcemap

3230:13462:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4579:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5491:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6612:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4856:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4046:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5660:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7533:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4765:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8135:479;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5981:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3959:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6707:376;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15977:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7091:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7794:333;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11630:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16218:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16340:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4959:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;981:148;;;:::i;:::-;;4145:75;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4229:53;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6484:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;767:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4670:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6207:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5165:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;387:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5340:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16100:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16572:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1137:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4579:83;4616:13;4649:5;4642:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4579:83;:::o;5491:161::-;5566:4;5583:39;5592:12;:10;:12::i;:::-;5606:7;5615:6;5583:8;:39::i;:::-;5640:4;5633:11;;5491:161;;;;:::o;6612:87::-;6654:7;6681:10;;6674:17;;6612:87;:::o;4856:95::-;4909:7;4936;;4929:14;;4856:95;:::o;4046:32::-;;;;:::o;5660:313::-;5758:4;5775:36;5785:6;5793:9;5804:6;5775:9;:36::i;:::-;5822:121;5831:6;5839:12;:10;:12::i;:::-;5853:89;5891:6;5853:89;;;;;;;;;;;;;;;;;:11;:19;5865:6;5853:19;;;;;;;;;;;;;;;:33;5873:12;:10;:12::i;:::-;5853:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5822:8;:121::i;:::-;5961:4;5954:11;;5660:313;;;;;:::o;7533:253::-;7599:7;7638;;7627;:18;;7619:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7703:19;7726:10;:8;:10::i;:::-;7703:33;;7754:24;7766:11;7754:7;:11;;:24;;;;:::i;:::-;7747:31;;;7533:253;;;:::o;4765:83::-;4806:5;4831:9;;;;;;;;;;;4824:16;;4765:83;:::o;8135:479::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8217:11:::1;:20;8229:7;8217:20;;;;;;;;;;;;;;;;;;;;;;;;;8209:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8285:9;8280:327;8304:9;:16;;;;8300:1;:20;8280:327;;;8362:7;8346:23;;:9;8356:1;8346:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;8342:254:::1;;8405:9;8434:1;8415:9;:16;;;;:20;;;;:::i;:::-;8405:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8390:9;8400:1;8390:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8474:1;8455:7;:16;8463:7;8455:16;;;;;;;;;;;;;;;:20;;;;8517:5;8494:11;:20;8506:7;8494:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;8541:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;8575:5;;8342:254;8322:3;;;;;:::i;:::-;;;;8280:327;;;;8135:479:::0;:::o;5981:218::-;6069:4;6086:83;6095:12;:10;:12::i;:::-;6109:7;6118:50;6157:10;6118:11;:25;6130:12;:10;:12::i;:::-;6118:25;;;;;;;;;;;;;;;:34;6144:7;6118:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6086:8;:83::i;:::-;6187:4;6180:11;;5981:218;;;;:::o;3959:26::-;;;;:::o;6707:376::-;6759:14;6776:12;:10;:12::i;:::-;6759:29;;6808:11;:19;6820:6;6808:19;;;;;;;;;;;;;;;;;;;;;;;;;6807:20;6799:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;6888:15;6911:19;6922:7;6911:10;:19::i;:::-;6887:43;;;;;;6959:28;6979:7;6959;:15;6967:6;6959:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;6941:7;:15;6949:6;6941:15;;;;;;;;;;;;;;;:46;;;;7008:20;7020:7;7008;;:11;;:20;;;;:::i;:::-;6998:7;:30;;;;7052:23;7067:7;7052:10;;:14;;:23;;;;:::i;:::-;7039:10;:36;;;;6748:335;;6707:376;:::o;15977:111::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16076:4:::1;16046:18;:27;16065:7;16046:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15977:111:::0;:::o;7091:434::-;7181:7;7220;;7209;:18;;7201:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;7279:17;7274:244;;7314:15;7337:19;7348:7;7337:10;:19::i;:::-;7313:43;;;;;;7378:7;7371:14;;;;;7274:244;7420:23;7450:19;7461:7;7450:10;:19::i;:::-;7418:51;;;;;;7491:15;7484:22;;;7091:434;;;;;:::o;7794:333::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7877:11:::1;:20;7889:7;7877:20;;;;;;;;;;;;;;;;;;;;;;;;;7876:21;7868:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;7962:1;7943:7;:16;7951:7;7943:16;;;;;;;;;;;;;;;;:20;7940:108;;;7999:37;8019:7;:16;8027:7;8019:16;;;;;;;;;;;;;;;;7999:19;:37::i;:::-;7980:7;:16;7988:7;7980:16;;;;;;;;;;;;;;;:56;;;;7940:108;8081:4;8058:11;:20;8070:7;8058:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;8096:9;8111:7;8096:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7794:333:::0;:::o;11630:123::-;11694:4;11718:18;:27;11737:7;11718:27;;;;;;;;;;;;;;;;;;;;;;;;;11711:34;;11630:123;;;:::o;16218:114::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16315:9:::1;16297:15;;:27;;;;;;;;;;;;;;;;;;16218:114:::0;:::o;16340:220::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16468:1:::1;16440:24;16451:12;16440:6;:10;;:24;;;;:::i;:::-;:29;;16432:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16507:6;16497:7;:16;;;;16540:12;16524:13;:28;;;;16340:220:::0;;:::o;4959:198::-;5025:7;5049:11;:20;5061:7;5049:20;;;;;;;;;;;;;;;;;;;;;;;;;5045:49;;;5078:7;:16;5086:7;5078:16;;;;;;;;;;;;;;;;5071:23;;;;5045:49;5112:37;5132:7;:16;5140:7;5132:16;;;;;;;;;;;;;;;;5112:19;:37::i;:::-;5105:44;;4959:198;;;;:::o;981:148::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1088:1:::1;1051:40;;1072:6;::::0;::::1;;;;;;;;1051:40;;;;;;;;;;;;1119:1;1102:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;981:148::o:0;4145:75::-;;;;;;;;;;;;;:::o;4229:53::-;;;;:::o;6484:120::-;6552:4;6576:11;:20;6588:7;6576:20;;;;;;;;;;;;;;;;;;;;;;;;;6569:27;;6484:120;;;:::o;767:79::-;805:7;832:6;;;;;;;;;;;825:13;;767:79;:::o;4670:87::-;4709:13;4742:7;4735:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4670:87;:::o;6207:269::-;6300:4;6317:129;6326:12;:10;:12::i;:::-;6340:7;6349:96;6388:15;6349:96;;;;;;;;;;;;;;;;;:11;:25;6361:12;:10;:12::i;:::-;6349:25;;;;;;;;;;;;;;;:34;6375:7;6349:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6317:8;:129::i;:::-;6464:4;6457:11;;6207:269;;;;:::o;5165:167::-;5243:4;5260:42;5270:12;:10;:12::i;:::-;5284:9;5295:6;5260:9;:42::i;:::-;5320:4;5313:11;;5165:167;;;;:::o;387:21::-;;;;;;;;;;;;:::o;5340:143::-;5421:7;5448:11;:18;5460:5;5448:18;;;;;;;;;;;;;;;:27;5467:7;5448:27;;;;;;;;;;;;;;;;5441:34;;5340:143;;;;:::o;16100:110::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16197:5:::1;16167:18;:27;16186:7;16167:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16100:110:::0;:::o;16572:111::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16664:11:::1;16649:12;:26;;;;16572:111:::0;:::o;1137:244::-;904:12;:10;:12::i;:::-;894:22;;:6;;;;;;;;;;:22;;;886:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1246:1:::1;1226:22;;:8;:22;;::::0;1218:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1336:8;1307:38;;1328:6;::::0;::::1;;;;;;;;1307:38;;;;;;;;;;;;1365:8;1356:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1137:244:::0;:::o;108:115::-;161:15;204:10;189:26;;108:115;:::o;11761:337::-;11871:1;11854:19;;:5;:19;;;11846:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11952:1;11933:21;;:7;:21;;;11925:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12036:6;12006:11;:18;12018:5;12006:18;;;;;;;;;;;;;;;:27;12025:7;12006:27;;;;;;;;;;;;;;;:36;;;;12074:7;12058:32;;12067:5;12058:32;;;12083:6;12058:32;;;;;;:::i;:::-;;;;;;;;11761:337;;;:::o;12106:376::-;12244:1;12228:18;;:4;:18;;;12220:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12316:1;12307:6;:10;12299:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12444:30;12459:4;12464:2;12467:6;12444:14;:30::i;:::-;12106:376;;;:::o;1743:192::-;1829:7;1862:1;1857;:6;;1865:12;1849:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1889:9;1905:1;1901;:5;;;;:::i;:::-;1889:17;;1926:1;1919:8;;;1743:192;;;;;:::o;10325:163::-;10366:7;10387:15;10404;10423:19;:17;:19::i;:::-;10386:56;;;;10460:20;10472:7;10460;:11;;:20;;;;:::i;:::-;10453:27;;;;10325:163;:::o;2197:132::-;2255:7;2282:39;2286:1;2289;2282:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2275:46;;2197:132;;;;:::o;1414:181::-;1472:7;1492:9;1508:1;1504;:5;;;;:::i;:::-;1492:17;;1533:1;1528;:6;;1520:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1586:1;1579:8;;;1414:181;;;;:::o;9370:366::-;9429:7;9438;9447;9456;9465;9486:23;9511:12;9527:20;9539:7;9527:11;:20::i;:::-;9485:62;;;;9559:15;9576:23;9601:12;9617:38;9629:7;9638:4;9644:10;:8;:10::i;:::-;9617:11;:38::i;:::-;9558:97;;;;;;9674:7;9683:15;9700:4;9706:15;9723:4;9666:62;;;;;;;;;;;;;;;9370:366;;;;;;;:::o;1601:136::-;1659:7;1686:43;1690:1;1693;1686:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1679:50;;1601:136;;;;:::o;12563:1096::-;12666:18;:26;12685:6;12666:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;12696:18;:29;12715:9;12696:29;;;;;;;;;;;;;;;;;;;;;;;;;12666:59;12663:245;;;12753:14;:12;:14::i;:::-;12663:245;;;12839:12;;12829:6;:22;;12821:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12663:245;12924:11;:19;12936:6;12924:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;12948:11;:22;12960:9;12948:22;;;;;;;;;;;;;;;;;;;;;;;;;12947:23;12924:46;12920:597;;;12987:48;13009:6;13017:9;13028:6;12987:21;:48::i;:::-;12920:597;;;13058:11;:19;13070:6;13058:19;;;;;;;;;;;;;;;;;;;;;;;;;13057:20;:46;;;;;13081:11;:22;13093:9;13081:22;;;;;;;;;;;;;;;;;;;;;;;;;13057:46;13053:464;;;13120:46;13140:6;13148:9;13159:6;13120:19;:46::i;:::-;13053:464;;;13189:11;:19;13201:6;13189:19;;;;;;;;;;;;;;;;;;;;;;;;;13188:20;:47;;;;;13213:11;:22;13225:9;13213:22;;;;;;;;;;;;;;;;;;;;;;;;;13212:23;13188:47;13184:333;;;13252:44;13270:6;13278:9;13289:6;13252:17;:44::i;:::-;13184:333;;;13318:11;:19;13330:6;13318:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;13341:11;:22;13353:9;13341:22;;;;;;;;;;;;;;;;;;;;;;;;;13318:45;13314:203;;;13380:48;13402:6;13410:9;13421:6;13380:21;:48::i;:::-;13314:203;;;13461:44;13479:6;13487:9;13498:6;13461:17;:44::i;:::-;13314:203;13184:333;13053:464;12920:597;13540:18;:26;13559:6;13540:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;13570:18;:29;13589:9;13570:29;;;;;;;;;;;;;;;;;;;;;;;;;13540:59;13537:115;;;13625:15;:13;:15::i;:::-;13537:115;12563:1096;;;:::o;10496:561::-;10546:7;10555;10575:15;10593:7;;10575:25;;10611:15;10629:7;;10611:25;;10658:9;10653:289;10677:9;:16;;;;10673:1;:20;10653:289;;;10743:7;10719;:21;10727:9;10737:1;10727:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10719:21;;;;;;;;;;;;;;;;:31;:66;;;;10778:7;10754;:21;10762:9;10772:1;10762:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10754:21;;;;;;;;;;;;;;;;:31;10719:66;10715:97;;;10795:7;;10804;;10787:25;;;;;;;;;10715:97;10837:34;10849:7;:21;10857:9;10867:1;10857:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10849:21;;;;;;;;;;;;;;;;10837:7;:11;;:34;;;;:::i;:::-;10827:44;;10896:34;10908:7;:21;10916:9;10926:1;10916:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10908:21;;;;;;;;;;;;;;;;10896:7;:11;;:34;;;;:::i;:::-;10886:44;;10695:3;;;;;:::i;:::-;;;;10653:289;;;;10966:20;10978:7;;10966;;:11;;:20;;;;:::i;:::-;10956:7;:30;10952:61;;;10996:7;;11005;;10988:25;;;;;;;;10952:61;11032:7;11041;11024:25;;;;;;10496:561;;;:::o;2335:189::-;2421:7;2453:1;2449;:5;2456:12;2441:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2480:9;2496:1;2492;:5;;;;:::i;:::-;2480:17;;2515:1;2508:8;;;2335:189;;;;;:::o;9744:231::-;9804:7;9813;9833:12;9848:24;9864:7;9848:15;:24::i;:::-;9833:39;;9883:23;9909:17;9921:4;9909:7;:11;;:17;;;;:::i;:::-;9883:43;;9945:15;9962:4;9937:30;;;;;;9744:231;;;:::o;9983:334::-;10078:7;10087;10096;10116:15;10134:24;10146:11;10134:7;:11;;:24;;;;:::i;:::-;10116:42;;10169:12;10184:21;10193:11;10184:4;:8;;:21;;;;:::i;:::-;10169:36;;10216:23;10242:17;10254:4;10242:7;:11;;:17;;;;:::i;:::-;10216:43;;10278:7;10287:15;10304:4;10270:39;;;;;;;;;9983:334;;;;;;;:::o;11235:248::-;11292:1;11281:7;;:12;:32;;;;;11312:1;11297:13;;:16;11281:32;11315:7;11278:44;11360:7;;11342:15;:25;;;;11402:13;;11378:21;:37;;;;11446:1;11436:7;:11;;;;11474:1;11458:13;:17;;;;11235:248;:::o;15460:509::-;15563:15;15580:23;15605:12;15619:23;15644:12;15660:19;15671:7;15660:10;:19::i;:::-;15562:117;;;;;;;;;;15708:28;15728:7;15708;:15;15716:6;15708:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15690:7;:15;15698:6;15690:15;;;;;;;;;;;;;;;:46;;;;15765:28;15785:7;15765;:15;15773:6;15765:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15747:7;:15;15755:6;15747:15;;;;;;;;;;;;;;;:46;;;;15825:39;15848:15;15825:7;:18;15833:9;15825:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15804:7;:18;15812:9;15804:18;;;;;;;;;;;;;;;:60;;;;15878:23;15890:4;15896;15878:11;:23::i;:::-;15934:9;15917:44;;15926:6;15917:44;;;15945:15;15917:44;;;;;;:::i;:::-;;;;;;;;15551:418;;;;;15460:509;;;:::o;14923:529::-;15024:15;15041:23;15066:12;15080:23;15105:12;15121:19;15132:7;15121:10;:19::i;:::-;15023:117;;;;;;;;;;15169:28;15189:7;15169;:15;15177:6;15169:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15151:7;:15;15159:6;15151:15;;;;;;;;;;;;;;;:46;;;;15229:39;15252:15;15229:7;:18;15237:9;15229:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15208:7;:18;15216:9;15208:18;;;;;;;;;;;;;;;:60;;;;15300:39;15323:15;15300:7;:18;15308:9;15300:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15279:7;:18;15287:9;15279:18;;;;;;;;;;;;;;;:60;;;;15361:23;15373:4;15379;15361:11;:23::i;:::-;15417:9;15400:44;;15409:6;15400:44;;;15428:15;15400:44;;;;;;:::i;:::-;;;;;;;;15012:440;;;;;14923:529;;;:::o;13671:563::-;13776:15;13793:23;13818:12;13832:23;13857:12;13873:19;13884:7;13873:10;:19::i;:::-;13775:117;;;;;;;;;;13940:64;13954:6;13962:15;13979;13996:7;13940:13;:64::i;:::-;13903:101;;;;;;;;14033:28;14053:7;14033;:15;14041:6;14033:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14015:7;:15;14023:6;14015:15;;;;;;;;;;;;;;;:46;;;;14093:39;14116:15;14093:7;:18;14101:9;14093:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14072:7;:18;14080:9;14072:18;;;;;;;;;;;;;;;:60;;;;14143:23;14155:4;14161;14143:11;:23::i;:::-;14199:9;14182:44;;14191:6;14182:44;;;14210:15;14182:44;;;;;;:::i;:::-;;;;;;;;13764:470;;;;;13671:563;;;:::o;8622:585::-;8725:15;8742:23;8767:12;8781:23;8806:12;8822:19;8833:7;8822:10;:19::i;:::-;8724:117;;;;;;;;;;8870:28;8890:7;8870;:15;8878:6;8870:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;8852:7;:15;8860:6;8852:15;;;;;;;;;;;;;;;:46;;;;8927:28;8947:7;8927;:15;8935:6;8927:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;8909:7;:15;8917:6;8909:15;;;;;;;;;;;;;;;:46;;;;8987:39;9010:15;8987:7;:18;8995:9;8987:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;8966:7;:18;8974:9;8966:18;;;;;;;;;;;;;;;:60;;;;9058:39;9081:15;9058:7;:18;9066:9;9058:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;9037:7;:18;9045:9;9037:18;;;;;;;;;;;;;;;:60;;;;9116:23;9128:4;9134;9116:11;:23::i;:::-;9172:9;9155:44;;9164:6;9155:44;;;9183:15;9155:44;;;;;;:::i;:::-;;;;;;;;8713:494;;;;;8622:585;;;:::o;11495:123::-;11548:15;;11538:7;:25;;;;11589:21;;11573:13;:37;;;;11495:123::o;11069:154::-;11133:7;11160:55;11199:5;11160:20;11172:7;;11160;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;11153:62;;11069:154;;;:::o;1941:250::-;1999:7;2028:1;2023;:6;2019:47;;2053:1;2046:8;;;;2019:47;2078:9;2094:1;2090;:5;;;;:::i;:::-;2078:17;;2123:1;2118;2114;:5;;;;:::i;:::-;:10;2106:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2182:1;2175:8;;;1941:250;;;;;:::o;9215:147::-;9293:17;9305:4;9293:7;;:11;;:17;;;;:::i;:::-;9283:7;:27;;;;9334:20;9349:4;9334:10;;:14;;:20;;;;:::i;:::-;9321:10;:33;;;;9215:147;;:::o;14244:671::-;14372:7;14381;14424:1;14409:13;;:16;14406:67;;14437:15;14454;14430:40;;;;;;14406:67;14483:18;14504:35;14525:13;;14504:16;14516:3;14504:7;:11;;:16;;;;:::i;:::-;:20;;:35;;;;:::i;:::-;14483:56;;14550:18;14571:26;14586:10;:8;:10::i;:::-;14571;:14;;:26;;;;:::i;:::-;14550:47;;14626:31;14646:10;14626:15;:19;;:31;;;;:::i;:::-;14608:49;;14686:31;14706:10;14686:15;:19;;:31;;;;:::i;:::-;14668:49;;14755:40;14784:10;14755:7;:24;14763:15;;;;;;;;;;;14755:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;14728:7;:24;14736:15;;;;;;;;;;;14728:24;;;;;;;;;;;;;;;:67;;;;14828:15;;;;;;;;;;;14811:45;;14820:6;14811:45;;;14845:10;14811:45;;;;;;:::i;:::-;;;;;;;;14874:15;14891;14867:40;;;;;;14244:671;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:116::-;5593:21;5608:5;5593:21;:::i;:::-;5586:5;5583:32;5573:60;;5629:1;5626;5619:12;5573:60;5523:116;:::o;5645:133::-;5688:5;5726:6;5713:20;5704:29;;5742:30;5766:5;5742:30;:::i;:::-;5645:133;;;;:::o;5784:468::-;5849:6;5857;5906:2;5894:9;5885:7;5881:23;5877:32;5874:119;;;5912:79;;:::i;:::-;5874:119;6032:1;6057:53;6102:7;6093:6;6082:9;6078:22;6057:53;:::i;:::-;6047:63;;6003:117;6159:2;6185:50;6227:7;6218:6;6207:9;6203:22;6185:50;:::i;:::-;6175:60;;6130:115;5784:468;;;;;:::o;6258:474::-;6326:6;6334;6383:2;6371:9;6362:7;6358:23;6354:32;6351:119;;;6389:79;;:::i;:::-;6351:119;6509:1;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6480:117;6636:2;6662:53;6707:7;6698:6;6687:9;6683:22;6662:53;:::i;:::-;6652:63;;6607:118;6258:474;;;;;:::o;6738:118::-;6825:24;6843:5;6825:24;:::i;:::-;6820:3;6813:37;6738:118;;:::o;6862:222::-;6955:4;6993:2;6982:9;6978:18;6970:26;;7006:71;7074:1;7063:9;7059:17;7050:6;7006:71;:::i;:::-;6862:222;;;;:::o;7090:474::-;7158:6;7166;7215:2;7203:9;7194:7;7190:23;7186:32;7183:119;;;7221:79;;:::i;:::-;7183:119;7341:1;7366:53;7411:7;7402:6;7391:9;7387:22;7366:53;:::i;:::-;7356:63;;7312:117;7468:2;7494:53;7539:7;7530:6;7519:9;7515:22;7494:53;:::i;:::-;7484:63;;7439:118;7090:474;;;;;:::o;7570:180::-;7618:77;7615:1;7608:88;7715:4;7712:1;7705:15;7739:4;7736:1;7729:15;7756:320;7800:6;7837:1;7831:4;7827:12;7817:22;;7884:1;7878:4;7874:12;7905:18;7895:81;;7961:4;7953:6;7949:17;7939:27;;7895:81;8023:2;8015:6;8012:14;7992:18;7989:38;7986:84;;8042:18;;:::i;:::-;7986:84;7807:269;7756:320;;;:::o;8082:229::-;8222:34;8218:1;8210:6;8206:14;8199:58;8291:12;8286:2;8278:6;8274:15;8267:37;8082:229;:::o;8317:366::-;8459:3;8480:67;8544:2;8539:3;8480:67;:::i;:::-;8473:74;;8556:93;8645:3;8556:93;:::i;:::-;8674:2;8669:3;8665:12;8658:19;;8317:366;;;:::o;8689:419::-;8855:4;8893:2;8882:9;8878:18;8870:26;;8942:9;8936:4;8932:20;8928:1;8917:9;8913:17;8906:47;8970:131;9096:4;8970:131;:::i;:::-;8962:139;;8689:419;;;:::o;9114:182::-;9254:34;9250:1;9242:6;9238:14;9231:58;9114:182;:::o;9302:366::-;9444:3;9465:67;9529:2;9524:3;9465:67;:::i;:::-;9458:74;;9541:93;9630:3;9541:93;:::i;:::-;9659:2;9654:3;9650:12;9643:19;;9302:366;;;:::o;9674:419::-;9840:4;9878:2;9867:9;9863:18;9855:26;;9927:9;9921:4;9917:20;9913:1;9902:9;9898:17;9891:47;9955:131;10081:4;9955:131;:::i;:::-;9947:139;;9674:419;;;:::o;10099:177::-;10239:29;10235:1;10227:6;10223:14;10216:53;10099:177;:::o;10282:366::-;10424:3;10445:67;10509:2;10504:3;10445:67;:::i;:::-;10438:74;;10521:93;10610:3;10521:93;:::i;:::-;10639:2;10634:3;10630:12;10623:19;;10282:366;;;:::o;10654:419::-;10820:4;10858:2;10847:9;10843:18;10835:26;;10907:9;10901:4;10897:20;10893:1;10882:9;10878:17;10871:47;10935:131;11061:4;10935:131;:::i;:::-;10927:139;;10654:419;;;:::o;11079:180::-;11127:77;11124:1;11117:88;11224:4;11221:1;11214:15;11248:4;11245:1;11238:15;11265:180;11313:77;11310:1;11303:88;11410:4;11407:1;11400:15;11434:4;11431:1;11424:15;11451:194;11491:4;11511:20;11529:1;11511:20;:::i;:::-;11506:25;;11545:20;11563:1;11545:20;:::i;:::-;11540:25;;11589:1;11586;11582:9;11574:17;;11613:1;11607:4;11604:11;11601:37;;;11618:18;;:::i;:::-;11601:37;11451:194;;;;:::o;11651:180::-;11699:77;11696:1;11689:88;11796:4;11793:1;11786:15;11820:4;11817:1;11810:15;11837:233;11876:3;11899:24;11917:5;11899:24;:::i;:::-;11890:33;;11945:66;11938:5;11935:77;11932:103;;12015:18;;:::i;:::-;11932:103;12062:1;12055:5;12051:13;12044:20;;11837:233;;;:::o;12076:231::-;12216:34;12212:1;12204:6;12200:14;12193:58;12285:14;12280:2;12272:6;12268:15;12261:39;12076:231;:::o;12313:366::-;12455:3;12476:67;12540:2;12535:3;12476:67;:::i;:::-;12469:74;;12552:93;12641:3;12552:93;:::i;:::-;12670:2;12665:3;12661:12;12654:19;;12313:366;;;:::o;12685:419::-;12851:4;12889:2;12878:9;12874:18;12866:26;;12938:9;12932:4;12928:20;12924:1;12913:9;12909:17;12902:47;12966:131;13092:4;12966:131;:::i;:::-;12958:139;;12685:419;;;:::o;13110:181::-;13250:33;13246:1;13238:6;13234:14;13227:57;13110:181;:::o;13297:366::-;13439:3;13460:67;13524:2;13519:3;13460:67;:::i;:::-;13453:74;;13536:93;13625:3;13536:93;:::i;:::-;13654:2;13649:3;13645:12;13638:19;;13297:366;;;:::o;13669:419::-;13835:4;13873:2;13862:9;13858:18;13850:26;;13922:9;13916:4;13912:20;13908:1;13897:9;13893:17;13886:47;13950:131;14076:4;13950:131;:::i;:::-;13942:139;;13669:419;;;:::o;14094:162::-;14234:14;14230:1;14222:6;14218:14;14211:38;14094:162;:::o;14262:366::-;14404:3;14425:67;14489:2;14484:3;14425:67;:::i;:::-;14418:74;;14501:93;14590:3;14501:93;:::i;:::-;14619:2;14614:3;14610:12;14603:19;;14262:366;;;:::o;14634:419::-;14800:4;14838:2;14827:9;14823:18;14815:26;;14887:9;14881:4;14877:20;14873:1;14862:9;14858:17;14851:47;14915:131;15041:4;14915:131;:::i;:::-;14907:139;;14634:419;;;:::o;15059:225::-;15199:34;15195:1;15187:6;15183:14;15176:58;15268:8;15263:2;15255:6;15251:15;15244:33;15059:225;:::o;15290:366::-;15432:3;15453:67;15517:2;15512:3;15453:67;:::i;:::-;15446:74;;15529:93;15618:3;15529:93;:::i;:::-;15647:2;15642:3;15638:12;15631:19;;15290:366;;;:::o;15662:419::-;15828:4;15866:2;15855:9;15851:18;15843:26;;15915:9;15909:4;15905:20;15901:1;15890:9;15886:17;15879:47;15943:131;16069:4;15943:131;:::i;:::-;15935:139;;15662:419;;;:::o;16087:223::-;16227:34;16223:1;16215:6;16211:14;16204:58;16296:6;16291:2;16283:6;16279:15;16272:31;16087:223;:::o;16316:366::-;16458:3;16479:67;16543:2;16538:3;16479:67;:::i;:::-;16472:74;;16555:93;16644:3;16555:93;:::i;:::-;16673:2;16668:3;16664:12;16657:19;;16316:366;;;:::o;16688:419::-;16854:4;16892:2;16881:9;16877:18;16869:26;;16941:9;16935:4;16931:20;16927:1;16916:9;16912:17;16905:47;16969:131;17095:4;16969:131;:::i;:::-;16961:139;;16688:419;;;:::o;17113:221::-;17253:34;17249:1;17241:6;17237:14;17230:58;17322:4;17317:2;17309:6;17305:15;17298:29;17113:221;:::o;17340:366::-;17482:3;17503:67;17567:2;17562:3;17503:67;:::i;:::-;17496:74;;17579:93;17668:3;17579:93;:::i;:::-;17697:2;17692:3;17688:12;17681:19;;17340:366;;;:::o;17712:419::-;17878:4;17916:2;17905:9;17901:18;17893:26;;17965:9;17959:4;17955:20;17951:1;17940:9;17936:17;17929:47;17993:131;18119:4;17993:131;:::i;:::-;17985:139;;17712:419;;;:::o;18137:224::-;18277:34;18273:1;18265:6;18261:14;18254:58;18346:7;18341:2;18333:6;18329:15;18322:32;18137:224;:::o;18367:366::-;18509:3;18530:67;18594:2;18589:3;18530:67;:::i;:::-;18523:74;;18606:93;18695:3;18606:93;:::i;:::-;18724:2;18719:3;18715:12;18708:19;;18367:366;;;:::o;18739:419::-;18905:4;18943:2;18932:9;18928:18;18920:26;;18992:9;18986:4;18982:20;18978:1;18967:9;18963:17;18956:47;19020:131;19146:4;19020:131;:::i;:::-;19012:139;;18739:419;;;:::o;19164:228::-;19304:34;19300:1;19292:6;19288:14;19281:58;19373:11;19368:2;19360:6;19356:15;19349:36;19164:228;:::o;19398:366::-;19540:3;19561:67;19625:2;19620:3;19561:67;:::i;:::-;19554:74;;19637:93;19726:3;19637:93;:::i;:::-;19755:2;19750:3;19746:12;19739:19;;19398:366;;;:::o;19770:419::-;19936:4;19974:2;19963:9;19959:18;19951:26;;20023:9;20017:4;20013:20;20009:1;19998:9;19994:17;19987:47;20051:131;20177:4;20051:131;:::i;:::-;20043:139;;19770:419;;;:::o;20195:191::-;20235:3;20254:20;20272:1;20254:20;:::i;:::-;20249:25;;20288:20;20306:1;20288:20;:::i;:::-;20283:25;;20331:1;20328;20324:9;20317:16;;20352:3;20349:1;20346:10;20343:36;;;20359:18;;:::i;:::-;20343:36;20195:191;;;;:::o;20392:177::-;20532:29;20528:1;20520:6;20516:14;20509:53;20392:177;:::o;20575:366::-;20717:3;20738:67;20802:2;20797:3;20738:67;:::i;:::-;20731:74;;20814:93;20903:3;20814:93;:::i;:::-;20932:2;20927:3;20923:12;20916:19;;20575:366;;;:::o;20947:419::-;21113:4;21151:2;21140:9;21136:18;21128:26;;21200:9;21194:4;21190:20;21186:1;21175:9;21171:17;21164:47;21228:131;21354:4;21228:131;:::i;:::-;21220:139;;20947:419;;;:::o;21372:227::-;21512:34;21508:1;21500:6;21496:14;21489:58;21581:10;21576:2;21568:6;21564:15;21557:35;21372:227;:::o;21605:366::-;21747:3;21768:67;21832:2;21827:3;21768:67;:::i;:::-;21761:74;;21844:93;21933:3;21844:93;:::i;:::-;21962:2;21957:3;21953:12;21946:19;;21605:366;;;:::o;21977:419::-;22143:4;22181:2;22170:9;22166:18;22158:26;;22230:9;22224:4;22220:20;22216:1;22205:9;22201:17;22194:47;22258:131;22384:4;22258:131;:::i;:::-;22250:139;;21977:419;;;:::o;22402:180::-;22450:77;22447:1;22440:88;22547:4;22544:1;22537:15;22571:4;22568:1;22561:15;22588:185;22628:1;22645:20;22663:1;22645:20;:::i;:::-;22640:25;;22679:20;22697:1;22679:20;:::i;:::-;22674:25;;22718:1;22708:35;;22723:18;;:::i;:::-;22708:35;22765:1;22762;22758:9;22753:14;;22588:185;;;;:::o;22779:410::-;22819:7;22842:20;22860:1;22842:20;:::i;:::-;22837:25;;22876:20;22894:1;22876:20;:::i;:::-;22871:25;;22931:1;22928;22924:9;22953:30;22971:11;22953:30;:::i;:::-;22942:41;;23132:1;23123:7;23119:15;23116:1;23113:22;23093:1;23086:9;23066:83;23043:139;;23162:18;;:::i;:::-;23043:139;22827:362;22779:410;;;;:::o;23195:220::-;23335:34;23331:1;23323:6;23319:14;23312:58;23404:3;23399:2;23391:6;23387:15;23380:28;23195:220;:::o;23421:366::-;23563:3;23584:67;23648:2;23643:3;23584:67;:::i;:::-;23577:74;;23660:93;23749:3;23660:93;:::i;:::-;23778:2;23773:3;23769:12;23762:19;;23421:366;;;:::o;23793:419::-;23959:4;23997:2;23986:9;23982:18;23974:26;;24046:9;24040:4;24036:20;24032:1;24021:9;24017:17;24010:47;24074:131;24200:4;24074:131;:::i;:::-;24066:139;;23793:419;;;:::o

Swarm Source

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