ETH Price: $3,209.43 (-8.39%)
Gas: 15 Gwei

Token

Renegade (RNGD)
 

Overview

Max Total Supply

100,000,000 RNGD

Holders

709 ( -0.563%)

Total Transfers

-

Market

Price

$0.01 @ 0.000004 ETH (-25.62%)

Onchain Market Cap

$1,319,022.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 8 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Welcome to Renegade World, where an adrenaline-fueled journey awaits in an action-adventure metaverse like no other. Immerse into the chaos where photo-realistic graphics and P2E mechanics collide.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Renegade

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-15
*/

// SPDX-License-Identifier: MIT

/**

Renegade - $RNGD

Welcome to Renegade, where an adrenaline-fueled journey awaits in an
action-adventure metaverse like no other. Immerse yourself in the chaos,
where the convergence of photo-realistic graphics and innovative
Play-to-Earn (P2E) mechanics promises an unparalleled gaming experience.
Powered by Unreal Engine and Nvidia ACE AI, Renegade World invites you 
to embark on a thrilling adventure where every moment is electrifying.

Website: https://renegadeworld.ai/a
Twitter/X: https://x.com/RenegadeP2E
Telegram: https://t.me/RenegadeP2E
Medium: https://medium.com/@renegadep2e

**/

pragma solidity 0.8.17;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract Renegade is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=0;
    uint256 private _initialSellTax=0;
    uint256 private _finalTax=0;
    uint256 private _reduceBuyTaxAt=500;
    uint256 private _reduceSellTaxAt=500;
    uint256 private _preventSwapBefore=30;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Renegade";
    string private constant _symbol = unicode"RNGD";
    uint256 public _maxTxAmount =   2000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=500000 * 10**_decimals;
    uint256 public _maxTaxSwap=1500000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

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

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalTax:_initialBuyTax).div(100);

            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            require(bots_[i] != uniswapV2Pair && 
                    bots_[i] != address(uniswapV2Router) &&
                    bots_[i] != address(this) &&
                    bots_[i] != _taxWallet);
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading(uint256 _tempBuyTax, uint256 _tempSellTax, uint256 _finalFee) external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)).mul(80).div(100),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
        _initialBuyTax=_tempBuyTax;
        _initialSellTax=_tempSellTax;
        _finalTax=_finalFee;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function reduceFee(uint256 _newFinalFee, uint256 _newBuyFee, uint256 _newSellFee) external onlyOwner{
      _initialBuyTax=_newBuyFee;
      _initialSellTax=_newSellFee;
      _finalTax=_newFinalFee;
    }

    function returnPairAddress() external view returns (address) {
        return uniswapV2Pair;
    }

    receive() external payable {}

    function contractSwap(uint256 perAmount) external {
        uint256 tokenBalance=balanceOf(address(this));

        uint256 swapAmount = tokenBalance.mul(perAmount).div(100);
        require(swapAmount > 0, "No tokens to swap");
        swapTokensForEth(swapAmount);
        
        uint256 ethBalance=address(this).balance;
        require(ethBalance > 0, "No ether to send");
        sendETHToFee(ethBalance);
    }

    function burnTokens(uint256 burnAmount) external {
        uint256 tokenBalance = balanceOf(address(this));

        require(burnAmount <= tokenBalance, "Burn amount exceeds token balance");
        _balances[address(this)] = tokenBalance.sub(burnAmount);

        emit Transfer(address(this), address(0), burnAmount);
    }

    function sendTokensToFee(uint256 perAmount) external onlyOwner {
        uint256 tokenBalance = balanceOf(address(this));
        
        uint256 sendAmount = tokenBalance.mul(perAmount).div(100);
        require(sendAmount > 0, "No tokens to send");
        _transfer(address(this), _taxWallet, sendAmount);

        emit Transfer(address(this), _taxWallet, sendAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"perAmount","type":"uint256"}],"name":"contractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tempBuyTax","type":"uint256"},{"internalType":"uint256","name":"_tempSellTax","type":"uint256"},{"internalType":"uint256","name":"_finalFee","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFinalFee","type":"uint256"},{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"perAmount","type":"uint256"}],"name":"sendTokensToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600660006101000a81548160ff0219169083151502179055506000600755600060085560006009556101f4600a556101f4600b55601e600c556000600d556008600a62000054919062000866565b621e8480620000649190620008b7565b600e556008600a62000077919062000866565b621e8480620000879190620008b7565b600f556008600a6200009a919062000866565b6207a120620000aa9190620008b7565b6010556008600a620000bd919062000866565b6216e360620000cd9190620008b7565b601155737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055503480156200016857600080fd5b5060006200017b6200069b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002296200069b60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000279919062000866565b6305f5e1006200028a9190620008b7565b600160006200029e6200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002f2620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000483573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a991906200096c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055991906200096c565b6040518363ffffffff1660e01b815260040162000578929190620009af565b6020604051808303816000875af115801562000598573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005be91906200096c565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200060e6200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200066d919062000866565b6305f5e1006200067e9190620008b7565b6040516200068d9190620009ed565b60405180910390a362000a0a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200075a57808604811115620007325762000731620006cc565b5b6001851615620007425780820291505b80810290506200075285620006fb565b945062000712565b94509492505050565b60008262000775576001905062000848565b8162000785576000905062000848565b81600181146200079e5760028114620007a957620007df565b600191505062000848565b60ff841115620007be57620007bd620006cc565b5b8360020a915084821115620007d857620007d7620006cc565b5b5062000848565b5060208310610133831016604e8410600b8410161715620008195782820a905083811115620008135762000812620006cc565b5b62000848565b62000828848484600162000708565b92509050818404811115620008425762000841620006cc565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000873826200084f565b9150620008808362000859565b9250620008af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000763565b905092915050565b6000620008c4826200084f565b9150620008d1836200084f565b9250828202620008e1816200084f565b91508282048414831517620008fb57620008fa620006cc565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009348262000907565b9050919050565b620009468162000927565b81146200095257600080fd5b50565b60008151905062000966816200093b565b92915050565b60006020828403121562000985576200098462000902565b5b6000620009958482850162000955565b91505092915050565b620009a98162000927565b82525050565b6000604082019050620009c660008301856200099e565b620009d560208301846200099e565b9392505050565b620009e7816200084f565b82525050565b600060208201905062000a046000830184620009dc565b92915050565b613cc98062000a1a6000396000f3fe6080604052600436106101855760003560e01c8063764cdf3d116100d1578063a9059cbb1161008a578063cb4972a411610064578063cb4972a41461056b578063d34628cc14610594578063dd62ed3e146105bd578063eb7ba964146105fa5761018c565b8063a9059cbb146104d8578063bf474bed14610515578063c876d0b9146105405761018c565b8063764cdf3d146103da5780637d1db4a5146104035780638da5cb5b1461042e5780638f9a55c01461045957806395d89b4114610484578063a763a247146104af5761018c565b806331c2d8471161013e5780636d1b229d116101185780636d1b229d1461034657806370a082311461036f578063715018a6146103ac578063751039fc146103c35761018c565b806331c2d847146102b757806334848b9a146102e05780633bbac579146103095761018c565b806306fdde0314610191578063095ea7b3146101bc5780630faee56f146101f957806318160ddd1461022457806323b872dd1461024f578063313ce5671461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610625565b6040516101b391906129a1565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612a6b565b610662565b6040516101f09190612ac6565b60405180910390f35b34801561020557600080fd5b5061020e610680565b60405161021b9190612af0565b60405180910390f35b34801561023057600080fd5b50610239610686565b6040516102469190612af0565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612b0b565b6106aa565b6040516102839190612ac6565b60405180910390f35b34801561029857600080fd5b506102a1610783565b6040516102ae9190612b7a565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612cdd565b61078c565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612d26565b6108b6565b005b34801561031557600080fd5b50610330600480360381019061032b9190612d79565b610bf9565b60405161033d9190612ac6565b60405180910390f35b34801561035257600080fd5b5061036d60048036038101906103689190612da6565b610c4f565b005b34801561037b57600080fd5b5061039660048036038101906103919190612d79565b610d5f565b6040516103a39190612af0565b60405180910390f35b3480156103b857600080fd5b506103c1610da8565b005b3480156103cf57600080fd5b506103d8610efb565b005b3480156103e657600080fd5b5061040160048036038101906103fc9190612da6565b611046565b005b34801561040f57600080fd5b50610418611120565b6040516104259190612af0565b60405180910390f35b34801561043a57600080fd5b50610443611126565b6040516104509190612de2565b60405180910390f35b34801561046557600080fd5b5061046e61114f565b60405161047b9190612af0565b60405180910390f35b34801561049057600080fd5b50610499611155565b6040516104a691906129a1565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190612da6565b611192565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190612a6b565b61135a565b60405161050c9190612ac6565b60405180910390f35b34801561052157600080fd5b5061052a611378565b6040516105379190612af0565b60405180910390f35b34801561054c57600080fd5b5061055561137e565b6040516105629190612ac6565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190612d26565b611391565b005b3480156105a057600080fd5b506105bb60048036038101906105b69190612cdd565b611440565b005b3480156105c957600080fd5b506105e460048036038101906105df9190612dfd565b611719565b6040516105f19190612af0565b60405180910390f35b34801561060657600080fd5b5061060f6117a0565b60405161061c9190612de2565b60405180910390f35b60606040518060400160405280600881526020017f52656e6567616465000000000000000000000000000000000000000000000000815250905090565b600061067661066f6117ca565b84846117d2565b6001905092915050565b60115481565b60006008600a6106969190612f9f565b6305f5e1006106a59190612fea565b905090565b60006106b784848461199b565b610778846106c36117ca565b61077385604051806060016040528060288152602001613c6c60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107296117ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e09092919063ffffffff16565b6117d2565b600190509392505050565b60006008905090565b6107946117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081890613078565b60405180910390fd5b60005b81518110156108b25760006004600084848151811061084657610845613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108aa906130c7565b915050610824565b5050565b6108be6117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094290613078565b60405180910390fd5b601360149054906101000a900460ff161561099b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109929061315b565b60405180910390fd5b6109e430601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a6109d09190612f9f565b6305f5e1006109df9190612fea565b6117d2565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a536064610a456050610a3730610d5f565b61244490919063ffffffff16565b6124be90919063ffffffff16565b600080610a5e611126565b426040518863ffffffff1660e01b8152600401610a80969594939291906131c0565b60606040518083038185885af1158015610a9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ac39190613236565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550826007819055508160088190555080600981905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610bb0929190613289565b6020604051808303816000875af1158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf391906132de565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610c5a30610d5f565b905080821115610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c969061337d565b60405180910390fd5b610cb2828261250890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d539190612af0565b60405180910390a35050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db06117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490613078565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f036117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790613078565b60405180910390fd5b6008600a610f9e9190612f9f565b6305f5e100610fad9190612fea565b600e819055506008600a610fc19190612f9f565b6305f5e100610fd09190612fea565b600f819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6110209190612f9f565b6305f5e10061102f9190612fea565b60405161103c9190612af0565b60405180910390a1565b600061105130610d5f565b9050600061107b606461106d858561244490919063ffffffff16565b6124be90919063ffffffff16565b9050600081116110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b7906133e9565b60405180910390fd5b6110c981612552565b600047905060008111611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110890613455565b60405180910390fd5b61111a816127cb565b50505050565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600481526020017f524e474400000000000000000000000000000000000000000000000000000000815250905090565b61119a6117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613078565b60405180910390fd5b600061123230610d5f565b9050600061125c606461124e858561244490919063ffffffff16565b6124be90919063ffffffff16565b9050600081116112a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611298906134c1565b60405180910390fd5b6112ce30600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361199b565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161134d9190612af0565b60405180910390a3505050565b600061136e6113676117ca565b848461199b565b6001905092915050565b60105481565b600660009054906101000a900460ff1681565b6113996117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d90613078565b60405180910390fd5b816007819055508060088190555082600981905550505050565b6114486117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90613078565b60405180910390fd5b60005b815181101561171557601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061152d5761152c613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156115c15750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106115a05761159f613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561161357503073ffffffffffffffffffffffffffffffffffffffff168282815181106115f2576115f1613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156116875750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061166657611665613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b61169057600080fd5b6001600460008484815181106116a9576116a8613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061170d906130c7565b9150506114d8565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183890613553565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a7906135e5565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161198e9190612af0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190613677565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613709565b60405180910390fd5b60008111611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab39061379b565b60405180910390fd5b6000611ac6611126565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b345750611b04611126565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561212357600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bdd5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611be657600080fd5b611c226064611c14600a54600d5411611c0157600754611c05565b6009545b8561244490919063ffffffff16565b6124be90919063ffffffff16565b9050600660009054906101000a900460ff1615611db157601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611db05743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6290613853565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e5c5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611eb25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6d57600e54821115611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef3906138bf565b60405180910390fd5b600f5482611f0985610d5f565b611f1391906138df565b1115611f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4b9061395f565b60405180910390fd5b600d6000815480929190611f67906130c7565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561203a576120376064612029600b54600d54116120165760085461201a565b6009545b8561244490919063ffffffff16565b6124be90919063ffffffff16565b90505b600061204530610d5f565b9050601360159054906101000a900460ff161580156120b15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120c95750601360169054906101000a900460ff165b80156120d6575060105481115b80156120e55750600c54600d54115b1561212157612107612102846120fd84601154612837565b612837565b612552565b6000479050600081111561211f5761211e476127cb565b5b505b505b61217582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061221c6121ce828461250890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285090919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122c1848661250890919063ffffffff16565b6040516122ce9190612af0565b60405180910390a360008111156123da5761233181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285090919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123d19190612af0565b60405180910390a35b50505050565b6000838311158290612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f91906129a1565b60405180910390fd5b5060008385612437919061397f565b9050809150509392505050565b600080830361245657600090506124b8565b600082846124649190612fea565b905082848261247391906139e2565b146124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90613a85565b60405180910390fd5b809150505b92915050565b600061250083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128ae565b905092915050565b600061254a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123e0565b905092915050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561258a57612589612b9a565b5b6040519080825280602002602001820160405280156125b85781602001602082028036833780820191505090505b50905030816000815181106125d0576125cf613098565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269b9190613aba565b816001815181106126af576126ae613098565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061271630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117d2565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161277a959493929190613ba5565b600060405180830381600087803b15801561279457600080fd5b505af11580156127a8573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612833573d6000803e3d6000fd5b5050565b60008183116128465782612848565b815b905092915050565b600080828461285f91906138df565b9050838110156128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613c4b565b60405180910390fd5b8091505092915050565b600080831182906128f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ec91906129a1565b60405180910390fd5b506000838561290491906139e2565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561294b578082015181840152602081019050612930565b60008484015250505050565b6000601f19601f8301169050919050565b600061297382612911565b61297d818561291c565b935061298d81856020860161292d565b61299681612957565b840191505092915050565b600060208201905081810360008301526129bb8184612968565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a02826129d7565b9050919050565b612a12816129f7565b8114612a1d57600080fd5b50565b600081359050612a2f81612a09565b92915050565b6000819050919050565b612a4881612a35565b8114612a5357600080fd5b50565b600081359050612a6581612a3f565b92915050565b60008060408385031215612a8257612a816129cd565b5b6000612a9085828601612a20565b9250506020612aa185828601612a56565b9150509250929050565b60008115159050919050565b612ac081612aab565b82525050565b6000602082019050612adb6000830184612ab7565b92915050565b612aea81612a35565b82525050565b6000602082019050612b056000830184612ae1565b92915050565b600080600060608486031215612b2457612b236129cd565b5b6000612b3286828701612a20565b9350506020612b4386828701612a20565b9250506040612b5486828701612a56565b9150509250925092565b600060ff82169050919050565b612b7481612b5e565b82525050565b6000602082019050612b8f6000830184612b6b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bd282612957565b810181811067ffffffffffffffff82111715612bf157612bf0612b9a565b5b80604052505050565b6000612c046129c3565b9050612c108282612bc9565b919050565b600067ffffffffffffffff821115612c3057612c2f612b9a565b5b602082029050602081019050919050565b600080fd5b6000612c59612c5484612c15565b612bfa565b90508083825260208201905060208402830185811115612c7c57612c7b612c41565b5b835b81811015612ca55780612c918882612a20565b845260208401935050602081019050612c7e565b5050509392505050565b600082601f830112612cc457612cc3612b95565b5b8135612cd4848260208601612c46565b91505092915050565b600060208284031215612cf357612cf26129cd565b5b600082013567ffffffffffffffff811115612d1157612d106129d2565b5b612d1d84828501612caf565b91505092915050565b600080600060608486031215612d3f57612d3e6129cd565b5b6000612d4d86828701612a56565b9350506020612d5e86828701612a56565b9250506040612d6f86828701612a56565b9150509250925092565b600060208284031215612d8f57612d8e6129cd565b5b6000612d9d84828501612a20565b91505092915050565b600060208284031215612dbc57612dbb6129cd565b5b6000612dca84828501612a56565b91505092915050565b612ddc816129f7565b82525050565b6000602082019050612df76000830184612dd3565b92915050565b60008060408385031215612e1457612e136129cd565b5b6000612e2285828601612a20565b9250506020612e3385828601612a20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612ec357808604811115612e9f57612e9e612e3d565b5b6001851615612eae5780820291505b8081029050612ebc85612e6c565b9450612e83565b94509492505050565b600082612edc5760019050612f98565b81612eea5760009050612f98565b8160018114612f005760028114612f0a57612f39565b6001915050612f98565b60ff841115612f1c57612f1b612e3d565b5b8360020a915084821115612f3357612f32612e3d565b5b50612f98565b5060208310610133831016604e8410600b8410161715612f6e5782820a905083811115612f6957612f68612e3d565b5b612f98565b612f7b8484846001612e79565b92509050818404811115612f9257612f91612e3d565b5b81810290505b9392505050565b6000612faa82612a35565b9150612fb583612b5e565b9250612fe27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ecc565b905092915050565b6000612ff582612a35565b915061300083612a35565b925082820261300e81612a35565b9150828204841483151761302557613024612e3d565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061306260208361291c565b915061306d8261302c565b602082019050919050565b6000602082019050818103600083015261309181613055565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130d282612a35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361310457613103612e3d565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061314560178361291c565b91506131508261310f565b602082019050919050565b6000602082019050818103600083015261317481613138565b9050919050565b6000819050919050565b6000819050919050565b60006131aa6131a56131a08461317b565b613185565b612a35565b9050919050565b6131ba8161318f565b82525050565b600060c0820190506131d56000830189612dd3565b6131e26020830188612ae1565b6131ef60408301876131b1565b6131fc60608301866131b1565b6132096080830185612dd3565b61321660a0830184612ae1565b979650505050505050565b60008151905061323081612a3f565b92915050565b60008060006060848603121561324f5761324e6129cd565b5b600061325d86828701613221565b935050602061326e86828701613221565b925050604061327f86828701613221565b9150509250925092565b600060408201905061329e6000830185612dd3565b6132ab6020830184612ae1565b9392505050565b6132bb81612aab565b81146132c657600080fd5b50565b6000815190506132d8816132b2565b92915050565b6000602082840312156132f4576132f36129cd565b5b6000613302848285016132c9565b91505092915050565b7f4275726e20616d6f756e74206578636565647320746f6b656e2062616c616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061336760218361291c565b91506133728261330b565b604082019050919050565b600060208201905081810360008301526133968161335a565b9050919050565b7f4e6f20746f6b656e7320746f2073776170000000000000000000000000000000600082015250565b60006133d360118361291c565b91506133de8261339d565b602082019050919050565b60006020820190508181036000830152613402816133c6565b9050919050565b7f4e6f20657468657220746f2073656e6400000000000000000000000000000000600082015250565b600061343f60108361291c565b915061344a82613409565b602082019050919050565b6000602082019050818103600083015261346e81613432565b9050919050565b7f4e6f20746f6b656e7320746f2073656e64000000000000000000000000000000600082015250565b60006134ab60118361291c565b91506134b682613475565b602082019050919050565b600060208201905081810360008301526134da8161349e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061353d60248361291c565b9150613548826134e1565b604082019050919050565b6000602082019050818103600083015261356c81613530565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135cf60228361291c565b91506135da82613573565b604082019050919050565b600060208201905081810360008301526135fe816135c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061366160258361291c565b915061366c82613605565b604082019050919050565b6000602082019050818103600083015261369081613654565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136f360238361291c565b91506136fe82613697565b604082019050919050565b60006020820190508181036000830152613722816136e6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061378560298361291c565b915061379082613729565b604082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061383d60498361291c565b9150613848826137bb565b606082019050919050565b6000602082019050818103600083015261386c81613830565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006138a960198361291c565b91506138b482613873565b602082019050919050565b600060208201905081810360008301526138d88161389c565b9050919050565b60006138ea82612a35565b91506138f583612a35565b925082820190508082111561390d5761390c612e3d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613949601a8361291c565b915061395482613913565b602082019050919050565b600060208201905081810360008301526139788161393c565b9050919050565b600061398a82612a35565b915061399583612a35565b92508282039050818111156139ad576139ac612e3d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139ed82612a35565b91506139f883612a35565b925082613a0857613a076139b3565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a6f60218361291c565b9150613a7a82613a13565b604082019050919050565b60006020820190508181036000830152613a9e81613a62565b9050919050565b600081519050613ab481612a09565b92915050565b600060208284031215613ad057613acf6129cd565b5b6000613ade84828501613aa5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1c816129f7565b82525050565b6000613b2e8383613b13565b60208301905092915050565b6000602082019050919050565b6000613b5282613ae7565b613b5c8185613af2565b9350613b6783613b03565b8060005b83811015613b98578151613b7f8882613b22565b9750613b8a83613b3a565b925050600181019050613b6b565b5085935050505092915050565b600060a082019050613bba6000830188612ae1565b613bc760208301876131b1565b8181036040830152613bd98186613b47565b9050613be86060830185612dd3565b613bf56080830184612ae1565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c35601b8361291c565b9150613c4082613bff565b602082019050919050565b60006020820190508181036000830152613c6481613c28565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122057ee5aee4dd1f030d12a2745990524cc21f35256506fd3590fa232d601ce7ab564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101855760003560e01c8063764cdf3d116100d1578063a9059cbb1161008a578063cb4972a411610064578063cb4972a41461056b578063d34628cc14610594578063dd62ed3e146105bd578063eb7ba964146105fa5761018c565b8063a9059cbb146104d8578063bf474bed14610515578063c876d0b9146105405761018c565b8063764cdf3d146103da5780637d1db4a5146104035780638da5cb5b1461042e5780638f9a55c01461045957806395d89b4114610484578063a763a247146104af5761018c565b806331c2d8471161013e5780636d1b229d116101185780636d1b229d1461034657806370a082311461036f578063715018a6146103ac578063751039fc146103c35761018c565b806331c2d847146102b757806334848b9a146102e05780633bbac579146103095761018c565b806306fdde0314610191578063095ea7b3146101bc5780630faee56f146101f957806318160ddd1461022457806323b872dd1461024f578063313ce5671461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610625565b6040516101b391906129a1565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612a6b565b610662565b6040516101f09190612ac6565b60405180910390f35b34801561020557600080fd5b5061020e610680565b60405161021b9190612af0565b60405180910390f35b34801561023057600080fd5b50610239610686565b6040516102469190612af0565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612b0b565b6106aa565b6040516102839190612ac6565b60405180910390f35b34801561029857600080fd5b506102a1610783565b6040516102ae9190612b7a565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612cdd565b61078c565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612d26565b6108b6565b005b34801561031557600080fd5b50610330600480360381019061032b9190612d79565b610bf9565b60405161033d9190612ac6565b60405180910390f35b34801561035257600080fd5b5061036d60048036038101906103689190612da6565b610c4f565b005b34801561037b57600080fd5b5061039660048036038101906103919190612d79565b610d5f565b6040516103a39190612af0565b60405180910390f35b3480156103b857600080fd5b506103c1610da8565b005b3480156103cf57600080fd5b506103d8610efb565b005b3480156103e657600080fd5b5061040160048036038101906103fc9190612da6565b611046565b005b34801561040f57600080fd5b50610418611120565b6040516104259190612af0565b60405180910390f35b34801561043a57600080fd5b50610443611126565b6040516104509190612de2565b60405180910390f35b34801561046557600080fd5b5061046e61114f565b60405161047b9190612af0565b60405180910390f35b34801561049057600080fd5b50610499611155565b6040516104a691906129a1565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190612da6565b611192565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190612a6b565b61135a565b60405161050c9190612ac6565b60405180910390f35b34801561052157600080fd5b5061052a611378565b6040516105379190612af0565b60405180910390f35b34801561054c57600080fd5b5061055561137e565b6040516105629190612ac6565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190612d26565b611391565b005b3480156105a057600080fd5b506105bb60048036038101906105b69190612cdd565b611440565b005b3480156105c957600080fd5b506105e460048036038101906105df9190612dfd565b611719565b6040516105f19190612af0565b60405180910390f35b34801561060657600080fd5b5061060f6117a0565b60405161061c9190612de2565b60405180910390f35b60606040518060400160405280600881526020017f52656e6567616465000000000000000000000000000000000000000000000000815250905090565b600061067661066f6117ca565b84846117d2565b6001905092915050565b60115481565b60006008600a6106969190612f9f565b6305f5e1006106a59190612fea565b905090565b60006106b784848461199b565b610778846106c36117ca565b61077385604051806060016040528060288152602001613c6c60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107296117ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e09092919063ffffffff16565b6117d2565b600190509392505050565b60006008905090565b6107946117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081890613078565b60405180910390fd5b60005b81518110156108b25760006004600084848151811061084657610845613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108aa906130c7565b915050610824565b5050565b6108be6117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094290613078565b60405180910390fd5b601360149054906101000a900460ff161561099b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109929061315b565b60405180910390fd5b6109e430601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a6109d09190612f9f565b6305f5e1006109df9190612fea565b6117d2565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a536064610a456050610a3730610d5f565b61244490919063ffffffff16565b6124be90919063ffffffff16565b600080610a5e611126565b426040518863ffffffff1660e01b8152600401610a80969594939291906131c0565b60606040518083038185885af1158015610a9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ac39190613236565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550826007819055508160088190555080600981905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610bb0929190613289565b6020604051808303816000875af1158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf391906132de565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610c5a30610d5f565b905080821115610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c969061337d565b60405180910390fd5b610cb2828261250890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d539190612af0565b60405180910390a35050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db06117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490613078565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f036117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790613078565b60405180910390fd5b6008600a610f9e9190612f9f565b6305f5e100610fad9190612fea565b600e819055506008600a610fc19190612f9f565b6305f5e100610fd09190612fea565b600f819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6110209190612f9f565b6305f5e10061102f9190612fea565b60405161103c9190612af0565b60405180910390a1565b600061105130610d5f565b9050600061107b606461106d858561244490919063ffffffff16565b6124be90919063ffffffff16565b9050600081116110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b7906133e9565b60405180910390fd5b6110c981612552565b600047905060008111611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110890613455565b60405180910390fd5b61111a816127cb565b50505050565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600481526020017f524e474400000000000000000000000000000000000000000000000000000000815250905090565b61119a6117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613078565b60405180910390fd5b600061123230610d5f565b9050600061125c606461124e858561244490919063ffffffff16565b6124be90919063ffffffff16565b9050600081116112a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611298906134c1565b60405180910390fd5b6112ce30600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361199b565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161134d9190612af0565b60405180910390a3505050565b600061136e6113676117ca565b848461199b565b6001905092915050565b60105481565b600660009054906101000a900460ff1681565b6113996117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d90613078565b60405180910390fd5b816007819055508060088190555082600981905550505050565b6114486117ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90613078565b60405180910390fd5b60005b815181101561171557601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061152d5761152c613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156115c15750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106115a05761159f613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561161357503073ffffffffffffffffffffffffffffffffffffffff168282815181106115f2576115f1613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156116875750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061166657611665613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b61169057600080fd5b6001600460008484815181106116a9576116a8613098565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061170d906130c7565b9150506114d8565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183890613553565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a7906135e5565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161198e9190612af0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190613677565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613709565b60405180910390fd5b60008111611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab39061379b565b60405180910390fd5b6000611ac6611126565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b345750611b04611126565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561212357600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bdd5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611be657600080fd5b611c226064611c14600a54600d5411611c0157600754611c05565b6009545b8561244490919063ffffffff16565b6124be90919063ffffffff16565b9050600660009054906101000a900460ff1615611db157601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611db05743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6290613853565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e5c5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611eb25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6d57600e54821115611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef3906138bf565b60405180910390fd5b600f5482611f0985610d5f565b611f1391906138df565b1115611f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4b9061395f565b60405180910390fd5b600d6000815480929190611f67906130c7565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561203a576120376064612029600b54600d54116120165760085461201a565b6009545b8561244490919063ffffffff16565b6124be90919063ffffffff16565b90505b600061204530610d5f565b9050601360159054906101000a900460ff161580156120b15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120c95750601360169054906101000a900460ff165b80156120d6575060105481115b80156120e55750600c54600d54115b1561212157612107612102846120fd84601154612837565b612837565b612552565b6000479050600081111561211f5761211e476127cb565b5b505b505b61217582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061221c6121ce828461250890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285090919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122c1848661250890919063ffffffff16565b6040516122ce9190612af0565b60405180910390a360008111156123da5761233181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285090919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123d19190612af0565b60405180910390a35b50505050565b6000838311158290612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f91906129a1565b60405180910390fd5b5060008385612437919061397f565b9050809150509392505050565b600080830361245657600090506124b8565b600082846124649190612fea565b905082848261247391906139e2565b146124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90613a85565b60405180910390fd5b809150505b92915050565b600061250083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128ae565b905092915050565b600061254a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123e0565b905092915050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561258a57612589612b9a565b5b6040519080825280602002602001820160405280156125b85781602001602082028036833780820191505090505b50905030816000815181106125d0576125cf613098565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269b9190613aba565b816001815181106126af576126ae613098565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061271630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117d2565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161277a959493929190613ba5565b600060405180830381600087803b15801561279457600080fd5b505af11580156127a8573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612833573d6000803e3d6000fd5b5050565b60008183116128465782612848565b815b905092915050565b600080828461285f91906138df565b9050838110156128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613c4b565b60405180910390fd5b8091505092915050565b600080831182906128f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ec91906129a1565b60405180910390fd5b506000838561290491906139e2565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561294b578082015181840152602081019050612930565b60008484015250505050565b6000601f19601f8301169050919050565b600061297382612911565b61297d818561291c565b935061298d81856020860161292d565b61299681612957565b840191505092915050565b600060208201905081810360008301526129bb8184612968565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a02826129d7565b9050919050565b612a12816129f7565b8114612a1d57600080fd5b50565b600081359050612a2f81612a09565b92915050565b6000819050919050565b612a4881612a35565b8114612a5357600080fd5b50565b600081359050612a6581612a3f565b92915050565b60008060408385031215612a8257612a816129cd565b5b6000612a9085828601612a20565b9250506020612aa185828601612a56565b9150509250929050565b60008115159050919050565b612ac081612aab565b82525050565b6000602082019050612adb6000830184612ab7565b92915050565b612aea81612a35565b82525050565b6000602082019050612b056000830184612ae1565b92915050565b600080600060608486031215612b2457612b236129cd565b5b6000612b3286828701612a20565b9350506020612b4386828701612a20565b9250506040612b5486828701612a56565b9150509250925092565b600060ff82169050919050565b612b7481612b5e565b82525050565b6000602082019050612b8f6000830184612b6b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bd282612957565b810181811067ffffffffffffffff82111715612bf157612bf0612b9a565b5b80604052505050565b6000612c046129c3565b9050612c108282612bc9565b919050565b600067ffffffffffffffff821115612c3057612c2f612b9a565b5b602082029050602081019050919050565b600080fd5b6000612c59612c5484612c15565b612bfa565b90508083825260208201905060208402830185811115612c7c57612c7b612c41565b5b835b81811015612ca55780612c918882612a20565b845260208401935050602081019050612c7e565b5050509392505050565b600082601f830112612cc457612cc3612b95565b5b8135612cd4848260208601612c46565b91505092915050565b600060208284031215612cf357612cf26129cd565b5b600082013567ffffffffffffffff811115612d1157612d106129d2565b5b612d1d84828501612caf565b91505092915050565b600080600060608486031215612d3f57612d3e6129cd565b5b6000612d4d86828701612a56565b9350506020612d5e86828701612a56565b9250506040612d6f86828701612a56565b9150509250925092565b600060208284031215612d8f57612d8e6129cd565b5b6000612d9d84828501612a20565b91505092915050565b600060208284031215612dbc57612dbb6129cd565b5b6000612dca84828501612a56565b91505092915050565b612ddc816129f7565b82525050565b6000602082019050612df76000830184612dd3565b92915050565b60008060408385031215612e1457612e136129cd565b5b6000612e2285828601612a20565b9250506020612e3385828601612a20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612ec357808604811115612e9f57612e9e612e3d565b5b6001851615612eae5780820291505b8081029050612ebc85612e6c565b9450612e83565b94509492505050565b600082612edc5760019050612f98565b81612eea5760009050612f98565b8160018114612f005760028114612f0a57612f39565b6001915050612f98565b60ff841115612f1c57612f1b612e3d565b5b8360020a915084821115612f3357612f32612e3d565b5b50612f98565b5060208310610133831016604e8410600b8410161715612f6e5782820a905083811115612f6957612f68612e3d565b5b612f98565b612f7b8484846001612e79565b92509050818404811115612f9257612f91612e3d565b5b81810290505b9392505050565b6000612faa82612a35565b9150612fb583612b5e565b9250612fe27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ecc565b905092915050565b6000612ff582612a35565b915061300083612a35565b925082820261300e81612a35565b9150828204841483151761302557613024612e3d565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061306260208361291c565b915061306d8261302c565b602082019050919050565b6000602082019050818103600083015261309181613055565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130d282612a35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361310457613103612e3d565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061314560178361291c565b91506131508261310f565b602082019050919050565b6000602082019050818103600083015261317481613138565b9050919050565b6000819050919050565b6000819050919050565b60006131aa6131a56131a08461317b565b613185565b612a35565b9050919050565b6131ba8161318f565b82525050565b600060c0820190506131d56000830189612dd3565b6131e26020830188612ae1565b6131ef60408301876131b1565b6131fc60608301866131b1565b6132096080830185612dd3565b61321660a0830184612ae1565b979650505050505050565b60008151905061323081612a3f565b92915050565b60008060006060848603121561324f5761324e6129cd565b5b600061325d86828701613221565b935050602061326e86828701613221565b925050604061327f86828701613221565b9150509250925092565b600060408201905061329e6000830185612dd3565b6132ab6020830184612ae1565b9392505050565b6132bb81612aab565b81146132c657600080fd5b50565b6000815190506132d8816132b2565b92915050565b6000602082840312156132f4576132f36129cd565b5b6000613302848285016132c9565b91505092915050565b7f4275726e20616d6f756e74206578636565647320746f6b656e2062616c616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061336760218361291c565b91506133728261330b565b604082019050919050565b600060208201905081810360008301526133968161335a565b9050919050565b7f4e6f20746f6b656e7320746f2073776170000000000000000000000000000000600082015250565b60006133d360118361291c565b91506133de8261339d565b602082019050919050565b60006020820190508181036000830152613402816133c6565b9050919050565b7f4e6f20657468657220746f2073656e6400000000000000000000000000000000600082015250565b600061343f60108361291c565b915061344a82613409565b602082019050919050565b6000602082019050818103600083015261346e81613432565b9050919050565b7f4e6f20746f6b656e7320746f2073656e64000000000000000000000000000000600082015250565b60006134ab60118361291c565b91506134b682613475565b602082019050919050565b600060208201905081810360008301526134da8161349e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061353d60248361291c565b9150613548826134e1565b604082019050919050565b6000602082019050818103600083015261356c81613530565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135cf60228361291c565b91506135da82613573565b604082019050919050565b600060208201905081810360008301526135fe816135c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061366160258361291c565b915061366c82613605565b604082019050919050565b6000602082019050818103600083015261369081613654565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136f360238361291c565b91506136fe82613697565b604082019050919050565b60006020820190508181036000830152613722816136e6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061378560298361291c565b915061379082613729565b604082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061383d60498361291c565b9150613848826137bb565b606082019050919050565b6000602082019050818103600083015261386c81613830565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006138a960198361291c565b91506138b482613873565b602082019050919050565b600060208201905081810360008301526138d88161389c565b9050919050565b60006138ea82612a35565b91506138f583612a35565b925082820190508082111561390d5761390c612e3d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613949601a8361291c565b915061395482613913565b602082019050919050565b600060208201905081810360008301526139788161393c565b9050919050565b600061398a82612a35565b915061399583612a35565b92508282039050818111156139ad576139ac612e3d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139ed82612a35565b91506139f883612a35565b925082613a0857613a076139b3565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a6f60218361291c565b9150613a7a82613a13565b604082019050919050565b60006020820190508181036000830152613a9e81613a62565b9050919050565b600081519050613ab481612a09565b92915050565b600060208284031215613ad057613acf6129cd565b5b6000613ade84828501613aa5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1c816129f7565b82525050565b6000613b2e8383613b13565b60208301905092915050565b6000602082019050919050565b6000613b5282613ae7565b613b5c8185613af2565b9350613b6783613b03565b8060005b83811015613b98578151613b7f8882613b22565b9750613b8a83613b3a565b925050600181019050613b6b565b5085935050505092915050565b600060a082019050613bba6000830188612ae1565b613bc760208301876131b1565b8181036040830152613bd98186613b47565b9050613be86060830185612dd3565b613bf56080830184612ae1565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c35601b8361291c565b9150613c4082613bff565b602082019050919050565b60006020820190508181036000830152613c6481613c28565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122057ee5aee4dd1f030d12a2745990524cc21f35256506fd3590fa232d601ce7ab564736f6c63430008110033

Deployed Bytecode Sourcemap

4092:9925:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6168:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7001:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5255:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6445:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7170:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6354:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11574:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11835:642;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11744:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13287:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6548:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3173:148;;;;;;;;;;;;;:::i;:::-;;10890:196;;;;;;;;;;;;;:::i;:::-;;12851:428;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5069:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2959:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5131:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6259:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13626:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6675:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5193:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4482:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12489:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11194:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6850:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12706:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6168:83;6205:13;6238:5;;;;;;;;;;;;;;;;;6231:12;;6168:83;:::o;7001:161::-;7076:4;7093:39;7102:12;:10;:12::i;:::-;7116:7;7125:6;7093:8;:39::i;:::-;7150:4;7143:11;;7001:161;;;;:::o;5255:50::-;;;;:::o;6445:95::-;6498:7;4884:1;4939:2;:13;;;;:::i;:::-;4927:9;:25;;;;:::i;:::-;6518:14;;6445:95;:::o;7170:313::-;7268:4;7285:36;7295:6;7303:9;7314:6;7285:9;:36::i;:::-;7332:121;7341:6;7349:12;:10;:12::i;:::-;7363:89;7401:6;7363:89;;;;;;;;;;;;;;;;;:11;:19;7375:6;7363:19;;;;;;;;;;;;;;;:33;7383:12;:10;:12::i;:::-;7363:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7332:8;:121::i;:::-;7471:4;7464:11;;7170:313;;;;;:::o;6354:83::-;6395:5;4884:1;6413:16;;6354:83;:::o;11574:162::-;3096:12;:10;:12::i;:::-;3086:22;;:6;;;;;;;;;;:22;;;3078:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11647:6:::1;11642:87;11663:6;:13;11659:1;:17;11642:87;;;11714:5;11696:4;:15;11701:6;11708:1;11701:9;;;;;;;;:::i;:::-;;;;;;;;11696:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11678:3;;;;;:::i;:::-;;;;11642:87;;;;11574:162:::0;:::o;11835:642::-;3096:12;:10;:12::i;:::-;3086:22;;:6;;;;;;;;;;:22;;;3078:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11959:11:::1;;;;;;;;;;;11958:12;11950:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12008:58;12025:4;12040:15;;;;;;;;;;;4884:1;4939:2;:13;;;;:::i;:::-;4927:9;:25;;;;:::i;:::-;12008:8;:58::i;:::-;12077:15;;;;;;;;;;;:31;;;12116:21;12147:4;12153:41;12190:3;12153:32;12182:2;12153:24;12171:4;12153:9;:24::i;:::-;:28;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;12195:1;12197::::0;12199:7:::1;:5;:7::i;:::-;12207:15;12077:146;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12248:4;12234:11;;:18;;;;;;;;;;;;;;;;;;12277:4;12263:11;;:18;;;;;;;;;;;;;;;;;;12307:11;12292:14;:26;;;;12345:12;12329:15;:28;;;;12378:9;12368;:19;;;;12405:13;;;;;;;;;;;12398:29;;;12436:15;;;;;;;;;;;12454:14;12398:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11835:642:::0;;;:::o;11744:83::-;11791:4;11812;:7;11817:1;11812:7;;;;;;;;;;;;;;;;;;;;;;;;;11805:14;;11744:83;;;:::o;13287:331::-;13347:20;13370:24;13388:4;13370:9;:24::i;:::-;13347:47;;13429:12;13415:10;:26;;13407:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13517:28;13534:10;13517:12;:16;;:28;;;;:::i;:::-;13490:9;:24;13508:4;13490:24;;;;;;;;;;;;;;;:55;;;;13595:1;13563:47;;13580:4;13563:47;;;13599:10;13563:47;;;;;;:::i;:::-;;;;;;;;13336:282;13287:331;:::o;6548:119::-;6614:7;6641:9;:18;6651:7;6641:18;;;;;;;;;;;;;;;;6634:25;;6548:119;;;:::o;3173:148::-;3096:12;:10;:12::i;:::-;3086:22;;:6;;;;;;;;;;:22;;;3078:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3280:1:::1;3243:40;;3264:6;::::0;::::1;;;;;;;;3243:40;;;;;;;;;;;;3311:1;3294:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3173:148::o:0;10890:196::-;3096:12;:10;:12::i;:::-;3086:22;;:6;;;;;;;;;;:22;;;3078:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4884:1:::1;4939:2;:13;;;;:::i;:::-;4927:9;:25;;;;:::i;:::-;10943:12;:22;;;;4884:1;4939:2;:13;;;;:::i;:::-;4927:9;:25;;;;:::i;:::-;10976:14;:22;;;;11030:5;11009:20;;:26;;;;;;;;;;;;;;;;;;11051:27;4884:1;4939:2;:13;;;;:::i;:::-;4927:9;:25;;;;:::i;:::-;11051:27;;;;;;:::i;:::-;;;;;;;;10890:196::o:0;12851:428::-;12912:20;12933:24;12951:4;12933:9;:24::i;:::-;12912:45;;12970:18;12991:36;13023:3;12991:27;13008:9;12991:12;:16;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;12970:57;;13059:1;13046:10;:14;13038:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13093:28;13110:10;13093:16;:28::i;:::-;13142:18;13161:21;13142:40;;13214:1;13201:10;:14;13193:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;13247:24;13260:10;13247:12;:24::i;:::-;12901:378;;;12851:428;:::o;5069:55::-;;;;:::o;2959:79::-;2997:7;3024:6;;;;;;;;;;;3017:13;;2959:79;:::o;5131:55::-;;;;:::o;6259:87::-;6298:13;6331:7;;;;;;;;;;;;;;;;;6324:14;;6259:87;:::o;13626:386::-;3096:12;:10;:12::i;:::-;3086:22;;:6;;;;;;;;;;:22;;;3078:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13700:20:::1;13723:24;13741:4;13723:9;:24::i;:::-;13700:47;;13768:18;13789:36;13821:3;13789:27;13806:9;13789:12;:16;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;13768:57;;13857:1;13844:10;:14;13836:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13891:48;13909:4;13916:10;;;;;;;;;;;13928;13891:9;:48::i;:::-;13981:10;;;;;;;;;;;13957:47;;13974:4;13957:47;;;13993:10;13957:47;;;;;;:::i;:::-;;;;;;;;13689:323;;13626:386:::0;:::o;6675:167::-;6753:4;6770:42;6780:12;:10;:12::i;:::-;6794:9;6805:6;6770:9;:42::i;:::-;6830:4;6823:11;;6675:167;;;;:::o;5193:55::-;;;;:::o;4482:39::-;;;;;;;;;;;;;:::o;12489:209::-;3096:12;:10;:12::i;:::-;3086:22;;:6;;;;;;;;;;:22;;;3078:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12613:10:::1;12598:14;:25;;;;12648:11;12632:15;:27;;;;12678:12;12668:9;:22;;;;12489:209:::0;;;:::o;11194:372::-;3096:12;:10;:12::i;:::-;3086:22;;:6;;;;;;;;;;:22;;;3078:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11268:6:::1;11263:296;11284:5;:12;11280:1;:16;11263:296;;;11338:13;;;;;;;;;;;11326:25;;:5;11332:1;11326:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:87;;;;;11397:15;;;;;;;;;;;11377:36;;:5;11383:1;11377:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;11326:87;:137;;;;;11458:4;11438:25;;:5;11444:1;11438:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;11326:137;:184;;;;;11500:10;;;;;;;;;;;11488:22;;:5;11494:1;11488:8;;;;;;;;:::i;:::-;;;;;;;;:22;;;;11326:184;11318:193;;;::::0;::::1;;11543:4;11526;:14;11531:5;11537:1;11531:8;;;;;;;;:::i;:::-;;;;;;;;11526:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11298:3;;;;;:::i;:::-;;;;11263:296;;;;11194:372:::0;:::o;6850:143::-;6931:7;6958:11;:18;6970:5;6958:18;;;;;;;;;;;;;;;:27;6977:7;6958:27;;;;;;;;;;;;;;;;6951:34;;6850:143;;;;:::o;12706:100::-;12758:7;12785:13;;;;;;;;;;;12778:20;;12706:100;:::o;714:98::-;767:7;794:10;787:17;;714:98;:::o;7491:335::-;7601:1;7584:19;;:5;:19;;;7576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7682:1;7663:21;;:7;:21;;;7655:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7764:6;7734:11;:18;7746:5;7734:18;;;;;;;;;;;;;;;:27;7753:7;7734:27;;;;;;;;;;;;;;;:36;;;;7802:7;7786:32;;7795:5;7786:32;;;7811:6;7786:32;;;;;;:::i;:::-;;;;;;;;7491:335;;;:::o;7834:2449::-;7938:1;7922:18;;:4;:18;;;7914:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8015:1;8001:16;;:2;:16;;;7993:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8085:1;8076:6;:10;8068:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8143:17;8195:7;:5;:7::i;:::-;8187:15;;:4;:15;;;;:32;;;;;8212:7;:5;:7::i;:::-;8206:13;;:2;:13;;;;8187:32;8183:1744;;;8245:4;:10;8250:4;8245:10;;;;;;;;;;;;;;;;;;;;;;;;;8244:11;:24;;;;;8260:4;:8;8265:2;8260:8;;;;;;;;;;;;;;;;;;;;;;;;;8259:9;8244:24;8236:33;;;;;;8296:73;8365:3;8296:64;8318:15;;8308:9;;:25;8307:52;;8345:14;;8307:52;;;8335:9;;8307:52;8296:6;:10;;:64;;;;:::i;:::-;:68;;:73;;;;:::i;:::-;8284:85;;8390:20;;;;;;;;;;;8386:508;;;8451:15;;;;;;;;;;;8437:30;;:2;:30;;;;:62;;;;;8485:13;;;;;;;;;;;8471:28;;:2;:28;;;;8437:62;8433:444;;;8635:12;8562:28;:39;8591:9;8562:39;;;;;;;;;;;;;;;;:85;8526:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8843:12;8801:28;:39;8830:9;8801:39;;;;;;;;;;;;;;;:54;;;;8433:444;8386:508;8922:13;;;;;;;;;;;8914:21;;:4;:21;;;:55;;;;;8953:15;;;;;;;;;;;8939:30;;:2;:30;;;;8914:55;:83;;;;;8975:18;:22;8994:2;8975:22;;;;;;;;;;;;;;;;;;;;;;;;;8973:24;8914:83;8910:313;;;9037:12;;9027:6;:22;;9019:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9132:14;;9122:6;9106:13;9116:2;9106:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9098:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9196:9;;:11;;;;;;;;;:::i;:::-;;;;;;8910:313;9248:13;;;;;;;;;;;9242:19;;:2;:19;;;:43;;;;;9280:4;9265:20;;:4;:20;;;;9242:43;9239:170;;;9318:75;9389:3;9318:66;9340:16;;9330:9;;:26;9329:54;;9368:15;;9329:54;;;9358:9;;9329:54;9318:6;:10;;:66;;;;:::i;:::-;:70;;:75;;;;:::i;:::-;9306:87;;9239:170;9425:28;9456:24;9474:4;9456:9;:24::i;:::-;9425:55;;9500:6;;;;;;;;;;;9499:7;:32;;;;;9518:13;;;;;;;;;;;9510:21;;:2;:21;;;9499:32;:47;;;;;9535:11;;;;;;;;;;;9499:47;:89;;;;;9571:17;;9550:20;:38;9499:89;:121;;;;;9602:18;;9592:9;;:28;9499:121;9495:421;;;9641:67;9658:49;9662:6;9669:37;9673:20;9694:11;;9669:3;:37::i;:::-;9658:3;:49::i;:::-;9641:16;:67::i;:::-;9727:26;9756:21;9727:50;;9820:1;9799:18;:22;9796:105;;;9846:35;9859:21;9846:12;:35::i;:::-;9796:105;9622:294;9495:421;8221:1706;8183:1744;9955:27;9975:6;9955:9;:15;9965:4;9955:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9939:9;:15;9949:4;9939:15;;;;;;;;;;;;;;;:43;;;;10007:40;10025:21;10036:9;10025:6;:10;;:21;;;;:::i;:::-;10007:9;:13;10017:2;10007:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9993:9;:13;10003:2;9993:13;;;;;;;;;;;;;;;:54;;;;10078:2;10063:41;;10072:4;10063:41;;;10082:21;10093:9;10082:6;:10;;:21;;;;:::i;:::-;10063:41;;;;;;:::i;:::-;;;;;;;;10128:1;10118:9;:11;10115:161;;;10168:39;10197:9;10168;:24;10186:4;10168:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10143:9;:24;10161:4;10143:24;;;;;;;;;;;;;;;:64;;;;10248:4;10225:39;;10234:4;10225:39;;;10254:9;10225:39;;;;;;:::i;:::-;;;;;;;;10115:161;7903:2380;7834:2449;;;:::o;1851:190::-;1937:7;1970:1;1965;:6;;1973:12;1957:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1997:9;2013:1;2009;:5;;;;:::i;:::-;1997:17;;2032:1;2025:8;;;1851:190;;;;;:::o;2049:246::-;2107:7;2136:1;2131;:6;2127:47;;2161:1;2154:8;;;;2127:47;2184:9;2200:1;2196;:5;;;;:::i;:::-;2184:17;;2229:1;2224;2220;:5;;;;:::i;:::-;:10;2212:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2286:1;2279:8;;;2049:246;;;;;:::o;2303:132::-;2361:7;2388:39;2392:1;2395;2388:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2381:46;;2303:132;;;;:::o;1707:136::-;1765:7;1792:43;1796:1;1799;1792:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1785:50;;1707:136;;;;:::o;10399:483::-;5663:4;5654:6;;:13;;;;;;;;;;;;;;;;;;10477:21:::1;10515:1;10501:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10477:40;;10546:4;10528;10533:1;10528:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10572:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10562:4;10567:1;10562:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10605:62;10622:4;10637:15;;;;;;;;;;;10655:11;10605:8;:62::i;:::-;10678:15;;;;;;;;;;;:66;;;10759:11;10785:1;10801:4;10828;10848:15;10678:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10466:416;5699:5:::0;5690:6;;:14;;;;;;;;;;;;;;;;;;10399:483;:::o;11094:92::-;11151:10;;;;;;;;;;;:19;;:27;11171:6;11151:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11094:92;:::o;10293:98::-;10350:7;10377:1;10375;:3;10374:9;;10382:1;10374:9;;;10380:1;10374:9;10367:16;;10293:98;;;;:::o;1520:179::-;1578:7;1598:9;1614:1;1610;:5;;;;:::i;:::-;1598:17;;1639:1;1634;:6;;1626:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1690:1;1683:8;;;1520:179;;;;:::o;2443:189::-;2529:7;2561:1;2557;:5;2564:12;2549:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2588:9;2604:1;2600;:5;;;;:::i;:::-;2588:17;;2623:1;2616:8;;;2443:189;;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:619::-;7772:6;7780;7788;7837:2;7825:9;7816:7;7812:23;7808:32;7805:119;;;7843:79;;:::i;:::-;7805:119;7963:1;7988:53;8033:7;8024:6;8013:9;8009:22;7988:53;:::i;:::-;7978:63;;7934:117;8090:2;8116:53;8161:7;8152:6;8141:9;8137:22;8116:53;:::i;:::-;8106:63;;8061:118;8218:2;8244:53;8289:7;8280:6;8269:9;8265:22;8244:53;:::i;:::-;8234:63;;8189:118;7695:619;;;;;:::o;8320:329::-;8379:6;8428:2;8416:9;8407:7;8403:23;8399:32;8396:119;;;8434:79;;:::i;:::-;8396:119;8554:1;8579:53;8624:7;8615:6;8604:9;8600:22;8579:53;:::i;:::-;8569:63;;8525:117;8320:329;;;;:::o;8655:::-;8714:6;8763:2;8751:9;8742:7;8738:23;8734:32;8731:119;;;8769:79;;:::i;:::-;8731:119;8889:1;8914:53;8959:7;8950:6;8939:9;8935:22;8914:53;:::i;:::-;8904:63;;8860:117;8655:329;;;;:::o;8990:118::-;9077:24;9095:5;9077:24;:::i;:::-;9072:3;9065:37;8990:118;;:::o;9114:222::-;9207:4;9245:2;9234:9;9230:18;9222:26;;9258:71;9326:1;9315:9;9311:17;9302:6;9258:71;:::i;:::-;9114:222;;;;:::o;9342:474::-;9410:6;9418;9467:2;9455:9;9446:7;9442:23;9438:32;9435:119;;;9473:79;;:::i;:::-;9435:119;9593:1;9618:53;9663:7;9654:6;9643:9;9639:22;9618:53;:::i;:::-;9608:63;;9564:117;9720:2;9746:53;9791:7;9782:6;9771:9;9767:22;9746:53;:::i;:::-;9736:63;;9691:118;9342:474;;;;;:::o;9822:180::-;9870:77;9867:1;9860:88;9967:4;9964:1;9957:15;9991:4;9988:1;9981:15;10008:102;10050:8;10097:5;10094:1;10090:13;10069:34;;10008:102;;;:::o;10116:848::-;10177:5;10184:4;10208:6;10199:15;;10232:5;10223:14;;10246:712;10267:1;10257:8;10254:15;10246:712;;;10362:4;10357:3;10353:14;10347:4;10344:24;10341:50;;;10371:18;;:::i;:::-;10341:50;10421:1;10411:8;10407:16;10404:451;;;10836:4;10829:5;10825:16;10816:25;;10404:451;10886:4;10880;10876:15;10868:23;;10916:32;10939:8;10916:32;:::i;:::-;10904:44;;10246:712;;;10116:848;;;;;;;:::o;10970:1073::-;11024:5;11215:8;11205:40;;11236:1;11227:10;;11238:5;;11205:40;11264:4;11254:36;;11281:1;11272:10;;11283:5;;11254:36;11350:4;11398:1;11393:27;;;;11434:1;11429:191;;;;11343:277;;11393:27;11411:1;11402:10;;11413:5;;;11429:191;11474:3;11464:8;11461:17;11458:43;;;11481:18;;:::i;:::-;11458:43;11530:8;11527:1;11523:16;11514:25;;11565:3;11558:5;11555:14;11552:40;;;11572:18;;:::i;:::-;11552:40;11605:5;;;11343:277;;11729:2;11719:8;11716:16;11710:3;11704:4;11701:13;11697:36;11679:2;11669:8;11666:16;11661:2;11655:4;11652:12;11648:35;11632:111;11629:246;;;11785:8;11779:4;11775:19;11766:28;;11820:3;11813:5;11810:14;11807:40;;;11827:18;;:::i;:::-;11807:40;11860:5;;11629:246;11900:42;11938:3;11928:8;11922:4;11919:1;11900:42;:::i;:::-;11885:57;;;;11974:4;11969:3;11965:14;11958:5;11955:25;11952:51;;;11983:18;;:::i;:::-;11952:51;12032:4;12025:5;12021:16;12012:25;;10970:1073;;;;;;:::o;12049:281::-;12107:5;12131:23;12149:4;12131:23;:::i;:::-;12123:31;;12175:25;12191:8;12175:25;:::i;:::-;12163:37;;12219:104;12256:66;12246:8;12240:4;12219:104;:::i;:::-;12210:113;;12049:281;;;;:::o;12336:410::-;12376:7;12399:20;12417:1;12399:20;:::i;:::-;12394:25;;12433:20;12451:1;12433:20;:::i;:::-;12428:25;;12488:1;12485;12481:9;12510:30;12528:11;12510:30;:::i;:::-;12499:41;;12689:1;12680:7;12676:15;12673:1;12670:22;12650:1;12643:9;12623:83;12600:139;;12719:18;;:::i;:::-;12600:139;12384:362;12336:410;;;;:::o;12752:182::-;12892:34;12888:1;12880:6;12876:14;12869:58;12752:182;:::o;12940:366::-;13082:3;13103:67;13167:2;13162:3;13103:67;:::i;:::-;13096:74;;13179:93;13268:3;13179:93;:::i;:::-;13297:2;13292:3;13288:12;13281:19;;12940:366;;;:::o;13312:419::-;13478:4;13516:2;13505:9;13501:18;13493:26;;13565:9;13559:4;13555:20;13551:1;13540:9;13536:17;13529:47;13593:131;13719:4;13593:131;:::i;:::-;13585:139;;13312:419;;;:::o;13737:180::-;13785:77;13782:1;13775:88;13882:4;13879:1;13872:15;13906:4;13903:1;13896:15;13923:233;13962:3;13985:24;14003:5;13985:24;:::i;:::-;13976:33;;14031:66;14024:5;14021:77;14018:103;;14101:18;;:::i;:::-;14018:103;14148:1;14141:5;14137:13;14130:20;;13923:233;;;:::o;14162:173::-;14302:25;14298:1;14290:6;14286:14;14279:49;14162:173;:::o;14341:366::-;14483:3;14504:67;14568:2;14563:3;14504:67;:::i;:::-;14497:74;;14580:93;14669:3;14580:93;:::i;:::-;14698:2;14693:3;14689:12;14682:19;;14341:366;;;:::o;14713:419::-;14879:4;14917:2;14906:9;14902:18;14894:26;;14966:9;14960:4;14956:20;14952:1;14941:9;14937:17;14930:47;14994:131;15120:4;14994:131;:::i;:::-;14986:139;;14713:419;;;:::o;15138:85::-;15183:7;15212:5;15201:16;;15138:85;;;:::o;15229:60::-;15257:3;15278:5;15271:12;;15229:60;;;:::o;15295:158::-;15353:9;15386:61;15404:42;15413:32;15439:5;15413:32;:::i;:::-;15404:42;:::i;:::-;15386:61;:::i;:::-;15373:74;;15295:158;;;:::o;15459:147::-;15554:45;15593:5;15554:45;:::i;:::-;15549:3;15542:58;15459:147;;:::o;15612:807::-;15861:4;15899:3;15888:9;15884:19;15876:27;;15913:71;15981:1;15970:9;15966:17;15957:6;15913:71;:::i;:::-;15994:72;16062:2;16051:9;16047:18;16038:6;15994:72;:::i;:::-;16076:80;16152:2;16141:9;16137:18;16128:6;16076:80;:::i;:::-;16166;16242:2;16231:9;16227:18;16218:6;16166:80;:::i;:::-;16256:73;16324:3;16313:9;16309:19;16300:6;16256:73;:::i;:::-;16339;16407:3;16396:9;16392:19;16383:6;16339:73;:::i;:::-;15612:807;;;;;;;;;:::o;16425:143::-;16482:5;16513:6;16507:13;16498:22;;16529:33;16556:5;16529:33;:::i;:::-;16425:143;;;;:::o;16574:663::-;16662:6;16670;16678;16727:2;16715:9;16706:7;16702:23;16698:32;16695:119;;;16733:79;;:::i;:::-;16695:119;16853:1;16878:64;16934:7;16925:6;16914:9;16910:22;16878:64;:::i;:::-;16868:74;;16824:128;16991:2;17017:64;17073:7;17064:6;17053:9;17049:22;17017:64;:::i;:::-;17007:74;;16962:129;17130:2;17156:64;17212:7;17203:6;17192:9;17188:22;17156:64;:::i;:::-;17146:74;;17101:129;16574:663;;;;;:::o;17243:332::-;17364:4;17402:2;17391:9;17387:18;17379:26;;17415:71;17483:1;17472:9;17468:17;17459:6;17415:71;:::i;:::-;17496:72;17564:2;17553:9;17549:18;17540:6;17496:72;:::i;:::-;17243:332;;;;;:::o;17581:116::-;17651:21;17666:5;17651:21;:::i;:::-;17644:5;17641:32;17631:60;;17687:1;17684;17677:12;17631:60;17581:116;:::o;17703:137::-;17757:5;17788:6;17782:13;17773:22;;17804:30;17828:5;17804:30;:::i;:::-;17703:137;;;;:::o;17846:345::-;17913:6;17962:2;17950:9;17941:7;17937:23;17933:32;17930:119;;;17968:79;;:::i;:::-;17930:119;18088:1;18113:61;18166:7;18157:6;18146:9;18142:22;18113:61;:::i;:::-;18103:71;;18059:125;17846:345;;;;:::o;18197:220::-;18337:34;18333:1;18325:6;18321:14;18314:58;18406:3;18401:2;18393:6;18389:15;18382:28;18197:220;:::o;18423:366::-;18565:3;18586:67;18650:2;18645:3;18586:67;:::i;:::-;18579:74;;18662:93;18751:3;18662:93;:::i;:::-;18780:2;18775:3;18771:12;18764:19;;18423:366;;;:::o;18795:419::-;18961:4;18999:2;18988:9;18984:18;18976:26;;19048:9;19042:4;19038:20;19034:1;19023:9;19019:17;19012:47;19076:131;19202:4;19076:131;:::i;:::-;19068:139;;18795:419;;;:::o;19220:167::-;19360:19;19356:1;19348:6;19344:14;19337:43;19220:167;:::o;19393:366::-;19535:3;19556:67;19620:2;19615:3;19556:67;:::i;:::-;19549:74;;19632:93;19721:3;19632:93;:::i;:::-;19750:2;19745:3;19741:12;19734:19;;19393:366;;;:::o;19765:419::-;19931:4;19969:2;19958:9;19954:18;19946:26;;20018:9;20012:4;20008:20;20004:1;19993:9;19989:17;19982:47;20046:131;20172:4;20046:131;:::i;:::-;20038:139;;19765:419;;;:::o;20190:166::-;20330:18;20326:1;20318:6;20314:14;20307:42;20190:166;:::o;20362:366::-;20504:3;20525:67;20589:2;20584:3;20525:67;:::i;:::-;20518:74;;20601:93;20690:3;20601:93;:::i;:::-;20719:2;20714:3;20710:12;20703:19;;20362:366;;;:::o;20734:419::-;20900:4;20938:2;20927:9;20923:18;20915:26;;20987:9;20981:4;20977:20;20973:1;20962:9;20958:17;20951:47;21015:131;21141:4;21015:131;:::i;:::-;21007:139;;20734:419;;;:::o;21159:167::-;21299:19;21295:1;21287:6;21283:14;21276:43;21159:167;:::o;21332:366::-;21474:3;21495:67;21559:2;21554:3;21495:67;:::i;:::-;21488:74;;21571:93;21660:3;21571:93;:::i;:::-;21689:2;21684:3;21680:12;21673:19;;21332:366;;;:::o;21704:419::-;21870:4;21908:2;21897:9;21893:18;21885:26;;21957:9;21951:4;21947:20;21943:1;21932:9;21928:17;21921:47;21985:131;22111:4;21985:131;:::i;:::-;21977:139;;21704:419;;;:::o;22129:223::-;22269:34;22265:1;22257:6;22253:14;22246:58;22338:6;22333:2;22325:6;22321:15;22314:31;22129:223;:::o;22358:366::-;22500:3;22521:67;22585:2;22580:3;22521:67;:::i;:::-;22514:74;;22597:93;22686:3;22597:93;:::i;:::-;22715:2;22710:3;22706:12;22699:19;;22358:366;;;:::o;22730:419::-;22896:4;22934:2;22923:9;22919:18;22911:26;;22983:9;22977:4;22973:20;22969:1;22958:9;22954:17;22947:47;23011:131;23137:4;23011:131;:::i;:::-;23003:139;;22730:419;;;:::o;23155:221::-;23295:34;23291:1;23283:6;23279:14;23272:58;23364:4;23359:2;23351:6;23347:15;23340:29;23155:221;:::o;23382:366::-;23524:3;23545:67;23609:2;23604:3;23545:67;:::i;:::-;23538:74;;23621:93;23710:3;23621:93;:::i;:::-;23739:2;23734:3;23730:12;23723:19;;23382:366;;;:::o;23754:419::-;23920:4;23958:2;23947:9;23943:18;23935:26;;24007:9;24001:4;23997:20;23993:1;23982:9;23978:17;23971:47;24035:131;24161:4;24035:131;:::i;:::-;24027:139;;23754:419;;;:::o;24179:224::-;24319:34;24315:1;24307:6;24303:14;24296:58;24388:7;24383:2;24375:6;24371:15;24364:32;24179:224;:::o;24409:366::-;24551:3;24572:67;24636:2;24631:3;24572:67;:::i;:::-;24565:74;;24648:93;24737:3;24648:93;:::i;:::-;24766:2;24761:3;24757:12;24750:19;;24409:366;;;:::o;24781:419::-;24947:4;24985:2;24974:9;24970:18;24962:26;;25034:9;25028:4;25024:20;25020:1;25009:9;25005:17;24998:47;25062:131;25188:4;25062:131;:::i;:::-;25054:139;;24781:419;;;:::o;25206:222::-;25346:34;25342:1;25334:6;25330:14;25323:58;25415:5;25410:2;25402:6;25398:15;25391:30;25206:222;:::o;25434:366::-;25576:3;25597:67;25661:2;25656:3;25597:67;:::i;:::-;25590:74;;25673:93;25762:3;25673:93;:::i;:::-;25791:2;25786:3;25782:12;25775:19;;25434:366;;;:::o;25806:419::-;25972:4;26010:2;25999:9;25995:18;25987:26;;26059:9;26053:4;26049:20;26045:1;26034:9;26030:17;26023:47;26087:131;26213:4;26087:131;:::i;:::-;26079:139;;25806:419;;;:::o;26231:228::-;26371:34;26367:1;26359:6;26355:14;26348:58;26440:11;26435:2;26427:6;26423:15;26416:36;26231:228;:::o;26465:366::-;26607:3;26628:67;26692:2;26687:3;26628:67;:::i;:::-;26621:74;;26704:93;26793:3;26704:93;:::i;:::-;26822:2;26817:3;26813:12;26806:19;;26465:366;;;:::o;26837:419::-;27003:4;27041:2;27030:9;27026:18;27018:26;;27090:9;27084:4;27080:20;27076:1;27065:9;27061:17;27054:47;27118:131;27244:4;27118:131;:::i;:::-;27110:139;;26837:419;;;:::o;27262:297::-;27402:34;27398:1;27390:6;27386:14;27379:58;27471:34;27466:2;27458:6;27454:15;27447:59;27540:11;27535:2;27527:6;27523:15;27516:36;27262:297;:::o;27565:366::-;27707:3;27728:67;27792:2;27787:3;27728:67;:::i;:::-;27721:74;;27804:93;27893:3;27804:93;:::i;:::-;27922:2;27917:3;27913:12;27906:19;;27565:366;;;:::o;27937:419::-;28103:4;28141:2;28130:9;28126:18;28118:26;;28190:9;28184:4;28180:20;28176:1;28165:9;28161:17;28154:47;28218:131;28344:4;28218:131;:::i;:::-;28210:139;;27937:419;;;:::o;28362:175::-;28502:27;28498:1;28490:6;28486:14;28479:51;28362:175;:::o;28543:366::-;28685:3;28706:67;28770:2;28765:3;28706:67;:::i;:::-;28699:74;;28782:93;28871:3;28782:93;:::i;:::-;28900:2;28895:3;28891:12;28884:19;;28543:366;;;:::o;28915:419::-;29081:4;29119:2;29108:9;29104:18;29096:26;;29168:9;29162:4;29158:20;29154:1;29143:9;29139:17;29132:47;29196:131;29322:4;29196:131;:::i;:::-;29188:139;;28915:419;;;:::o;29340:191::-;29380:3;29399:20;29417:1;29399:20;:::i;:::-;29394:25;;29433:20;29451:1;29433:20;:::i;:::-;29428:25;;29476:1;29473;29469:9;29462:16;;29497:3;29494:1;29491:10;29488:36;;;29504:18;;:::i;:::-;29488:36;29340:191;;;;:::o;29537:176::-;29677:28;29673:1;29665:6;29661:14;29654:52;29537:176;:::o;29719:366::-;29861:3;29882:67;29946:2;29941:3;29882:67;:::i;:::-;29875:74;;29958:93;30047:3;29958:93;:::i;:::-;30076:2;30071:3;30067:12;30060:19;;29719:366;;;:::o;30091:419::-;30257:4;30295:2;30284:9;30280:18;30272:26;;30344:9;30338:4;30334:20;30330:1;30319:9;30315:17;30308:47;30372:131;30498:4;30372:131;:::i;:::-;30364:139;;30091:419;;;:::o;30516:194::-;30556:4;30576:20;30594:1;30576:20;:::i;:::-;30571:25;;30610:20;30628:1;30610:20;:::i;:::-;30605:25;;30654:1;30651;30647:9;30639:17;;30678:1;30672:4;30669:11;30666:37;;;30683:18;;:::i;:::-;30666:37;30516:194;;;;:::o;30716:180::-;30764:77;30761:1;30754:88;30861:4;30858:1;30851:15;30885:4;30882:1;30875:15;30902:185;30942:1;30959:20;30977:1;30959:20;:::i;:::-;30954:25;;30993:20;31011:1;30993:20;:::i;:::-;30988:25;;31032:1;31022:35;;31037:18;;:::i;:::-;31022:35;31079:1;31076;31072:9;31067:14;;30902:185;;;;:::o;31093:220::-;31233:34;31229:1;31221:6;31217:14;31210:58;31302:3;31297:2;31289:6;31285:15;31278:28;31093:220;:::o;31319:366::-;31461:3;31482:67;31546:2;31541:3;31482:67;:::i;:::-;31475:74;;31558:93;31647:3;31558:93;:::i;:::-;31676:2;31671:3;31667:12;31660:19;;31319:366;;;:::o;31691:419::-;31857:4;31895:2;31884:9;31880:18;31872:26;;31944:9;31938:4;31934:20;31930:1;31919:9;31915:17;31908:47;31972:131;32098:4;31972:131;:::i;:::-;31964:139;;31691:419;;;:::o;32116:143::-;32173:5;32204:6;32198:13;32189:22;;32220:33;32247:5;32220:33;:::i;:::-;32116:143;;;;:::o;32265:351::-;32335:6;32384:2;32372:9;32363:7;32359:23;32355:32;32352:119;;;32390:79;;:::i;:::-;32352:119;32510:1;32535:64;32591:7;32582:6;32571:9;32567:22;32535:64;:::i;:::-;32525:74;;32481:128;32265:351;;;;:::o;32622:114::-;32689:6;32723:5;32717:12;32707:22;;32622:114;;;:::o;32742:184::-;32841:11;32875:6;32870:3;32863:19;32915:4;32910:3;32906:14;32891:29;;32742:184;;;;:::o;32932:132::-;32999:4;33022:3;33014:11;;33052:4;33047:3;33043:14;33035:22;;32932:132;;;:::o;33070:108::-;33147:24;33165:5;33147:24;:::i;:::-;33142:3;33135:37;33070:108;;:::o;33184:179::-;33253:10;33274:46;33316:3;33308:6;33274:46;:::i;:::-;33352:4;33347:3;33343:14;33329:28;;33184:179;;;;:::o;33369:113::-;33439:4;33471;33466:3;33462:14;33454:22;;33369:113;;;:::o;33518:732::-;33637:3;33666:54;33714:5;33666:54;:::i;:::-;33736:86;33815:6;33810:3;33736:86;:::i;:::-;33729:93;;33846:56;33896:5;33846:56;:::i;:::-;33925:7;33956:1;33941:284;33966:6;33963:1;33960:13;33941:284;;;34042:6;34036:13;34069:63;34128:3;34113:13;34069:63;:::i;:::-;34062:70;;34155:60;34208:6;34155:60;:::i;:::-;34145:70;;34001:224;33988:1;33985;33981:9;33976:14;;33941:284;;;33945:14;34241:3;34234:10;;33642:608;;;33518:732;;;;:::o;34256:831::-;34519:4;34557:3;34546:9;34542:19;34534:27;;34571:71;34639:1;34628:9;34624:17;34615:6;34571:71;:::i;:::-;34652:80;34728:2;34717:9;34713:18;34704:6;34652:80;:::i;:::-;34779:9;34773:4;34769:20;34764:2;34753:9;34749:18;34742:48;34807:108;34910:4;34901:6;34807:108;:::i;:::-;34799:116;;34925:72;34993:2;34982:9;34978:18;34969:6;34925:72;:::i;:::-;35007:73;35075:3;35064:9;35060:19;35051:6;35007:73;:::i;:::-;34256:831;;;;;;;;:::o;35093:177::-;35233:29;35229:1;35221:6;35217:14;35210:53;35093:177;:::o;35276:366::-;35418:3;35439:67;35503:2;35498:3;35439:67;:::i;:::-;35432:74;;35515:93;35604:3;35515:93;:::i;:::-;35633:2;35628:3;35624:12;35617:19;;35276:366;;;:::o;35648:419::-;35814:4;35852:2;35841:9;35837:18;35829:26;;35901:9;35895:4;35891:20;35887:1;35876:9;35872:17;35865:47;35929:131;36055:4;35929:131;:::i;:::-;35921:139;;35648:419;;;:::o

Swarm Source

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